// Copyright 2021 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package errno
import (
"sync"
"time"
)
// The error summary is protected by a mutex for simplicity.
// It is not expected to be hot unless there are concurrent workloads
// that are generating high error/warning counts, in which case
// the system probably has other issues already.
// ErrorSummary summarizes errors and warnings
type ErrorSummary struct {
ErrorCount int
WarningCount int
FirstSeen time.Time
LastSeen time.Time
}
// instanceStatistics provide statistics for a tidb-server instance.
type instanceStatistics struct {
sync.Mutex
global map[uint16]*ErrorSummary
users map[string]map[uint16]*ErrorSummary
hosts map[string]map[uint16]*ErrorSummary
}
var stats instanceStatistics
func init() {
FlushStats()
}
// FlushStats resets errors and warnings across global/users/hosts
func FlushStats() {
stats.Lock()
defer stats.Unlock()
stats.global = make(map[uint16]*ErrorSummary)
stats.users = make(map[string]map[uint16]*ErrorSummary)
stats.hosts = make(map[string]map[uint16]*ErrorSummary)
}
func copyMap(oldMap map[uint16]*ErrorSummary) map[uint16]*ErrorSummary {
newMap := make(map[uint16]*ErrorSummary, len(oldMap))
for k, v := range oldMap {
newMap[k] = &ErrorSummary{
ErrorCount: v.ErrorCount,
WarningCount: v.WarningCount,
FirstSeen: v.FirstSeen,
LastSeen: v.LastSeen,
}
}
return newMap
}
// GlobalStats summarizes errors and warnings across all users/hosts
func GlobalStats() map[uint16]*ErrorSummary {
stats.Lock()
defer stats.Unlock()
return copyMap(stats.global)
}
// UserStats summarizes per-user
func UserStats() map[string]map[uint16]*ErrorSummary {
stats.Lock()
defer stats.Unlock()
newMap := make(map[string]map[uint16]*ErrorSummary, len(stats.users))
for k, v := range stats.users {
newMap[k] = copyMap(v)
}
return newMap
}
// HostStats summarizes per remote-host
func HostStats() map[string]map[uint16]*ErrorSummary {
stats.Lock()
defer stats.Unlock()
newMap := make(map[string]map[uint16]*ErrorSummary, len(stats.hosts))
for k, v := range stats.hosts {
newMap[k] = copyMap(v)
}
return newMap
}
func initCounters(errCode uint16, user, host string) {
seen := time.Now()
stats.Lock()
defer stats.Unlock()
if _, ok := stats.global[errCode]; !ok {
stats.global[errCode] = &ErrorSummary{FirstSeen: seen}
}
if _, ok := stats.users[user]; !ok {
stats.users[user] = make(map[uint16]*ErrorSummary)
}
if _, ok := stats.users[user][errCode]; !ok {
stats.users[user][errCode] = &ErrorSummary{FirstSeen: seen}
}
if _, ok := stats.hosts[host]; !ok {
stats.hosts[host] = make(map[uint16]*ErrorSummary)
}
if _, ok := stats.hosts[host][errCode]; !ok {
stats.hosts[host][errCode] = &ErrorSummary{FirstSeen: seen}
}
}
// IncrementError increments the global/user/host statistics for an errCode
func IncrementError(errCode uint16, user, host string) {
seen := time.Now()
initCounters(errCode, user, host)
stats.Lock()
defer stats.Unlock()
// Increment counter + update last seen
stats.global[errCode].ErrorCount++
stats.global[errCode].LastSeen = seen
// Increment counter + update last seen
stats.users[user][errCode].ErrorCount++
stats.users[user][errCode].LastSeen = seen
// Increment counter + update last seen
stats.hosts[host][errCode].ErrorCount++
stats.hosts[host][errCode].LastSeen = seen
}
// IncrementWarning increments the global/user/host statistics for an errCode
func IncrementWarning(errCode uint16, user, host string) {
seen := time.Now()
initCounters(errCode, user, host)
stats.Lock()
defer stats.Unlock()
// Increment counter + update last seen
stats.global[errCode].WarningCount++
stats.global[errCode].LastSeen = seen
// Increment counter + update last seen
stats.users[user][errCode].WarningCount++
stats.users[user][errCode].LastSeen = seen
// Increment counter + update last seen
stats.hosts[host][errCode].WarningCount++
stats.hosts[host][errCode].LastSeen = seen
}
// Copyright 2019 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package metric
import (
"context"
"math"
"github.com/pingcap/tidb/pkg/util/promutil"
"github.com/prometheus/client_golang/prometheus"
dto "github.com/prometheus/client_model/go"
)
// metric label values.
const (
TableStatePending = "pending" // for the TableCounter labels, below too
TableStateImported = "imported"
TableStateCompleted = "completed"
StateTotalRestore = "total_restore" // total source data bytes needs to restore
StateRestored = "restored" // source data bytes restored during restore engine
StateRestoreWritten = "written" // kv bytes written during restore engine
StateImported = "imported" // kv bytes imported during import engine
StateMerged = "merged" // kv bytes merged during merge-sort step
ProgressPhaseTotal = "total" // total restore progress(not include post-process, like checksum and analyze)
ProgressPhaseRestore = "restore" // restore engine progress
ProgressPhaseImport = "import" // import engine progress
TableResultSuccess = "success" // for the TableCounter labels, below too
TableResultFailure = "failure"
ChunkStateEstimated = "estimated" // for the ChunkCounter labels, below too
ChunkStatePending = "pending"
ChunkStateRunning = "running"
ChunkStateFinished = "finished"
ChunkStateFailed = "failed"
SSTProcessSplit = "split" // for the SSTSecondsHistogram labels, below too
SSTProcessWrite = "write"
SSTProcessIngest = "ingest"
BlockDeliverKindIndex = "index"
BlockDeliverKindData = "data"
lightningNamespace = "lightning"
)
// Common contains metrics shared for lightning and import-into.
// they will have different namespace.
// metrics here will have an additional task-id const-label when used for import-into.
type Common struct {
ChunkCounter *prometheus.CounterVec
// BytesCounter records the total bytes processed.
// it has a state label, values includes:
// - total_restore: total source file bytes needs to restore, it's constant.
// - restored: source file bytes restored, i.e. encoded and sorted.
// - written: kv bytes written during encode & sort.
// - imported: kv bytes imported during import engine(this value don't account for replica).
BytesCounter *prometheus.CounterVec
RowsCounter *prometheus.CounterVec
// RowReadSecondsHistogram records the time spent on reading a batch of rows.
// for each row, the time includes time spend on reading from file,
// decompress if needed, and parsing into row data.
// then sum up all rows in a batch, and record the time.
RowReadSecondsHistogram prometheus.Histogram
// RowEncodeSecondsHistogram records the time spent on encoding a batch of rows.
RowEncodeSecondsHistogram prometheus.Histogram
BlockDeliverSecondsHistogram prometheus.Histogram
BlockDeliverBytesHistogram *prometheus.HistogramVec
BlockDeliverKVPairsHistogram *prometheus.HistogramVec
}
// NewCommon returns common metrics instance.
func NewCommon(factory promutil.Factory, namespace, subsystem string, constLabels prometheus.Labels) *Common {
return &Common{
ChunkCounter: factory.NewCounterVec(
prometheus.CounterOpts{
Namespace: namespace,
Subsystem: subsystem,
Name: "chunks",
Help: "count number of chunks processed",
ConstLabels: constLabels,
}, []string{"state"}),
BytesCounter: factory.NewCounterVec(
prometheus.CounterOpts{
Namespace: namespace,
Subsystem: subsystem,
Name: "bytes",
Help: "count of total bytes",
ConstLabels: constLabels,
}, []string{"state"}),
// state can be one of:
// - estimated (an estimation derived from the file size)
// - pending
// - running
// - finished
// - failed
RowsCounter: factory.NewCounterVec(
prometheus.CounterOpts{
Namespace: namespace,
Subsystem: subsystem,
Name: "rows",
Help: "count of total rows",
ConstLabels: constLabels,
}, []string{"state", "table"}),
RowReadSecondsHistogram: factory.NewHistogram(
prometheus.HistogramOpts{
Namespace: namespace,
Subsystem: subsystem,
Name: "row_read_seconds",
Help: "time needed to parse a row(include time to read and decompress file)",
ConstLabels: constLabels,
Buckets: prometheus.ExponentialBuckets(0.001, 3.1622776601683795, 7),
}),
RowEncodeSecondsHistogram: factory.NewHistogram(
prometheus.HistogramOpts{
Namespace: namespace,
Subsystem: subsystem,
Name: "row_encode_seconds",
Help: "time needed to encode a row",
ConstLabels: constLabels,
Buckets: prometheus.ExponentialBuckets(0.001, 3.1622776601683795, 10),
}),
BlockDeliverSecondsHistogram: factory.NewHistogram(
prometheus.HistogramOpts{
Namespace: namespace,
Subsystem: subsystem,
Name: "block_deliver_seconds",
Help: "time needed to deliver a block",
ConstLabels: constLabels,
Buckets: prometheus.ExponentialBuckets(0.001, 3.1622776601683795, 10),
}),
BlockDeliverBytesHistogram: factory.NewHistogramVec(
prometheus.HistogramOpts{
Namespace: namespace,
Subsystem: subsystem,
Name: "block_deliver_bytes",
Help: "number of bytes being sent out to importer",
ConstLabels: constLabels,
Buckets: prometheus.ExponentialBuckets(512, 2, 10),
}, []string{"kind"}),
BlockDeliverKVPairsHistogram: factory.NewHistogramVec(
prometheus.HistogramOpts{
Namespace: namespace,
Subsystem: subsystem,
Name: "block_deliver_kv_pairs",
Help: "number of KV pairs being sent out to importer",
ConstLabels: constLabels,
Buckets: prometheus.ExponentialBuckets(1, 2, 10),
}, []string{"kind"}),
}
}
// RegisterTo registers all metrics to the given registry.
func (c *Common) RegisterTo(r promutil.Registry) {
r.MustRegister(
c.ChunkCounter,
c.BytesCounter,
c.RowsCounter,
c.RowReadSecondsHistogram,
c.RowEncodeSecondsHistogram,
c.BlockDeliverSecondsHistogram,
c.BlockDeliverBytesHistogram,
c.BlockDeliverKVPairsHistogram,
)
}
// UnregisterFrom unregisters all metrics from the given registry.
func (c *Common) UnregisterFrom(r promutil.Registry) {
r.Unregister(c.ChunkCounter)
r.Unregister(c.BytesCounter)
r.Unregister(c.RowsCounter)
r.Unregister(c.RowReadSecondsHistogram)
r.Unregister(c.RowEncodeSecondsHistogram)
r.Unregister(c.BlockDeliverSecondsHistogram)
r.Unregister(c.BlockDeliverBytesHistogram)
r.Unregister(c.BlockDeliverKVPairsHistogram)
}
// Metrics contains all metrics used by lightning.
type Metrics struct {
ImporterEngineCounter *prometheus.CounterVec
IdleWorkersGauge *prometheus.GaugeVec
KvEncoderCounter *prometheus.CounterVec
TableCounter *prometheus.CounterVec
ProcessedEngineCounter *prometheus.CounterVec
ImportSecondsHistogram prometheus.Histogram
ChunkParserReadBlockSecondsHistogram prometheus.Histogram
ApplyWorkerSecondsHistogram *prometheus.HistogramVec
RowKVDeliverSecondsHistogram prometheus.Histogram
// RowReadBytesHistogram records the number of bytes read from data source
// for a batch of rows.
// it's a little duplicate with RowsCounter of state = "restored".
RowReadBytesHistogram prometheus.Histogram
ChecksumSecondsHistogram prometheus.Histogram
SSTSecondsHistogram *prometheus.HistogramVec
LocalStorageUsageBytesGauge *prometheus.GaugeVec
ProgressGauge *prometheus.GaugeVec
*Common
}
// NewMetrics creates a new empty metrics.
func NewMetrics(factory promutil.Factory) *Metrics {
c := NewCommon(factory, lightningNamespace, "", nil)
return &Metrics{
Common: c,
ImporterEngineCounter: factory.NewCounterVec(
prometheus.CounterOpts{
Namespace: lightningNamespace,
Name: "importer_engine",
Help: "counting open and closed importer engines",
}, []string{"type"}),
IdleWorkersGauge: factory.NewGaugeVec(
prometheus.GaugeOpts{
Namespace: lightningNamespace,
Name: "idle_workers",
Help: "counting idle workers",
}, []string{"name"}),
KvEncoderCounter: factory.NewCounterVec(
prometheus.CounterOpts{
Namespace: lightningNamespace,
Name: "kv_encoder",
Help: "counting kv open and closed kv encoder",
}, []string{"type"}),
TableCounter: factory.NewCounterVec(
prometheus.CounterOpts{
Namespace: lightningNamespace,
Name: "tables",
Help: "count number of tables processed",
}, []string{"state", "result"}),
ProcessedEngineCounter: factory.NewCounterVec(
prometheus.CounterOpts{
Namespace: lightningNamespace,
Name: "engines",
Help: "count number of engines processed",
}, []string{"state", "result"}),
ImportSecondsHistogram: factory.NewHistogram(
prometheus.HistogramOpts{
Namespace: lightningNamespace,
Name: "import_seconds",
Help: "time needed to import a table",
Buckets: prometheus.ExponentialBuckets(0.125, 2, 6),
}),
ChunkParserReadBlockSecondsHistogram: factory.NewHistogram(
prometheus.HistogramOpts{
Namespace: lightningNamespace,
Name: "chunk_parser_read_block_seconds",
Help: "time needed for chunk parser read a block",
Buckets: prometheus.ExponentialBuckets(0.001, 3.1622776601683795, 10),
}),
ApplyWorkerSecondsHistogram: factory.NewHistogramVec(
prometheus.HistogramOpts{
Namespace: lightningNamespace,
Name: "apply_worker_seconds",
Help: "time needed to apply a worker",
Buckets: prometheus.ExponentialBuckets(0.001, 3.1622776601683795, 10),
}, []string{"name"}),
RowKVDeliverSecondsHistogram: factory.NewHistogram(
prometheus.HistogramOpts{
Namespace: lightningNamespace,
Name: "row_kv_deliver_seconds",
Help: "time needed to send kvs to deliver loop",
Buckets: prometheus.ExponentialBuckets(0.001, 3.1622776601683795, 10),
}),
RowReadBytesHistogram: factory.NewHistogram(
prometheus.HistogramOpts{
Namespace: lightningNamespace,
Name: "row_read_bytes",
Help: "number of bytes being read out from data source",
Buckets: prometheus.ExponentialBuckets(1024, 2, 8),
}),
ChecksumSecondsHistogram: factory.NewHistogram(
prometheus.HistogramOpts{
Namespace: lightningNamespace,
Name: "checksum_seconds",
Help: "time needed to complete the checksum stage",
Buckets: prometheus.ExponentialBuckets(1, 2.2679331552660544, 10),
}),
SSTSecondsHistogram: factory.NewHistogramVec(
prometheus.HistogramOpts{
Namespace: lightningNamespace,
Name: "sst_seconds",
Help: "time needed to complete the sst operations",
Buckets: prometheus.ExponentialBuckets(1, 2.2679331552660544, 10),
}, []string{"kind"}),
LocalStorageUsageBytesGauge: factory.NewGaugeVec(
prometheus.GaugeOpts{
Namespace: lightningNamespace,
Name: "local_storage_usage_bytes",
Help: "disk/memory size currently occupied by intermediate files in local backend",
}, []string{"medium"}),
ProgressGauge: factory.NewGaugeVec(
prometheus.GaugeOpts{
Namespace: lightningNamespace,
Name: "progress",
Help: "progress of lightning phase",
}, []string{"phase"}),
}
}
// RegisterTo registers all metrics to the given registry.
func (m *Metrics) RegisterTo(r promutil.Registry) {
m.Common.RegisterTo(r)
r.MustRegister(
m.ImporterEngineCounter,
m.IdleWorkersGauge,
m.KvEncoderCounter,
m.TableCounter,
m.ProcessedEngineCounter,
m.ImportSecondsHistogram,
m.ChunkParserReadBlockSecondsHistogram,
m.ApplyWorkerSecondsHistogram,
m.RowKVDeliverSecondsHistogram,
m.RowReadBytesHistogram,
m.ChecksumSecondsHistogram,
m.SSTSecondsHistogram,
m.LocalStorageUsageBytesGauge,
m.ProgressGauge,
)
}
// UnregisterFrom unregisters all metrics from the given registry.
func (m *Metrics) UnregisterFrom(r promutil.Registry) {
m.Common.UnregisterFrom(r)
r.Unregister(m.ImporterEngineCounter)
r.Unregister(m.IdleWorkersGauge)
r.Unregister(m.KvEncoderCounter)
r.Unregister(m.TableCounter)
r.Unregister(m.ProcessedEngineCounter)
r.Unregister(m.ImportSecondsHistogram)
r.Unregister(m.ChunkParserReadBlockSecondsHistogram)
r.Unregister(m.ApplyWorkerSecondsHistogram)
r.Unregister(m.RowKVDeliverSecondsHistogram)
r.Unregister(m.RowReadBytesHistogram)
r.Unregister(m.ChecksumSecondsHistogram)
r.Unregister(m.SSTSecondsHistogram)
r.Unregister(m.LocalStorageUsageBytesGauge)
r.Unregister(m.ProgressGauge)
}
// RecordTableCount records the number of tables processed.
func (m *Metrics) RecordTableCount(status string, err error) {
var result string
if err != nil {
result = TableResultFailure
} else {
result = TableResultSuccess
}
m.TableCounter.WithLabelValues(status, result).Inc()
}
// RecordEngineCount records the number of engines processed.
func (m *Metrics) RecordEngineCount(status string, err error) {
var result string
if err != nil {
result = TableResultFailure
} else {
result = TableResultSuccess
}
m.ProcessedEngineCounter.WithLabelValues(status, result).Inc()
}
// ReadCounter reports the current value of the counter.
func ReadCounter(counter prometheus.Counter) float64 {
var metric dto.Metric
if err := counter.Write(&metric); err != nil {
return math.NaN()
}
return metric.Counter.GetValue()
}
// ReadHistogram reports the current value of the histogram.
// for test only.
func ReadHistogram(counter prometheus.Histogram) *dto.Metric {
var metric dto.Metric
if err := counter.Write(&metric); err != nil {
return nil
}
return &metric
}
func metricHasLabel(labelPairs []*dto.LabelPair, labels prometheus.Labels) bool {
for _, label := range labelPairs {
if v, ok := labels[label.GetName()]; ok && v == label.GetValue() {
return true
}
}
return false
}
// ReadAllCounters reports the summary value of the counters with given labels.
func ReadAllCounters(metricsVec *prometheus.MetricVec, labels prometheus.Labels) float64 {
metricsChan := make(chan prometheus.Metric, 8)
go func() {
metricsVec.Collect(metricsChan)
close(metricsChan)
}()
var sum float64
for counter := range metricsChan {
var metric dto.Metric
if err := counter.Write(&metric); err != nil {
return math.NaN()
}
if !metricHasLabel(metric.GetLabel(), labels) {
continue
}
sum += metric.Counter.GetValue()
}
return sum
}
// ReadHistogramSum reports the sum of all observed values in the histogram.
func ReadHistogramSum(histogram prometheus.Histogram) float64 {
var metric dto.Metric
if err := histogram.Write(&metric); err != nil {
return math.NaN()
}
return metric.Histogram.GetSampleSum()
}
type ctxKeyType string
var (
allMetricKey ctxKeyType = "all-metrics"
commonMetricKey ctxKeyType = "common-metrics"
)
// WithMetric returns a new context with the provided metrics.
func WithMetric(ctx context.Context, metrics *Metrics) context.Context {
return context.WithValue(
WithCommonMetric(ctx, metrics.Common),
allMetricKey, metrics)
}
// WithCommonMetric returns a new context with the provided common metrics.
func WithCommonMetric(ctx context.Context, commonMetric *Common) context.Context {
return context.WithValue(ctx, commonMetricKey, commonMetric)
}
// FromContext returns the metrics stored in the context.
func FromContext(ctx context.Context) (*Metrics, bool) {
m, ok := ctx.Value(allMetricKey).(*Metrics)
return m, ok
}
// GetCommonMetric returns the common metrics stored in the context.
func GetCommonMetric(ctx context.Context) (*Common, bool) {
m, ok := ctx.Value(commonMetricKey).(*Common)
return m, ok
}
// Copyright 2019 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package metrics
import (
metricscommon "github.com/pingcap/tidb/pkg/metrics/common"
"github.com/prometheus/client_golang/prometheus"
)
// bindinfo metrics.
var (
BindingCacheHitCounter prometheus.Counter
BindingCacheMissCounter prometheus.Counter
BindingCacheMemUsage prometheus.Gauge
BindingCacheMemLimit prometheus.Gauge
BindingCacheNumBindings prometheus.Gauge
)
// InitBindInfoMetrics initializes bindinfo metrics.
func InitBindInfoMetrics() {
BindingCacheHitCounter = metricscommon.NewCounter(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "server",
Name: "binding_cache_hit_total",
Help: "Counter of binding cache hit.",
})
BindingCacheMissCounter = metricscommon.NewCounter(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "server",
Name: "binding_cache_miss_total",
Help: "Counter of binding cache miss.",
})
BindingCacheMemUsage = metricscommon.NewGauge(
prometheus.GaugeOpts{
Namespace: "tidb",
Subsystem: "server",
Name: "binding_cache_mem_usage",
Help: "Memory usage of binding cache.",
})
BindingCacheMemLimit = metricscommon.NewGauge(
prometheus.GaugeOpts{
Namespace: "tidb",
Subsystem: "server",
Name: "binding_cache_mem_limit",
Help: "Memory limit of binding cache.",
})
BindingCacheNumBindings = metricscommon.NewGauge(
prometheus.GaugeOpts{
Namespace: "tidb",
Subsystem: "server",
Name: "binding_cache_num_bindings",
Help: "Number of bindings in binding cache.",
})
}
// Copyright 2025 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package metrics
import (
metricscommon "github.com/pingcap/tidb/pkg/metrics/common"
"github.com/prometheus/client_golang/prometheus"
)
var (
// RestoreImportFileSeconds records the time cost for importing a file.
// Including download / queuing.
RestoreImportFileSeconds prometheus.Histogram
// RestoreUploadSSTForPiTRSeconds records the time cost for uploading SST
// files during restoring for future PiTR.
RestoreUploadSSTForPiTRSeconds prometheus.Histogram
// RestoreUploadSSTMetaForPiTRSeconds records the time cost for saving metadata
// of uploaded SSTs for future PiTR.
RestoreUploadSSTMetaForPiTRSeconds prometheus.Histogram
// RestoreTableCreatedCount counts how many tables created.
RestoreTableCreatedCount prometheus.Counter
// MetaKVBatchFiles counts how many meta KV files restored in the batch
MetaKVBatchFiles *prometheus.HistogramVec
// MetaKVBatchFilteredKeys counts how many meta KV entries filtered from the batch
MetaKVBatchFilteredKeys *prometheus.HistogramVec
// MetaKVBatchKeys counts how many meta KV entries restored in the batch
MetaKVBatchKeys *prometheus.HistogramVec
// MetaKVBatchSize records the total size of the meta KV entries restored in the batch
MetaKVBatchSize *prometheus.HistogramVec
// KVApplyBatchDuration records the duration to apply the batch of KV files
KVApplyBatchDuration prometheus.Histogram
// KVApplyBatchFiles counts how many KV files restored in the batch
KVApplyBatchFiles prometheus.Histogram
// KVApplyBatchRegions counts how many regions restored in the batch of KV files
KVApplyBatchRegions prometheus.Histogram
// KVApplyBatchSize records the total size of the KV files restored in the batch
KVApplyBatchSize prometheus.Histogram
// KVApplyRegionFiles counts how many KV files restored for a region
KVApplyRegionFiles prometheus.Histogram
// KVApplyTasksEvents tracks the event of the apply tasks.
// Label: event. Possible values: "skipped", "submitted", "started", "finished".
// `submitted` - `started` = pending tasks.
// `finished` - `started` = running tasks.
KVApplyTasksEvents *prometheus.CounterVec
// KVLogFileEmittedMemory tracks the memory usage of metadata.
// Label: status. Possible values: "0-loaded", "1-split", "2-applied".
// `1-split` - `0-loaded` = file info used for splitting regions.
// `2-applied` - `1-split` = file info used for running restore tasks.
KVLogFileEmittedMemory *prometheus.CounterVec
// KVApplyRunOverRegionsEvents tracks the event of the run over regions call.
// Label: event. Possible values: "request-region", "retry-region", "retry-range", "region-success".
KVApplyRunOverRegionsEvents *prometheus.CounterVec
// KVSplitHelperMemUsage tracks the memory usage of the split helper.
KVSplitHelperMemUsage prometheus.Gauge
)
// InitBRMetrics initializes all metrics in BR.
func InitBRMetrics() {
RestoreTableCreatedCount = metricscommon.NewCounter(prometheus.CounterOpts{
Namespace: "BR",
Name: "table_created",
Help: "The count of tables have been created.",
})
RestoreImportFileSeconds = metricscommon.NewHistogram(prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "br",
Name: "restore_import_file_seconds",
Help: "The time cost for importing a file. (including the time cost in queuing)",
Buckets: prometheus.ExponentialBuckets(0.01, 4, 14),
})
RestoreUploadSSTForPiTRSeconds = metricscommon.NewHistogram(prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "br",
Name: "restore_upload_sst_for_pitr_seconds",
Help: "The time cost for uploading SST files for point-in-time recovery",
Buckets: prometheus.DefBuckets,
})
RestoreUploadSSTMetaForPiTRSeconds = metricscommon.NewHistogram(prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "br",
Name: "restore_upload_sst_meta_for_pitr_seconds",
Help: "The time cost for uploading SST metadata for point-in-time recovery",
Buckets: prometheus.ExponentialBuckets(0.01, 2, 14),
})
MetaKVBatchFiles = metricscommon.NewHistogramVec(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "br",
Name: "meta_kv_batch_files",
Help: "The number of meta KV files in the batch",
Buckets: prometheus.ExponentialBuckets(1, 2, 12), // 1 ~ 2048
}, []string{"cf"})
MetaKVBatchFilteredKeys = metricscommon.NewHistogramVec(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "br",
Name: "meta_kv_batch_filtered_keys",
Help: "The number of filtered meta KV entries from the batch",
Buckets: prometheus.ExponentialBuckets(1, 2, 18), // 1 ~ 128Ki
}, []string{"cf"})
MetaKVBatchKeys = metricscommon.NewHistogramVec(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "br",
Name: "meta_kv_batch_keys",
Help: "The number of meta KV entries in the batch",
Buckets: prometheus.ExponentialBuckets(1, 2, 18), // 1 ~ 128Ki
}, []string{"cf"})
MetaKVBatchSize = metricscommon.NewHistogramVec(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "br",
Name: "meta_kv_batch_size",
Help: "The total size of meta KV entries in the batch",
Buckets: prometheus.ExponentialBuckets(256, 2, 20), // 256 ~ 128Mi
}, []string{"cf"})
KVApplyBatchDuration = metricscommon.NewHistogram(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "br",
Name: "kv_apply_batch_duration_seconds",
Help: "The duration to apply the batch of KV files",
Buckets: prometheus.ExponentialBuckets(0.001, 2, 21), // 1ms ~ 15min
})
KVApplyBatchFiles = metricscommon.NewHistogram(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "br",
Name: "kv_apply_batch_files",
Help: "The number of KV files in the batch",
Buckets: prometheus.ExponentialBuckets(1, 2, 11), // 1 ~ 1024
})
KVApplyBatchRegions = metricscommon.NewHistogram(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "br",
Name: "kv_apply_batch_regions",
Help: "The number of regions in the range of entries in the batch of KV files",
Buckets: prometheus.ExponentialBuckets(1, 2, 12), // 1 ~ 2048
})
KVApplyBatchSize = metricscommon.NewHistogram(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "br",
Name: "kv_apply_batch_size",
Help: "The number of KV files in the batch",
Buckets: prometheus.ExponentialBuckets(1024, 2, 21), // 1KiB ~ 1GiB
})
KVApplyRegionFiles = metricscommon.NewHistogram(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "br",
Name: "kv_apply_region_files",
Help: "The number of KV files restored for a region",
Buckets: prometheus.ExponentialBuckets(1, 2, 11), // 1 ~ 1024
})
KVApplyTasksEvents = prometheus.NewCounterVec(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "br",
Name: "apply_tasks_events",
Help: "The count of events of the apply tasks.",
},
[]string{"event"},
)
KVLogFileEmittedMemory = prometheus.NewCounterVec(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "br",
Name: "kv_log_file_metadata_memory_bytes",
Help: "The memory usage of metadata for KV log files.",
},
[]string{"status"},
)
KVApplyRunOverRegionsEvents = prometheus.NewCounterVec(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "br",
Name: "apply_run_over_regions_events",
Help: "The count of events of the run over regions call.",
},
[]string{"event"},
)
KVSplitHelperMemUsage = prometheus.NewGauge(
prometheus.GaugeOpts{
Namespace: "tidb",
Subsystem: "br",
Name: "kv_split_helper_memory_usage_bytes",
Help: "The memory usage of the split helper.",
},
)
}
// Copyright 2023 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package metricscommon
import (
"fmt"
"strings"
"github.com/prometheus/client_golang/prometheus"
)
var constLabels prometheus.Labels
// GetConstLabels returns constant labels for metrics.
func GetConstLabels() prometheus.Labels {
return constLabels
}
// SetConstLabels sets constant labels for metrics.
func SetConstLabels(kv ...string) {
if len(kv)%2 == 1 {
panic(fmt.Sprintf("got the odd number of inputs for const labels: %d", len(kv)))
}
constLabels = make(prometheus.Labels, len(kv)/2)
for i := 0; i < len(kv); i += 2 {
constLabels[strings.ToLower(kv[i])] = kv[i+1]
}
}
// NewCounter wraps a prometheus.NewCounter.
func NewCounter(opts prometheus.CounterOpts) prometheus.Counter {
opts.ConstLabels = constLabels
return prometheus.NewCounter(opts)
}
// NewCounterVec wraps a prometheus.NewCounterVec.
func NewCounterVec(opts prometheus.CounterOpts, labelNames []string) *prometheus.CounterVec {
opts.ConstLabels = constLabels
return prometheus.NewCounterVec(opts, labelNames)
}
// NewGauge wraps a prometheus.NewGauge.
func NewGauge(opts prometheus.GaugeOpts) prometheus.Gauge {
opts.ConstLabels = constLabels
return prometheus.NewGauge(opts)
}
// NewGaugeVec wraps a prometheus.NewGaugeVec.
func NewGaugeVec(opts prometheus.GaugeOpts, labelNames []string) *prometheus.GaugeVec {
opts.ConstLabels = constLabels
return prometheus.NewGaugeVec(opts, labelNames)
}
// NewHistogram wraps a prometheus.NewHistogram.
func NewHistogram(opts prometheus.HistogramOpts) prometheus.Histogram {
opts.ConstLabels = constLabels
return prometheus.NewHistogram(opts)
}
// NewHistogramVec wraps a prometheus.NewHistogramVec.
func NewHistogramVec(opts prometheus.HistogramOpts, labelNames []string) *prometheus.HistogramVec {
opts.ConstLabels = constLabels
return prometheus.NewHistogramVec(opts, labelNames)
}
// NewSummaryVec wraps a prometheus.NewSummaryVec.
func NewSummaryVec(opts prometheus.SummaryOpts, labelNames []string) *prometheus.SummaryVec {
opts.ConstLabels = constLabels
return prometheus.NewSummaryVec(opts, labelNames)
}
// Copyright 2018 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package metrics
import (
"maps"
"strconv"
"strings"
"sync"
"github.com/pingcap/tidb/pkg/lightning/metric"
metricscommon "github.com/pingcap/tidb/pkg/metrics/common"
"github.com/pingcap/tidb/pkg/util/promutil"
"github.com/prometheus/client_golang/prometheus"
)
var (
mu sync.Mutex
registeredJobMetrics = make(map[int64]*metric.Common, 64)
)
// Metrics for the DDL package.
var (
JobsGauge *prometheus.GaugeVec
HandleJobHistogram *prometheus.HistogramVec
BatchAddIdxHistogram *prometheus.HistogramVec
SyncerInit = "init"
SyncerRestart = "restart"
SyncerClear = "clear"
SyncerRewatch = "rewatch"
StateSyncerInit = "init_global_state"
DeploySyncerHistogram *prometheus.HistogramVec
UpdateSelfVersionHistogram *prometheus.HistogramVec
OwnerUpdateGlobalVersion = "update_global_version"
OwnerCheckAllVersions = "check_all_versions"
UpdateGlobalState = "update_global_state"
OwnerHandleSyncerHistogram *prometheus.HistogramVec
// Metrics for job_worker.go.
WorkerAddDDLJob = "add_job"
DDLWorkerHistogram *prometheus.HistogramVec
// DDLRunOneStep is the label for the DDL worker operation run_one_step.
//
// if a DDL job runs successfully, the cost time is mostly in below structure:
//
// run_job
// ├─ step-1
// │ ├─ transit_one_step
// │ │ ├─ run_one_step
// │ │ │ ├─ lock_schema_ver
// │ │ │ ├─ incr_schema_ver
// │ │ │ ├─ async_notify
// │ │ ├─ other common works such as register MDL, commit, etc.
// │ ├─ wait_schema_synced
// │ ├─ clean_mdl_info
// ├─ step-2/3/4 ... similar as above -> done state
// ├─ handle_job_done
DDLRunOneStep = "run_one_step"
DDLWaitSchemaSynced = "wait_schema_synced"
DDLIncrSchemaVerOpHist prometheus.Observer
DDLLockSchemaVerOpHist prometheus.Observer
DDLRunJobOpHist prometheus.Observer
DDLHandleJobDoneOpHist prometheus.Observer
DDLTransitOneStepOpHist prometheus.Observer
DDLLockVerDurationHist prometheus.Observer
DDLCleanMDLInfoHist prometheus.Observer
RetryableErrorCount *prometheus.CounterVec
CreateDDLInstance = "create_ddl_instance"
CreateDDL = "create_ddl"
DDLOwner = "owner"
DDLCounter *prometheus.CounterVec
BackfillTotalCounter *prometheus.CounterVec
BackfillProgressGauge *prometheus.GaugeVec
DDLJobTableDuration *prometheus.HistogramVec
DDLRunningJobCount *prometheus.GaugeVec
AddIndexScanRate *prometheus.HistogramVec
)
// InitDDLMetrics initializes defines DDL metrics.
func InitDDLMetrics() {
JobsGauge = metricscommon.NewGaugeVec(
prometheus.GaugeOpts{
Namespace: "tidb",
Subsystem: "ddl",
Name: "waiting_jobs",
Help: "Gauge of jobs.",
}, []string{LblType})
HandleJobHistogram = metricscommon.NewHistogramVec(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "ddl",
Name: "handle_job_duration_seconds",
Help: "Bucketed histogram of processing time (s) of handle jobs",
Buckets: prometheus.ExponentialBuckets(0.01, 2, 24), // 10ms ~ 24hours
}, []string{LblType, LblResult})
BatchAddIdxHistogram = metricscommon.NewHistogramVec(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "ddl",
Name: "batch_add_idx_duration_seconds",
Help: "Bucketed histogram of processing time (s) of batch handle data",
Buckets: prometheus.ExponentialBuckets(0.001, 2, 28), // 1ms ~ 1.5days
}, []string{LblType})
DeploySyncerHistogram = metricscommon.NewHistogramVec(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "ddl",
Name: "deploy_syncer_duration_seconds",
Help: "Bucketed histogram of processing time (s) of deploy syncer",
Buckets: prometheus.ExponentialBuckets(0.001, 2, 20), // 1ms ~ 524s
}, []string{LblType, LblResult})
UpdateSelfVersionHistogram = metricscommon.NewHistogramVec(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "ddl",
Name: "update_self_ver_duration_seconds",
Help: "Bucketed histogram of processing time (s) of update self version",
Buckets: prometheus.ExponentialBuckets(0.001, 2, 20), // 1ms ~ 524s
}, []string{LblResult})
OwnerHandleSyncerHistogram = metricscommon.NewHistogramVec(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "ddl",
Name: "owner_handle_syncer_duration_seconds",
Help: "Bucketed histogram of processing time (s) of handle syncer",
Buckets: prometheus.ExponentialBuckets(0.001, 2, 20), // 1ms ~ 524s
}, []string{LblType, LblResult})
DDLWorkerHistogram = metricscommon.NewHistogramVec(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "ddl",
Name: "worker_operation_duration_seconds",
Help: "Bucketed histogram of processing time (s) of ddl worker operations",
Buckets: prometheus.ExponentialBuckets(0.001, 2, 28), // 1ms ~ 1.5days
}, []string{LblType, LblAction, LblResult})
DDLCounter = metricscommon.NewCounterVec(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "ddl",
Name: "worker_operation_total",
Help: "Counter of creating ddl/worker and isowner.",
}, []string{LblType})
BackfillTotalCounter = metricscommon.NewCounterVec(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "ddl",
Name: "add_index_total",
Help: "Speed of add index",
}, []string{LblType})
BackfillProgressGauge = metricscommon.NewGaugeVec(
prometheus.GaugeOpts{
Namespace: "tidb",
Subsystem: "ddl",
Name: "backfill_percentage_progress",
Help: "Percentage progress of backfill",
}, []string{LblType})
DDLJobTableDuration = metricscommon.NewHistogramVec(prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "ddl",
Name: "job_table_duration_seconds",
Help: "Bucketed histogram of processing time (s) of the 3 DDL job tables",
Buckets: prometheus.ExponentialBuckets(0.001, 2, 20), // 1ms ~ 524s
}, []string{LblType})
DDLRunningJobCount = metricscommon.NewGaugeVec(
prometheus.GaugeOpts{
Namespace: "tidb",
Subsystem: "ddl",
Name: "running_job_count",
Help: "Running DDL jobs count",
}, []string{LblType})
AddIndexScanRate = metricscommon.NewHistogramVec(prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "ddl",
Name: "scan_rate",
Help: "scan rate",
Buckets: prometheus.ExponentialBuckets(0.05, 2, 20),
}, []string{LblType})
RetryableErrorCount = metricscommon.NewCounterVec(prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "ddl",
Name: "retryable_error_total",
Help: "Retryable error count during ddl.",
}, []string{LblType})
// those metrics are for diagnose performance issues of running multiple DDLs
// is a short time window, so we don't need to add label for DDL type.
DDLIncrSchemaVerOpHist = DDLWorkerHistogram.WithLabelValues("incr_schema_ver", "*", "*")
DDLLockSchemaVerOpHist = DDLWorkerHistogram.WithLabelValues("lock_schema_ver", "*", "*")
DDLRunJobOpHist = DDLWorkerHistogram.WithLabelValues("run_job", "*", "*")
DDLHandleJobDoneOpHist = DDLWorkerHistogram.WithLabelValues("handle_job_done", "*", "*")
DDLTransitOneStepOpHist = DDLWorkerHistogram.WithLabelValues("transit_one_step", "*", "*")
DDLLockVerDurationHist = DDLWorkerHistogram.WithLabelValues("lock_ver_duration", "*", "*")
DDLCleanMDLInfoHist = DDLWorkerHistogram.WithLabelValues("clean_mdl_info", "*", "*")
}
var (
// DDLAddOneTempIndexWrite records the number of writes to a temporary index.
DDLAddOneTempIndexWrite = func(connID uint64, tableID int64, doubleWrite bool) {}
// DDLCommitTempIndexWrite commits the writes to a temporary index.
DDLCommitTempIndexWrite = func(connID uint64) {}
// DDLRollbackTempIndexWrite rolls back the writes to a temporary index.
DDLRollbackTempIndexWrite = func(connID uint64) {}
// DDLResetTempIndexWrite resets the write count for a temporary index.
DDLResetTempIndexWrite = func(tblID int64) {}
// DDLClearTempIndexWrite clears the write count for a temporary index.
DDLClearTempIndexWrite = func(connID uint64) {}
// DDLSetTempIndexScanAndMerge sets the scan count and merge count for a temporary index.
DDLSetTempIndexScanAndMerge = func(tableID int64, scanCnt, mergeCnt uint64) {}
)
// Label constants.
const (
LblAction = "action"
// Used by BackfillProgressGauge
LblAddIndex = "add_index"
LblAddIndexMerge = "add_index_merge_tmp"
LblModifyColumn = "modify_column"
LblReorgPartition = "reorganize_partition"
// Used by BackfillTotalCounter
LblAddIdxRate = "add_idx_rate"
LblMergeTmpIdxRate = "merge_tmp_idx_rate"
LblCleanupIdxRate = "cleanup_idx_rate"
LblUpdateColRate = "update_col_rate"
LblReorgPartitionRate = "reorg_partition_rate"
)
// generateReorgLabel returns the label with schema name, table name and optional column/index names.
// Multiple columns/indexes can be concatenated with "+".
func generateReorgLabel(label, schemaName, tableName, colOrIdxNames string) string {
var stringBuilder strings.Builder
if len(colOrIdxNames) == 0 {
stringBuilder.Grow(len(label) + len(schemaName) + len(tableName) + 2)
} else {
stringBuilder.Grow(len(label) + len(schemaName) + len(tableName) + len(colOrIdxNames) + 3)
}
stringBuilder.WriteString(label)
stringBuilder.WriteString("-")
stringBuilder.WriteString(schemaName)
stringBuilder.WriteString("-")
stringBuilder.WriteString(tableName)
if len(colOrIdxNames) > 0 {
stringBuilder.WriteString("-")
stringBuilder.WriteString(colOrIdxNames)
}
return stringBuilder.String()
}
// GetBackfillTotalByLabel returns the Counter showing the speed of backfilling for the given type label.
func GetBackfillTotalByLabel(label, schemaName, tableName, optionalColOrIdxName string) prometheus.Counter {
return BackfillTotalCounter.WithLabelValues(generateReorgLabel(label, schemaName, tableName, optionalColOrIdxName))
}
// GetBackfillProgressByLabel returns the Gauge showing the percentage progress for the given type label.
func GetBackfillProgressByLabel(label, schemaName, tableName, optionalColOrIdxName string) prometheus.Gauge {
return BackfillProgressGauge.WithLabelValues(generateReorgLabel(label, schemaName, tableName, optionalColOrIdxName))
}
// RegisterLightningCommonMetricsForDDL returns the registered common metrics.
func RegisterLightningCommonMetricsForDDL(jobID int64) *metric.Common {
mu.Lock()
defer mu.Unlock()
if m, ok := registeredJobMetrics[jobID]; ok {
return m
}
metrics := metric.NewCommon(promutil.NewDefaultFactory(), TiDB, "ddl", prometheus.Labels{
"job_id": strconv.FormatInt(jobID, 10),
})
metrics.RegisterTo(prometheus.DefaultRegisterer)
registeredJobMetrics[jobID] = metrics
return metrics
}
// UnregisterLightningCommonMetricsForDDL unregisters the registered common metrics.
func UnregisterLightningCommonMetricsForDDL(jobID int64, metrics *metric.Common) {
if metrics == nil {
return
}
mu.Lock()
defer mu.Unlock()
metrics.UnregisterFrom(prometheus.DefaultRegisterer)
delete(registeredJobMetrics, jobID)
}
// GetRegisteredJob is used for test
func GetRegisteredJob() map[int64]*metric.Common {
mu.Lock()
defer mu.Unlock()
ret := make(map[int64]*metric.Common, len(registeredJobMetrics))
maps.Copy(ret, registeredJobMetrics)
return ret
}
// Copyright 2018 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package metrics
import (
metricscommon "github.com/pingcap/tidb/pkg/metrics/common"
"github.com/prometheus/client_golang/prometheus"
)
// distsql metrics.
var (
DistSQLQueryHistogram *prometheus.HistogramVec
DistSQLScanKeysPartialHistogram prometheus.Histogram
DistSQLScanKeysHistogram prometheus.Histogram
DistSQLPartialCountHistogram prometheus.Histogram
DistSQLCoprCacheCounter *prometheus.CounterVec
DistSQLCoprClosestReadCounter *prometheus.CounterVec
DistSQLCoprRespBodySize *prometheus.HistogramVec
)
// InitDistSQLMetrics initializes distsql metrics.
func InitDistSQLMetrics() {
DistSQLQueryHistogram = metricscommon.NewHistogramVec(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "distsql",
Name: "handle_query_duration_seconds",
Help: "Bucketed histogram of processing time (s) of handled queries.",
Buckets: prometheus.ExponentialBuckets(0.0005, 2, 29), // 0.5ms ~ 1.5days
}, []string{LblType, LblSQLType, LblCoprType})
DistSQLScanKeysPartialHistogram = metricscommon.NewHistogram(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "distsql",
Name: "scan_keys_partial_num",
Help: "number of scanned keys for each partial result.",
},
)
DistSQLScanKeysHistogram = metricscommon.NewHistogram(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "distsql",
Name: "scan_keys_num",
Help: "number of scanned keys for each query.",
},
)
DistSQLPartialCountHistogram = metricscommon.NewHistogram(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "distsql",
Name: "partial_num",
Help: "number of partial results for each query.",
},
)
DistSQLCoprCacheCounter = metricscommon.NewCounterVec(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "distsql",
Name: "copr_cache",
Help: "coprocessor cache hit, evict and miss number",
}, []string{LblType})
DistSQLCoprClosestReadCounter = metricscommon.NewCounterVec(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "distsql",
Name: "copr_closest_read",
Help: "counter of total copr read local read hit.",
}, []string{LblType})
DistSQLCoprRespBodySize = metricscommon.NewHistogramVec(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "distsql",
Name: "copr_resp_size",
Help: "copr task response data size in bytes.",
Buckets: prometheus.ExponentialBuckets(1, 2, 10),
}, []string{LblStore})
}
// Copyright 2023 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package metrics
import (
metricscommon "github.com/pingcap/tidb/pkg/metrics/common"
"github.com/prometheus/client_golang/prometheus"
)
var (
// DistTaskUsedSlotsGauge is the gauge of used slots on executor node.
DistTaskUsedSlotsGauge *prometheus.GaugeVec
)
// InitDistTaskMetrics initializes disttask metrics.
func InitDistTaskMetrics() {
DistTaskUsedSlotsGauge = metricscommon.NewGaugeVec(
prometheus.GaugeOpts{
Namespace: "tidb",
Subsystem: "disttask",
Name: "used_slots",
Help: "Gauge of used slots on a executor node.",
}, []string{"service_scope"})
}
// Copyright 2018 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package metrics
import (
metricscommon "github.com/pingcap/tidb/pkg/metrics/common"
"github.com/prometheus/client_golang/prometheus"
)
// Metrics for the domain package.
var (
// LeaseExpireTime records the lease expire time.
LeaseExpireTime prometheus.Gauge
// LoadSchemaCounter records the counter of load schema.
LoadSchemaCounter *prometheus.CounterVec
// LoadSchemaDuration records the duration of load schema.
LoadSchemaDuration *prometheus.HistogramVec
// InfoCacheCounters are the counters of get/hit.
InfoCacheCounters *prometheus.CounterVec
// InfoCacheCounterGet is the total number of getting entry.
InfoCacheCounterGet = "get"
// InfoCacheCounterHit is the cache hit numbers for get.
InfoCacheCounterHit = "hit"
// LoadPrivilegeCounter records the counter of load privilege.
LoadPrivilegeCounter *prometheus.CounterVec
// LoadSysVarCacheCounter records the counter of loading sysvars
LoadSysVarCacheCounter *prometheus.CounterVec
SchemaValidatorStop = "stop"
SchemaValidatorRestart = "restart"
SchemaValidatorReset = "reset"
SchemaValidatorCacheEmpty = "cache_empty"
SchemaValidatorCacheMiss = "cache_miss"
// HandleSchemaValidate records the counter of handling schema validate.
HandleSchemaValidate *prometheus.CounterVec
)
// InitDomainMetrics initializes domain metrics.
func InitDomainMetrics() {
LeaseExpireTime = metricscommon.NewGauge(
prometheus.GaugeOpts{
Namespace: "tidb",
Subsystem: "domain",
Name: "lease_expire_time",
Help: "When the last time the lease is expired, it is in seconds",
})
LoadSchemaCounter = metricscommon.NewCounterVec(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "domain",
Name: "load_schema_total",
Help: "Counter of load schema",
}, []string{LblType})
LoadSchemaDuration = metricscommon.NewHistogramVec(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "domain",
Name: "load_schema_duration_seconds",
Help: "Bucketed histogram of processing time (s) in load schema.",
Buckets: prometheus.ExponentialBuckets(0.001, 2, 20), // 1ms ~ 524s
}, []string{LblAction})
InfoCacheCounters = metricscommon.NewCounterVec(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "domain",
Name: "infocache_counters",
Help: "Counters of infoCache: get/hit.",
}, []string{LblAction, LblType})
LoadPrivilegeCounter = metricscommon.NewCounterVec(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "domain",
Name: "load_privilege_total",
Help: "Counter of load privilege",
}, []string{LblType})
LoadSysVarCacheCounter = metricscommon.NewCounterVec(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "domain",
Name: "load_sysvarcache_total",
Help: "Counter of load sysvar cache",
}, []string{LblType})
HandleSchemaValidate = metricscommon.NewCounterVec(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "domain",
Name: "handle_schema_validate",
Help: "Counter of handle schema validate",
}, []string{LblType})
}
// Copyright 2018 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package metrics
import (
metricscommon "github.com/pingcap/tidb/pkg/metrics/common"
"github.com/prometheus/client_golang/prometheus"
)
var (
// ExecutorCounter records the number of expensive executors.
ExecutorCounter *prometheus.CounterVec
// StmtNodeCounter records the number of statement with the same type.
StmtNodeCounter *prometheus.CounterVec
// DbStmtNodeCounter records the number of statement with the same type and db.
DbStmtNodeCounter *prometheus.CounterVec
// ExecPhaseDuration records the duration of each execution phase.
ExecPhaseDuration *prometheus.SummaryVec
// OngoingTxnDurationHistogram records the duration of ongoing transactions.
OngoingTxnDurationHistogram *prometheus.HistogramVec
// MppCoordinatorStats records the number of mpp coordinator instances and related events
MppCoordinatorStats *prometheus.GaugeVec
// MppCoordinatorLatency records latencies of mpp coordinator operations.
MppCoordinatorLatency *prometheus.HistogramVec
// AffectedRowsCounter records the number of affected rows.
AffectedRowsCounter *prometheus.CounterVec
// AffectedRowsCounterInsert records the number of insert affected rows.
AffectedRowsCounterInsert prometheus.Counter
// AffectedRowsCounterUpdate records the number of update affected rows.
AffectedRowsCounterUpdate prometheus.Counter
// AffectedRowsCounterDelete records the number of delete affected rows.
AffectedRowsCounterDelete prometheus.Counter
// AffectedRowsCounterReplace records the number of replace affected rows.
AffectedRowsCounterReplace prometheus.Counter
// AffectedRowsCounterNTDMLUpdate records the number of NT-DML update affected rows.
AffectedRowsCounterNTDMLUpdate prometheus.Counter
// AffectedRowsCounterNTDMLDelete records the number of NT-DML delete affected rows.
AffectedRowsCounterNTDMLDelete prometheus.Counter
// AffectedRowsCounterNTDMLInsert records the number of NT-DML insert affected rows.
AffectedRowsCounterNTDMLInsert prometheus.Counter
// AffectedRowsCounterNTDMLReplace records the number of NT-DML replace affected rows.
AffectedRowsCounterNTDMLReplace prometheus.Counter
// NetworkTransmissionStats records the network transmission for queries
NetworkTransmissionStats *prometheus.CounterVec
)
// InitExecutorMetrics initializes excutor metrics.
func InitExecutorMetrics() {
ExecutorCounter = metricscommon.NewCounterVec(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "executor",
Name: "expensive_total",
Help: "Counter of Expensive Executors.",
}, []string{LblType},
)
StmtNodeCounter = metricscommon.NewCounterVec(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "executor",
Name: "statement_total",
Help: "Counter of StmtNode.",
}, []string{LblType, LblDb, LblResourceGroup})
DbStmtNodeCounter = metricscommon.NewCounterVec(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "executor",
Name: "statement_db_total",
Help: "Counter of StmtNode by Database.",
}, []string{LblDb, LblType})
ExecPhaseDuration = metricscommon.NewSummaryVec(
prometheus.SummaryOpts{
Namespace: "tidb",
Subsystem: "executor",
Name: "phase_duration_seconds",
Help: "Summary of each execution phase duration.",
}, []string{LblPhase, LblInternal})
OngoingTxnDurationHistogram = metricscommon.NewHistogramVec(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "executor",
Name: "ongoing_txn_duration_seconds",
Help: "Bucketed histogram of processing time (s) of ongoing transactions.",
Buckets: prometheus.ExponentialBuckets(60, 2, 15), // 60s ~ 273hours
}, []string{LblType})
MppCoordinatorStats = metricscommon.NewGaugeVec(
prometheus.GaugeOpts{
Namespace: "tidb",
Subsystem: "executor",
Name: "mpp_coordinator_stats",
Help: "Mpp Coordinator related stats",
}, []string{LblType})
MppCoordinatorLatency = metricscommon.NewHistogramVec(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "executor",
Name: "mpp_coordinator_latency",
Help: "Bucketed histogram of processing time (ms) of mpp coordinator operations.",
Buckets: prometheus.ExponentialBuckets(0.001, 2, 28), // 1ms ~ 1.5days
}, []string{LblType})
AffectedRowsCounter = metricscommon.NewCounterVec(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "executor",
Name: "affected_rows",
Help: "Counters of server affected rows.",
}, []string{LblSQLType})
AffectedRowsCounterInsert = AffectedRowsCounter.WithLabelValues("Insert")
AffectedRowsCounterUpdate = AffectedRowsCounter.WithLabelValues("Update")
AffectedRowsCounterDelete = AffectedRowsCounter.WithLabelValues("Delete")
AffectedRowsCounterReplace = AffectedRowsCounter.WithLabelValues("Replace")
AffectedRowsCounterNTDMLUpdate = AffectedRowsCounter.WithLabelValues("NTDML-Update")
AffectedRowsCounterNTDMLDelete = AffectedRowsCounter.WithLabelValues("NTDML-Delete")
AffectedRowsCounterNTDMLInsert = AffectedRowsCounter.WithLabelValues("NTDML-Insert")
AffectedRowsCounterNTDMLReplace = AffectedRowsCounter.WithLabelValues("NTDML-Replace")
NetworkTransmissionStats = metricscommon.NewCounterVec(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "executor",
Name: "network_transmission",
Help: "Counter of network transmission bytes.",
}, []string{LblType})
}
// Copyright 2017 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package metrics
import (
metricscommon "github.com/pingcap/tidb/pkg/metrics/common"
"github.com/prometheus/client_golang/prometheus"
"github.com/tikv/client-go/v2/metrics"
)
// Metrics for the GC worker.
var (
GCWorkerCounter *prometheus.CounterVec
GCHistogram *prometheus.HistogramVec
GCConfigGauge *prometheus.GaugeVec
GCJobFailureCounter *prometheus.CounterVec
GCActionRegionResultCounter *prometheus.CounterVec
GCRegionTooManyLocksCounter prometheus.Counter
GCUnsafeDestroyRangeFailuresCounterVec *prometheus.CounterVec
)
// InitGCWorkerMetrics initializes GC worker metrics.
func InitGCWorkerMetrics() {
GCWorkerCounter = metricscommon.NewCounterVec(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "tikvclient",
Name: "gc_worker_actions_total",
Help: "Counter of gc worker actions.",
}, []string{"type"})
GCHistogram = metricscommon.NewHistogramVec(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "tikvclient",
Name: "gc_seconds",
Help: "Bucketed histogram of gc duration.",
Buckets: prometheus.ExponentialBuckets(1, 2, 20), // 1s ~ 6days
}, []string{"stage"})
GCConfigGauge = metricscommon.NewGaugeVec(
prometheus.GaugeOpts{
Namespace: "tidb",
Subsystem: "tikvclient",
Name: "gc_config",
Help: "Gauge of GC configs.",
}, []string{"type"})
GCJobFailureCounter = metricscommon.NewCounterVec(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "tikvclient",
Name: "gc_failure",
Help: "Counter of gc job failure.",
}, []string{"type"})
GCActionRegionResultCounter = metricscommon.NewCounterVec(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "tikvclient",
Name: "gc_action_result",
Help: "Counter of gc action result on region level.",
}, []string{"type"})
GCRegionTooManyLocksCounter = metricscommon.NewCounter(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "tikvclient",
Name: "gc_region_too_many_locks",
Help: "Counter of gc scan lock request more than once in the same region.",
})
}
func init() {
GCUnsafeDestroyRangeFailuresCounterVec = metrics.TiKVUnsafeDestroyRangeFailuresCounterVec
}
// Copyright 2023 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package metrics
import (
metricscommon "github.com/pingcap/tidb/pkg/metrics/common"
"github.com/prometheus/client_golang/prometheus"
)
var (
// GlobalSortWriteToCloudStorageDuration records the duration of writing to cloud storage.
GlobalSortWriteToCloudStorageDuration *prometheus.HistogramVec
// GlobalSortWriteToCloudStorageRate records the rate of writing to cloud storage.
GlobalSortWriteToCloudStorageRate *prometheus.HistogramVec
// GlobalSortReadFromCloudStorageDuration records the duration of reading from cloud storage.
GlobalSortReadFromCloudStorageDuration *prometheus.HistogramVec
// GlobalSortReadFromCloudStorageRate records the rate of reading from cloud storage.
GlobalSortReadFromCloudStorageRate *prometheus.HistogramVec
// GlobalSortIngestWorkerCnt records the working number of ingest workers.
GlobalSortIngestWorkerCnt *prometheus.GaugeVec
// GlobalSortUploadWorkerCount is the gauge of active parallel upload worker count.
GlobalSortUploadWorkerCount prometheus.Gauge
// MergeSortWriteBytes records the bytes written in merge sort.
MergeSortWriteBytes prometheus.Counter
// MergeSortReadBytes records the bytes read in merge sort.
MergeSortReadBytes prometheus.Counter
)
// InitGlobalSortMetrics initializes defines global sort metrics.
func InitGlobalSortMetrics() {
GlobalSortWriteToCloudStorageDuration = metricscommon.NewHistogramVec(prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "global_sort",
Name: "write_to_cloud_storage_duration",
Help: "write to cloud storage duration",
Buckets: prometheus.ExponentialBuckets(0.001, 2, 20), // 1ms ~ 524s
}, []string{LblType})
GlobalSortWriteToCloudStorageRate = metricscommon.NewHistogramVec(prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "global_sort",
Name: "write_to_cloud_storage_rate",
Help: "write to cloud storage rate",
Buckets: prometheus.ExponentialBuckets(0.05, 2, 20),
}, []string{LblType})
GlobalSortReadFromCloudStorageDuration = metricscommon.NewHistogramVec(prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "global_sort",
Name: "read_from_cloud_storage_duration",
Help: "read from cloud storage duration",
Buckets: prometheus.ExponentialBuckets(0.001, 2, 20),
}, []string{LblType})
GlobalSortReadFromCloudStorageRate = metricscommon.NewHistogramVec(prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "global_sort",
Name: "read_from_cloud_storage_rate",
Help: "read from cloud storage rate",
Buckets: prometheus.ExponentialBuckets(0.05, 2, 20),
}, []string{LblType})
GlobalSortIngestWorkerCnt = metricscommon.NewGaugeVec(prometheus.GaugeOpts{
Namespace: "tidb",
Subsystem: "global_sort",
Name: "ingest_worker_cnt",
Help: "ingest worker cnt",
}, []string{LblType})
GlobalSortUploadWorkerCount = metricscommon.NewGauge(
prometheus.GaugeOpts{
Namespace: "tidb",
Subsystem: "global_sort",
Name: "upload_worker_cnt",
Help: "Gauge of active parallel upload worker count.",
},
)
MergeSortWriteBytes = metricscommon.NewCounter(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "global_sort",
Name: "merge_sort_write_bytes",
Help: "Counter of bytes written in merge sort.",
},
)
MergeSortReadBytes = metricscommon.NewCounter(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "global_sort",
Name: "merge_sort_read_bytes",
Help: "Counter of bytes read in merge sort.",
},
)
}
// Copyright 2023 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package metrics
import (
"github.com/pingcap/tidb/pkg/lightning/metric"
"github.com/pingcap/tidb/pkg/util/promutil"
"github.com/prometheus/client_golang/prometheus"
)
const importMetricSubsystem = "import"
// GetRegisteredImportMetrics returns the registered import metrics.
func GetRegisteredImportMetrics(factory promutil.Factory, constLabels prometheus.Labels) *metric.Common {
metrics := metric.NewCommon(factory, TiDB, importMetricSubsystem, constLabels)
metrics.RegisterTo(prometheus.DefaultRegisterer)
return metrics
}
// UnregisterImportMetrics unregisters the registered import metrics.
func UnregisterImportMetrics(metrics *metric.Common) {
metrics.UnregisterFrom(prometheus.DefaultRegisterer)
}
// Copyright 2024 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package metrics
import (
metricscommon "github.com/pingcap/tidb/pkg/metrics/common"
"github.com/prometheus/client_golang/prometheus"
)
var (
// InfoSchemaV2CacheCounter records the counter of infoschema v2 cache hit/miss/evict.
InfoSchemaV2CacheCounter *prometheus.CounterVec
// InfoSchemaV2CacheMemUsage records the memory size of infoschema v2 cache.
InfoSchemaV2CacheMemUsage prometheus.Gauge
// InfoSchemaV2CacheObjCnt records the table count of infoschema v2 cache.
InfoSchemaV2CacheObjCnt prometheus.Gauge
// InfoSchemaV2CacheMemLimit records the memory limit of infoschema v2 cache.
InfoSchemaV2CacheMemLimit prometheus.Gauge
// TableByNameDuration records the duration of TableByName API for infoschema v2.
TableByNameDuration *prometheus.HistogramVec
// TableByNameHitDuration is TableByNameDuration with label type "hit"
TableByNameHitDuration prometheus.Observer
// TableByNameMissDuration is TableByNameDuration with label type "miss"
TableByNameMissDuration prometheus.Observer
)
// InitInfoSchemaV2Metrics intializes infoschema v2 related metrics.
func InitInfoSchemaV2Metrics() {
InfoSchemaV2CacheCounter = metricscommon.NewCounterVec(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "domain",
Name: "infoschema_v2_cache",
Help: "infoschema cache v2 hit, evict and miss number",
}, []string{LblType})
InfoSchemaV2CacheObjCnt = metricscommon.NewGauge(
prometheus.GaugeOpts{
Namespace: "tidb",
Subsystem: "domain",
Name: "infoschema_v2_cache_count",
Help: "infoschema cache v2 table count",
})
InfoSchemaV2CacheMemUsage = metricscommon.NewGauge(
prometheus.GaugeOpts{
Namespace: "tidb",
Subsystem: "domain",
Name: "infoschema_v2_cache_size",
Help: "infoschema cache v2 size",
})
InfoSchemaV2CacheMemLimit = metricscommon.NewGauge(
prometheus.GaugeOpts{
Namespace: "tidb",
Subsystem: "domain",
Name: "infoschema_v2_cache_limit",
Help: "infoschema cache v2 limit",
})
TableByNameDuration = metricscommon.NewHistogramVec(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "infoschema",
Name: "table_by_name_duration_nanoseconds",
Help: "infoschema v2 TableByName API duration",
Buckets: prometheus.ExponentialBuckets(1, 2, 30), // 1us ~ 1,000,000us
}, []string{LblType})
TableByNameHitDuration = TableByNameDuration.WithLabelValues("hit")
TableByNameMissDuration = TableByNameDuration.WithLabelValues("miss")
}
// Copyright 2022 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package metrics
import (
metricscommon "github.com/pingcap/tidb/pkg/metrics/common"
"github.com/prometheus/client_golang/prometheus"
)
// log backup metrics.
// see the `Help` field for details.
var (
LastCheckpoint *prometheus.GaugeVec
AdvancerOwner prometheus.Gauge
AdvancerTickDuration *prometheus.HistogramVec
GetCheckpointBatchSize *prometheus.HistogramVec
RegionCheckpointRequest *prometheus.CounterVec
RegionCheckpointFailure *prometheus.CounterVec
RegionCheckpointSubscriptionEvent *prometheus.HistogramVec
LogBackupCurrentLastRegionID prometheus.Gauge
LogBackupCurrentLastRegionLeaderStoreID prometheus.Gauge
)
// InitLogBackupMetrics initializes log backup metrics.
func InitLogBackupMetrics() {
LastCheckpoint = metricscommon.NewGaugeVec(prometheus.GaugeOpts{
Namespace: "tidb",
Subsystem: "log_backup",
Name: "last_checkpoint",
Help: "The last global checkpoint of log backup.",
}, []string{"task"})
AdvancerOwner = metricscommon.NewGauge(prometheus.GaugeOpts{
Namespace: "tidb",
Subsystem: "log_backup",
Name: "advancer_owner",
Help: "If the node is the owner of advancers, set this to `1`, otherwise `0`.",
ConstLabels: map[string]string{},
})
AdvancerTickDuration = metricscommon.NewHistogramVec(prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "log_backup",
Name: "advancer_tick_duration_sec",
Help: "The time cost of each step during advancer ticking.",
Buckets: prometheus.ExponentialBuckets(0.01, 3.0, 8),
}, []string{"step"})
GetCheckpointBatchSize = metricscommon.NewHistogramVec(prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "log_backup",
Name: "advancer_batch_size",
Help: "The batch size of scanning region or get region checkpoint.",
Buckets: prometheus.ExponentialBuckets(1, 2.0, 12),
}, []string{"type"})
RegionCheckpointRequest = metricscommon.NewCounterVec(prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "log_backup",
Name: "region_request",
Help: "The failure / success stat requesting region checkpoints.",
}, []string{"result"})
RegionCheckpointFailure = metricscommon.NewCounterVec(prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "log_backup",
Name: "region_request_failure",
Help: "The failure reasons of requesting region checkpoints.",
}, []string{"reason"})
RegionCheckpointSubscriptionEvent = metricscommon.NewHistogramVec(prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "log_backup",
Name: "region_checkpoint_event",
Help: "The region flush event size.",
Buckets: prometheus.ExponentialBuckets(8, 2.0, 12),
}, []string{"store"})
LogBackupCurrentLastRegionID = metricscommon.NewGauge(prometheus.GaugeOpts{
Namespace: "tidb",
Subsystem: "log_backup",
Name: "current_last_region_id",
Help: "The id of the region have minimal checkpoint ts in the current running task.",
})
LogBackupCurrentLastRegionLeaderStoreID = metricscommon.NewGauge(prometheus.GaugeOpts{
Namespace: "tidb",
Subsystem: "log_backup",
Name: "current_last_region_leader_store_id",
Help: "The leader's store id of the region have minimal checkpoint ts in the current running task.",
})
}
// Copyright 2018 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package metrics
import (
metricscommon "github.com/pingcap/tidb/pkg/metrics/common"
"github.com/prometheus/client_golang/prometheus"
)
// Metrics
var (
GlobalAutoID = "global"
TableAutoIDAlloc = "alloc"
TableAutoIDRebase = "rebase"
AutoIDHistogram *prometheus.HistogramVec
GetSchemaDiff = "get_schema_diff"
SetSchemaDiff = "set_schema_diff"
GetHistoryDDLJob = "get_history_ddl_job"
MetaHistogram *prometheus.HistogramVec
ResetAutoIDConnCounter prometheus.Counter
)
// InitMetaMetrics initializes meta metrics.
func InitMetaMetrics() {
AutoIDHistogram = metricscommon.NewHistogramVec(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "autoid",
Name: "operation_duration_seconds",
Help: "Bucketed histogram of processing time (s) of handled autoid.",
Buckets: prometheus.ExponentialBuckets(0.0005, 2, 29), // 0.5ms ~ 1.5days
}, []string{LblType, LblResult})
MetaHistogram = metricscommon.NewHistogramVec(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "meta",
Name: "operation_duration_seconds",
Help: "Bucketed histogram of processing time (s) of tidb meta data operations.",
Buckets: prometheus.ExponentialBuckets(0.0005, 2, 29), // 0.5ms ~ 1.5days
}, []string{LblType, LblResult})
ResetAutoIDConnCounter = metricscommon.NewCounter(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "meta",
Name: "autoid_client_conn_reset_total",
Help: "Counter of resetting autoid client connection.",
})
}
// Copyright 2018 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package metrics
import (
"sync"
metricscommon "github.com/pingcap/tidb/pkg/metrics/common"
timermetrics "github.com/pingcap/tidb/pkg/timer/metrics"
"github.com/pingcap/tidb/pkg/util/logutil"
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/collectors"
tikvmetrics "github.com/tikv/client-go/v2/metrics"
"go.uber.org/zap"
)
var (
// PanicCounter measures the count of panics.
PanicCounter *prometheus.CounterVec
// MemoryUsage measures the usage gauge of memory.
MemoryUsage *prometheus.GaugeVec
)
// metrics labels.
const (
LabelSession = "session"
LabelDomain = "domain"
LabelDDLOwner = "ddl-owner"
LabelDDL = "ddl"
LabelDDLWorker = "ddl-worker"
LabelDistReorg = "dist-reorg"
LabelDDLSyncer = "ddl-syncer"
LabelGCWorker = "gcworker"
LabelAnalyze = "analyze"
LabelWorkerPool = "worker-pool"
LabelStats = "stats"
LabelBatchRecvLoop = "batch-recv-loop"
LabelBatchSendLoop = "batch-send-loop"
opSucc = "ok"
opFailed = "err"
TiDB = "tidb"
LabelScope = "scope"
ScopeGlobal = "global"
ScopeSession = "session"
Server = "server"
TiKVClient = "tikvclient"
)
// RetLabel returns "ok" when err == nil and "err" when err != nil.
// This could be useful when you need to observe the operation result.
func RetLabel(err error) string {
if err == nil {
return opSucc
}
return opFailed
}
func init() {
InitMetrics()
}
// InitMetrics is used to initialize metrics.
func InitMetrics() {
InitBindInfoMetrics()
InitDDLMetrics()
InitDistSQLMetrics()
InitDomainMetrics()
InitExecutorMetrics()
InitGCWorkerMetrics()
InitLogBackupMetrics()
InitMetaMetrics()
InitOwnerMetrics()
InitRawKVMetrics()
InitResourceManagerMetrics()
InitServerMetrics()
InitSessionMetrics()
InitSliMetrics()
InitStatsMetrics()
InitTelemetryMetrics()
InitTopSQLMetrics()
InitTTLMetrics()
InitDistTaskMetrics()
InitResourceGroupMetrics()
InitGlobalSortMetrics()
InitInfoSchemaV2Metrics()
timermetrics.InitTimerMetrics()
InitBRMetrics()
PanicCounter = metricscommon.NewCounterVec(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "server",
Name: "panic_total",
Help: "Counter of panic.",
}, []string{LblType})
MemoryUsage = metricscommon.NewGaugeVec(
prometheus.GaugeOpts{
Namespace: "tidb",
Subsystem: "server",
Name: "memory_usage",
Help: "Memory Usage",
}, []string{LblModule, LblType})
}
// RegisterMetrics registers the metrics which are ONLY used in TiDB server.
func RegisterMetrics() {
// use new go collector
prometheus.DefaultRegisterer.Unregister(collectors.NewGoCollector())
prometheus.MustRegister(collectors.NewGoCollector(collectors.WithGoCollectorRuntimeMetrics(collectors.MetricsGC, collectors.MetricsMemory, collectors.MetricsScheduler)))
prometheus.MustRegister(AutoAnalyzeCounter)
prometheus.MustRegister(AutoAnalyzeHistogram)
prometheus.MustRegister(AutoIDHistogram)
prometheus.MustRegister(BatchAddIdxHistogram)
prometheus.MustRegister(CampaignOwnerCounter)
prometheus.MustRegister(ConnGauge)
prometheus.MustRegister(DisconnectionCounter)
prometheus.MustRegister(PreparedStmtGauge)
prometheus.MustRegister(CriticalErrorCounter)
prometheus.MustRegister(DDLCounter)
prometheus.MustRegister(BackfillTotalCounter)
prometheus.MustRegister(BackfillProgressGauge)
prometheus.MustRegister(DDLWorkerHistogram)
prometheus.MustRegister(DDLJobTableDuration)
prometheus.MustRegister(DDLRunningJobCount)
prometheus.MustRegister(DeploySyncerHistogram)
prometheus.MustRegister(DistSQLPartialCountHistogram)
prometheus.MustRegister(DistSQLCoprCacheCounter)
prometheus.MustRegister(DistSQLCoprClosestReadCounter)
prometheus.MustRegister(DistSQLCoprRespBodySize)
prometheus.MustRegister(DistSQLQueryHistogram)
prometheus.MustRegister(DistSQLScanKeysHistogram)
prometheus.MustRegister(DistSQLScanKeysPartialHistogram)
prometheus.MustRegister(ExecuteErrorCounter)
prometheus.MustRegister(ExecutorCounter)
prometheus.MustRegister(GetTokenDurationHistogram)
prometheus.MustRegister(NumOfMultiQueryHistogram)
prometheus.MustRegister(HandShakeErrorCounter)
prometheus.MustRegister(HandleJobHistogram)
prometheus.MustRegister(SyncLoadCounter)
prometheus.MustRegister(SyncLoadTimeoutCounter)
prometheus.MustRegister(SyncLoadDedupCounter)
prometheus.MustRegister(SyncLoadHistogram)
prometheus.MustRegister(ReadStatsHistogram)
prometheus.MustRegister(JobsGauge)
prometheus.MustRegister(LoadPrivilegeCounter)
prometheus.MustRegister(InfoCacheCounters)
prometheus.MustRegister(LeaseExpireTime)
prometheus.MustRegister(LoadSchemaCounter)
prometheus.MustRegister(LoadSchemaDuration)
prometheus.MustRegister(MetaHistogram)
prometheus.MustRegister(NewSessionHistogram)
prometheus.MustRegister(OwnerHandleSyncerHistogram)
prometheus.MustRegister(PanicCounter)
prometheus.MustRegister(PlanCacheCounter)
prometheus.MustRegister(PlanCacheMissCounter)
prometheus.MustRegister(PlanCacheInstanceMemoryUsage)
prometheus.MustRegister(PlanCacheInstancePlanNumCounter)
prometheus.MustRegister(PlanCacheProcessDuration)
prometheus.MustRegister(PseudoEstimation)
prometheus.MustRegister(PacketIOCounter)
prometheus.MustRegister(QueryDurationHistogram)
prometheus.MustRegister(QueryRPCHistogram)
prometheus.MustRegister(QueryProcessedKeyHistogram)
prometheus.MustRegister(QueryTotalCounter)
prometheus.MustRegister(AffectedRowsCounter)
prometheus.MustRegister(SchemaLeaseErrorCounter)
prometheus.MustRegister(ServerEventCounter)
prometheus.MustRegister(SessionExecuteCompileDuration)
prometheus.MustRegister(SessionExecuteParseDuration)
prometheus.MustRegister(SessionExecuteRunDuration)
prometheus.MustRegister(SessionRestrictedSQLCounter)
prometheus.MustRegister(SessionRetry)
prometheus.MustRegister(SessionRetryErrorCounter)
prometheus.MustRegister(StatementPerTransaction)
prometheus.MustRegister(StatsInaccuracyRate)
prometheus.MustRegister(StmtNodeCounter)
prometheus.MustRegister(DbStmtNodeCounter)
prometheus.MustRegister(ExecPhaseDuration)
prometheus.MustRegister(OngoingTxnDurationHistogram)
prometheus.MustRegister(MppCoordinatorStats)
prometheus.MustRegister(MppCoordinatorLatency)
prometheus.MustRegister(TimeJumpBackCounter)
prometheus.MustRegister(TransactionDuration)
prometheus.MustRegister(StatementDeadlockDetectDuration)
prometheus.MustRegister(StatementPessimisticRetryCount)
prometheus.MustRegister(StatementLockKeysCount)
prometheus.MustRegister(ValidateReadTSFromPDCount)
prometheus.MustRegister(UpdateSelfVersionHistogram)
prometheus.MustRegister(WatchOwnerCounter)
prometheus.MustRegister(GCActionRegionResultCounter)
prometheus.MustRegister(GCConfigGauge)
prometheus.MustRegister(GCHistogram)
prometheus.MustRegister(GCJobFailureCounter)
prometheus.MustRegister(GCRegionTooManyLocksCounter)
prometheus.MustRegister(GCWorkerCounter)
prometheus.MustRegister(TotalQueryProcHistogram)
prometheus.MustRegister(TotalCopProcHistogram)
prometheus.MustRegister(TotalCopWaitHistogram)
prometheus.MustRegister(CopMVCCRatioHistogram)
prometheus.MustRegister(HandleSchemaValidate)
prometheus.MustRegister(MaxProcs)
prometheus.MustRegister(GOGC)
prometheus.MustRegister(ConnIdleDurationHistogram)
prometheus.MustRegister(ServerInfo)
prometheus.MustRegister(TokenGauge)
prometheus.MustRegister(ConfigStatus)
prometheus.MustRegister(TiFlashQueryTotalCounter)
prometheus.MustRegister(TiFlashFailedMPPStoreState)
prometheus.MustRegister(SmallTxnWriteDuration)
prometheus.MustRegister(TxnWriteThroughput)
prometheus.MustRegister(LoadSysVarCacheCounter)
prometheus.MustRegister(TopSQLIgnoredCounter)
prometheus.MustRegister(TopSQLReportDurationHistogram)
prometheus.MustRegister(TopSQLReportDataHistogram)
prometheus.MustRegister(PDAPIExecutionHistogram)
prometheus.MustRegister(PDAPIRequestCounter)
prometheus.MustRegister(CPUProfileCounter)
prometheus.MustRegister(ReadFromTableCacheCounter)
prometheus.MustRegister(LoadTableCacheDurationHistogram)
prometheus.MustRegister(NonTransactionalDMLCount)
prometheus.MustRegister(PessimisticDMLDurationByAttempt)
prometheus.MustRegister(ResetAutoIDConnCounter)
prometheus.MustRegister(ResourceGroupQueryTotalCounter)
prometheus.MustRegister(MemoryUsage)
prometheus.MustRegister(StatsCacheCounter)
prometheus.MustRegister(StatsCacheGauge)
prometheus.MustRegister(StatsHealthyGauge)
prometheus.MustRegister(StatsDeltaLoadHistogram)
prometheus.MustRegister(StatsDeltaUpdateHistogram)
prometheus.MustRegister(StatsUsageUpdateHistogram)
prometheus.MustRegister(TxnStatusEnteringCounter)
prometheus.MustRegister(TxnDurationHistogram)
prometheus.MustRegister(LastCheckpoint)
prometheus.MustRegister(AdvancerOwner)
prometheus.MustRegister(AdvancerTickDuration)
prometheus.MustRegister(GetCheckpointBatchSize)
prometheus.MustRegister(RegionCheckpointRequest)
prometheus.MustRegister(RegionCheckpointFailure)
prometheus.MustRegister(AutoIDReqDuration)
prometheus.MustRegister(RegionCheckpointSubscriptionEvent)
prometheus.MustRegister(RCCheckTSWriteConfilictCounter)
prometheus.MustRegister(FairLockingUsageCount)
prometheus.MustRegister(PessimisticLockKeysDuration)
prometheus.MustRegister(MemoryLimit)
prometheus.MustRegister(LogBackupCurrentLastRegionID)
prometheus.MustRegister(LogBackupCurrentLastRegionLeaderStoreID)
prometheus.MustRegister(TTLQueryDuration)
prometheus.MustRegister(TTLProcessedExpiredRowsCounter)
prometheus.MustRegister(TTLJobStatus)
prometheus.MustRegister(TTLTaskStatus)
prometheus.MustRegister(TTLPhaseTime)
prometheus.MustRegister(TTLInsertRowsCount)
prometheus.MustRegister(TTLWatermarkDelay)
prometheus.MustRegister(TTLEventCounter)
prometheus.MustRegister(timermetrics.TimerEventCounter)
prometheus.MustRegister(EMACPUUsageGauge)
prometheus.MustRegister(PoolConcurrencyCounter)
prometheus.MustRegister(HistoricalStatsCounter)
prometheus.MustRegister(PlanReplayerTaskCounter)
prometheus.MustRegister(PlanReplayerRegisterTaskGauge)
prometheus.MustRegister(DistTaskUsedSlotsGauge)
prometheus.MustRegister(RunawayCheckerCounter)
prometheus.MustRegister(GlobalSortWriteToCloudStorageDuration)
prometheus.MustRegister(GlobalSortWriteToCloudStorageRate)
prometheus.MustRegister(GlobalSortReadFromCloudStorageDuration)
prometheus.MustRegister(GlobalSortReadFromCloudStorageRate)
prometheus.MustRegister(GlobalSortIngestWorkerCnt)
prometheus.MustRegister(GlobalSortUploadWorkerCount)
prometheus.MustRegister(AddIndexScanRate)
prometheus.MustRegister(RetryableErrorCount)
prometheus.MustRegister(MergeSortWriteBytes)
prometheus.MustRegister(MergeSortReadBytes)
prometheus.MustRegister(InfoSchemaV2CacheCounter)
prometheus.MustRegister(InfoSchemaV2CacheMemUsage)
prometheus.MustRegister(InfoSchemaV2CacheMemLimit)
prometheus.MustRegister(InfoSchemaV2CacheObjCnt)
prometheus.MustRegister(TableByNameDuration)
prometheus.MustRegister(BindingCacheHitCounter)
prometheus.MustRegister(BindingCacheMissCounter)
prometheus.MustRegister(BindingCacheMemUsage)
prometheus.MustRegister(BindingCacheMemLimit)
prometheus.MustRegister(BindingCacheNumBindings)
prometheus.MustRegister(InternalSessions)
prometheus.MustRegister(ActiveUser)
prometheus.MustRegister(NetworkTransmissionStats)
prometheus.MustRegister(RestoreTableCreatedCount)
prometheus.MustRegister(RestoreImportFileSeconds)
prometheus.MustRegister(RestoreUploadSSTForPiTRSeconds)
prometheus.MustRegister(RestoreUploadSSTMetaForPiTRSeconds)
prometheus.MustRegister(RawKVBatchPutDurationSeconds)
prometheus.MustRegister(RawKVBatchPutBatchSize)
prometheus.MustRegister(MetaKVBatchFiles)
prometheus.MustRegister(MetaKVBatchFilteredKeys)
prometheus.MustRegister(MetaKVBatchKeys)
prometheus.MustRegister(MetaKVBatchSize)
prometheus.MustRegister(KVApplyBatchDuration)
prometheus.MustRegister(KVApplyBatchFiles)
prometheus.MustRegister(KVApplyBatchRegions)
prometheus.MustRegister(KVApplyBatchSize)
prometheus.MustRegister(KVApplyRegionFiles)
tikvmetrics.InitMetricsWithConstLabels(TiDB, TiKVClient, metricscommon.GetConstLabels())
tikvmetrics.RegisterMetrics()
tikvmetrics.TiKVPanicCounter = PanicCounter // reset tidb metrics for tikv metrics
}
var mode struct {
sync.Mutex
isSimplified bool
}
// ToggleSimplifiedMode is used to register/unregister the metrics that unused by grafana.
func ToggleSimplifiedMode(simplified bool) {
var unusedMetricsByGrafana = []prometheus.Collector{
StatementDeadlockDetectDuration,
ValidateReadTSFromPDCount,
LoadTableCacheDurationHistogram,
TxnWriteThroughput,
SmallTxnWriteDuration,
InfoCacheCounters,
ReadFromTableCacheCounter,
TiFlashQueryTotalCounter,
TiFlashFailedMPPStoreState,
CampaignOwnerCounter,
NonTransactionalDMLCount,
MemoryUsage,
TokenGauge,
tikvmetrics.TiKVRawkvSizeHistogram,
tikvmetrics.TiKVRawkvCmdHistogram,
tikvmetrics.TiKVReadThroughput,
tikvmetrics.TiKVSmallReadDuration,
tikvmetrics.TiKVBatchWaitOverLoad,
tikvmetrics.TiKVBatchClientRecycle,
tikvmetrics.TiKVRequestRetryTimesHistogram,
tikvmetrics.TiKVStatusDuration,
}
mode.Lock()
defer mode.Unlock()
if mode.isSimplified == simplified {
return
}
mode.isSimplified = simplified
if simplified {
for _, m := range unusedMetricsByGrafana {
prometheus.Unregister(m)
}
} else {
for _, m := range unusedMetricsByGrafana {
err := prometheus.Register(m)
if err != nil {
logutil.BgLogger().Error("cannot register metrics", zap.Error(err))
break
}
}
}
}
// Copyright 2018 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package metrics
import (
metricscommon "github.com/pingcap/tidb/pkg/metrics/common"
"github.com/prometheus/client_golang/prometheus"
)
// Metrics
var (
NewSessionHistogram *prometheus.HistogramVec
WatcherClosed = "watcher_closed"
Cancelled = "cancelled"
Deleted = "deleted"
PutValue = "put_value"
SessionDone = "session_done"
CtxDone = "context_done"
WatchOwnerCounter *prometheus.CounterVec
NoLongerOwner = "no_longer_owner"
CampaignOwnerCounter *prometheus.CounterVec
)
// InitOwnerMetrics initializes owner metrics.
func InitOwnerMetrics() {
NewSessionHistogram = metricscommon.NewHistogramVec(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "owner",
Name: "new_session_duration_seconds",
Help: "Bucketed histogram of processing time (s) of new session.",
Buckets: prometheus.ExponentialBuckets(0.0005, 2, 22), // 0.5ms ~ 1048s
}, []string{LblType, LblResult})
WatchOwnerCounter = metricscommon.NewCounterVec(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "owner",
Name: "watch_owner_total",
Help: "Counter of watch owner.",
}, []string{LblType, LblResult})
CampaignOwnerCounter = metricscommon.NewCounterVec(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "owner",
Name: "campaign_owner_total",
Help: "Counter of campaign owner.",
}, []string{LblType, LblResult})
}
// Copyright 2025 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package metrics
import "github.com/prometheus/client_golang/prometheus"
var (
// RawKVBatchPutDurationSeconds records the time cost for batch put
RawKVBatchPutDurationSeconds *prometheus.HistogramVec
// RawKVBatchPutBatchSize records the number of kv entries in the batch put
RawKVBatchPutBatchSize *prometheus.HistogramVec
)
// InitRawKVMetrics initializes all metrics in rawkv.
func InitRawKVMetrics() {
RawKVBatchPutDurationSeconds = prometheus.NewHistogramVec(prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "rawkv",
Name: "rawkv_batch_put_duration_seconds",
Help: "The time cost batch put kvs",
Buckets: prometheus.ExponentialBuckets(0.001, 2, 17), // 1ms ~ 1min
}, []string{"cf"})
RawKVBatchPutBatchSize = prometheus.NewHistogramVec(prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "rawkv",
Name: "rawkv_batch_put_batch_size",
Help: "Number of kv entries in the batch put",
Buckets: prometheus.ExponentialBuckets(1, 2, 9), // 1 ~ 256
}, []string{"cf"})
}
// Copyright 2023 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package metrics
import (
metricscommon "github.com/pingcap/tidb/pkg/metrics/common"
"github.com/prometheus/client_golang/prometheus"
)
// Metrics
// Query duration by query is QueryDurationHistogram in `server.go`.
var (
RunawayCheckerCounter *prometheus.CounterVec
)
// InitResourceGroupMetrics initializes resource group metrics.
func InitResourceGroupMetrics() {
RunawayCheckerCounter = metricscommon.NewCounterVec(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "server",
Name: "query_runaway_check",
Help: "Counter of query triggering runaway check.",
}, []string{LblResourceGroup, LblType, LblAction})
}
// Copyright 2022 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package metrics
import (
metricscommon "github.com/pingcap/tidb/pkg/metrics/common"
"github.com/prometheus/client_golang/prometheus"
)
var (
// EMACPUUsageGauge means exponential moving average of CPU usage
EMACPUUsageGauge prometheus.Gauge
// PoolConcurrencyCounter means how much concurrency in the pool
PoolConcurrencyCounter *prometheus.GaugeVec
)
// InitResourceManagerMetrics initializes resource manager metrics.
func InitResourceManagerMetrics() {
EMACPUUsageGauge = metricscommon.NewGauge(prometheus.GaugeOpts{
Namespace: "tidb",
Subsystem: "rm",
Name: "ema_cpu_usage",
Help: "exponential moving average of CPU usage",
})
PoolConcurrencyCounter = metricscommon.NewGaugeVec(
prometheus.GaugeOpts{
Namespace: "tidb",
Subsystem: "rm",
Name: "pool_concurrency",
Help: "How many concurrency in the pool",
}, []string{LblType})
}
// Copyright 2018 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package metrics
import (
"github.com/pingcap/errors"
metricscommon "github.com/pingcap/tidb/pkg/metrics/common"
"github.com/pingcap/tidb/pkg/parser/terror"
"github.com/prometheus/client_golang/prometheus"
)
var (
// ResettablePlanCacheCounterFortTest be used to support reset counter in test.
ResettablePlanCacheCounterFortTest = false
)
// Metrics
var (
PacketIOCounter *prometheus.CounterVec
QueryDurationHistogram *prometheus.HistogramVec
QueryRPCHistogram *prometheus.HistogramVec
QueryProcessedKeyHistogram *prometheus.HistogramVec
QueryTotalCounter *prometheus.CounterVec
ConnGauge *prometheus.GaugeVec
DisconnectionCounter *prometheus.CounterVec
PreparedStmtGauge prometheus.Gauge
ExecuteErrorCounter *prometheus.CounterVec
CriticalErrorCounter prometheus.Counter
ServerStart = "server-start"
ServerStop = "server-stop"
// Eventkill occurs when the server.Kill() function is called.
EventKill = "kill"
ServerEventCounter *prometheus.CounterVec
TimeJumpBackCounter prometheus.Counter
PlanCacheCounter *prometheus.CounterVec
PlanCacheMissCounter *prometheus.CounterVec
PlanCacheInstanceMemoryUsage *prometheus.GaugeVec
PlanCacheInstancePlanNumCounter *prometheus.GaugeVec
PlanCacheProcessDuration *prometheus.HistogramVec
ReadFromTableCacheCounter prometheus.Counter
HandShakeErrorCounter prometheus.Counter
GetTokenDurationHistogram prometheus.Histogram
NumOfMultiQueryHistogram prometheus.Histogram
TotalQueryProcHistogram *prometheus.HistogramVec
TotalCopProcHistogram *prometheus.HistogramVec
TotalCopWaitHistogram *prometheus.HistogramVec
CopMVCCRatioHistogram *prometheus.HistogramVec
MaxProcs prometheus.Gauge
GOGC prometheus.Gauge
ConnIdleDurationHistogram *prometheus.HistogramVec
ServerInfo *prometheus.GaugeVec
TokenGauge prometheus.Gauge
ConfigStatus *prometheus.GaugeVec
TiFlashQueryTotalCounter *prometheus.CounterVec
TiFlashFailedMPPStoreState *prometheus.GaugeVec
PDAPIExecutionHistogram *prometheus.HistogramVec
PDAPIRequestCounter *prometheus.CounterVec
CPUProfileCounter prometheus.Counter
LoadTableCacheDurationHistogram prometheus.Histogram
RCCheckTSWriteConfilictCounter *prometheus.CounterVec
MemoryLimit prometheus.Gauge
InternalSessions prometheus.Gauge
ActiveUser prometheus.Gauge
)
// InitServerMetrics initializes server metrics.
func InitServerMetrics() {
PacketIOCounter = metricscommon.NewCounterVec(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "server",
Name: "packet_io_bytes",
Help: "Counters of packet IO bytes.",
}, []string{LblType})
QueryDurationHistogram = metricscommon.NewHistogramVec(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "server",
Name: "handle_query_duration_seconds",
Help: "Bucketed histogram of processing time (s) of handled queries.",
Buckets: prometheus.ExponentialBuckets(0.0005, 2, 29), // 0.5ms ~ 1.5days
}, []string{LblSQLType, LblDb, LblResourceGroup})
QueryRPCHistogram = metricscommon.NewHistogramVec(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "server",
Name: "query_statement_rpc_count",
Help: "Bucketed histogram of execution rpc count of handled query statements.",
Buckets: prometheus.ExponentialBuckets(1, 1.5, 23), // 1 ~ 8388608
}, []string{LblSQLType, LblDb})
QueryProcessedKeyHistogram = metricscommon.NewHistogramVec(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "server",
Name: "query_statement_processed_keys",
Help: "Bucketed histogram of processed key count during the scan of handled query statements.",
Buckets: prometheus.ExponentialBuckets(1, 2, 32),
}, []string{LblSQLType, LblDb})
QueryTotalCounter = metricscommon.NewCounterVec(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "server",
Name: "query_total",
Help: "Counter of queries.",
}, []string{LblType, LblResult, LblResourceGroup})
ConnGauge = metricscommon.NewGaugeVec(
prometheus.GaugeOpts{
Namespace: "tidb",
Subsystem: "server",
Name: "connections",
Help: "Number of connections.",
}, []string{LblResourceGroup})
DisconnectionCounter = metricscommon.NewCounterVec(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "server",
Name: "disconnection_total",
Help: "Counter of connections disconnected.",
}, []string{LblResult})
PreparedStmtGauge = metricscommon.NewGauge(prometheus.GaugeOpts{
Namespace: "tidb",
Subsystem: "server",
Name: "prepared_stmts",
Help: "number of prepared statements.",
})
ExecuteErrorCounter = metricscommon.NewCounterVec(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "server",
Name: "execute_error_total",
Help: "Counter of execute errors.",
}, []string{LblType, LblDb, LblResourceGroup})
CriticalErrorCounter = metricscommon.NewCounter(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "server",
Name: "critical_error_total",
Help: "Counter of critical errors.",
})
ServerEventCounter = metricscommon.NewCounterVec(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "server",
Name: "event_total",
Help: "Counter of tidb-server event.",
}, []string{LblType})
TimeJumpBackCounter = metricscommon.NewCounter(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "monitor",
Name: "time_jump_back_total",
Help: "Counter of system time jumps backward.",
})
PlanCacheCounter = metricscommon.NewCounterVec(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "server",
Name: "plan_cache_total",
Help: "Counter of query using plan cache.",
}, []string{LblType})
PlanCacheMissCounter = metricscommon.NewCounterVec(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "server",
Name: "plan_cache_miss_total",
Help: "Counter of plan cache miss.",
}, []string{LblType})
PlanCacheInstanceMemoryUsage = metricscommon.NewGaugeVec(
prometheus.GaugeOpts{
Namespace: "tidb",
Subsystem: "server",
Name: "plan_cache_instance_memory_usage",
Help: "Total plan cache memory usage of all sessions in a instance",
}, []string{LblType})
PlanCacheInstancePlanNumCounter = metricscommon.NewGaugeVec(
prometheus.GaugeOpts{
Namespace: "tidb",
Subsystem: "server",
Name: "plan_cache_instance_plan_num_total",
Help: "Counter of plan of all prepared plan cache in a instance",
}, []string{LblType})
PlanCacheProcessDuration = metricscommon.NewHistogramVec(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "server",
Name: "plan_cache_process_duration_seconds",
Help: "Bucketed histogram of processing time (s) of plan cache operations.",
Buckets: prometheus.ExponentialBuckets(0.001, 2, 28), // 1ms ~ 1.5days
}, []string{LblType})
ReadFromTableCacheCounter = metricscommon.NewCounter(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "server",
Name: "read_from_tablecache_total",
Help: "Counter of query read from table cache.",
},
)
HandShakeErrorCounter = metricscommon.NewCounter(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "server",
Name: "handshake_error_total",
Help: "Counter of hand shake error.",
},
)
GetTokenDurationHistogram = metricscommon.NewHistogram(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "server",
Name: "get_token_duration_seconds",
Help: "Duration (us) for getting token, it should be small until concurrency limit is reached.",
Buckets: prometheus.ExponentialBuckets(1, 2, 30), // 1us ~ 528s
})
NumOfMultiQueryHistogram = metricscommon.NewHistogram(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "server",
Name: "multi_query_num",
Help: "The number of queries contained in a multi-query statement.",
Buckets: prometheus.ExponentialBuckets(1, 2, 20), // 1 ~ 1048576
})
TotalQueryProcHistogram = metricscommon.NewHistogramVec(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "server",
Name: "slow_query_process_duration_seconds",
Help: "Bucketed histogram of processing time (s) of of slow queries.",
Buckets: prometheus.ExponentialBuckets(0.001, 2, 28), // 1ms ~ 1.5days
}, []string{LblSQLType})
TotalCopProcHistogram = metricscommon.NewHistogramVec(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "server",
Name: "slow_query_cop_duration_seconds",
Help: "Bucketed histogram of all cop processing time (s) of of slow queries.",
Buckets: prometheus.ExponentialBuckets(0.001, 2, 28), // 1ms ~ 1.5days
}, []string{LblSQLType})
TotalCopWaitHistogram = metricscommon.NewHistogramVec(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "server",
Name: "slow_query_wait_duration_seconds",
Help: "Bucketed histogram of all cop waiting time (s) of of slow queries.",
Buckets: prometheus.ExponentialBuckets(0.001, 2, 28), // 1ms ~ 1.5days
}, []string{LblSQLType})
CopMVCCRatioHistogram = metricscommon.NewHistogramVec(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "server",
Name: "slow_query_cop_mvcc_ratio",
Help: "Bucketed histogram of all cop total keys / processed keys in slow queries.",
Buckets: prometheus.ExponentialBuckets(0.5, 2, 21), // 0.5 ~ 262144
}, []string{LblSQLType})
MaxProcs = metricscommon.NewGauge(
prometheus.GaugeOpts{
Namespace: "tidb",
Subsystem: "server",
Name: "maxprocs",
Help: "The value of GOMAXPROCS.",
})
GOGC = metricscommon.NewGauge(
prometheus.GaugeOpts{
Namespace: "tidb",
Subsystem: "server",
Name: "gogc",
Help: "The value of GOGC",
})
ConnIdleDurationHistogram = metricscommon.NewHistogramVec(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "server",
Name: "conn_idle_duration_seconds",
Help: "Bucketed histogram of connection idle time (s).",
Buckets: prometheus.ExponentialBuckets(0.0005, 2, 29), // 0.5ms ~ 1.5days
}, []string{LblInTxn})
ServerInfo = metricscommon.NewGaugeVec(
prometheus.GaugeOpts{
Namespace: "tidb",
Subsystem: "server",
Name: "info",
Help: "Indicate the tidb server info, and the value is the start timestamp (s).",
}, []string{LblVersion, LblHash})
TokenGauge = metricscommon.NewGauge(
prometheus.GaugeOpts{
Namespace: "tidb",
Subsystem: "server",
Name: "tokens",
Help: "The number of concurrent executing session",
},
)
ConfigStatus = metricscommon.NewGaugeVec(
prometheus.GaugeOpts{
Namespace: "tidb",
Subsystem: "config",
Name: "status",
Help: "Status of the TiDB server configurations.",
}, []string{LblType})
TiFlashQueryTotalCounter = metricscommon.NewCounterVec(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "server",
Name: "tiflash_query_total",
Help: "Counter of TiFlash queries.",
}, []string{LblType, LblResult})
TiFlashFailedMPPStoreState = metricscommon.NewGaugeVec(
prometheus.GaugeOpts{
Namespace: "tidb",
Subsystem: "server",
Name: "tiflash_failed_store",
Help: "Statues of failed tiflash mpp store,-1 means detector heartbeat,0 means reachable,1 means abnormal.",
}, []string{LblAddress})
PDAPIExecutionHistogram = metricscommon.NewHistogramVec(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "server",
Name: "pd_api_execution_duration_seconds",
Help: "Bucketed histogram of all pd api execution time (s)",
Buckets: prometheus.ExponentialBuckets(0.001, 2, 20), // 1ms ~ 524s
}, []string{LblType})
PDAPIRequestCounter = metricscommon.NewCounterVec(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "server",
Name: "pd_api_request_total",
Help: "Counter of the pd http api requests",
}, []string{LblType, LblResult})
CPUProfileCounter = metricscommon.NewCounter(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "server",
Name: "cpu_profile_total",
Help: "Counter of cpu profiling",
})
LoadTableCacheDurationHistogram = metricscommon.NewHistogram(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "server",
Name: "load_table_cache_seconds",
Help: "Duration (us) for loading table cache.",
Buckets: prometheus.ExponentialBuckets(1, 2, 30), // 1us ~ 528s
})
RCCheckTSWriteConfilictCounter = metricscommon.NewCounterVec(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "server",
Name: "rc_check_ts_conflict_total",
Help: "Counter of WriteConflict caused by RCCheckTS.",
}, []string{LblType})
MemoryLimit = metricscommon.NewGauge(
prometheus.GaugeOpts{
Namespace: "tidb",
Subsystem: "server",
Name: "memory_quota_bytes",
Help: "The value of memory quota bytes.",
})
InternalSessions = metricscommon.NewGauge(
prometheus.GaugeOpts{
Namespace: "tidb",
Subsystem: "server",
Name: "internal_sessions",
Help: "The total count of internal sessions.",
})
ActiveUser = metricscommon.NewGauge(
prometheus.GaugeOpts{
Namespace: "tidb",
Subsystem: "server",
Name: "active_users",
Help: "The total count of active user.",
})
}
// ExecuteErrorToLabel converts an execute error to label.
func ExecuteErrorToLabel(err error) string {
err = errors.Cause(err)
switch x := err.(type) {
case *terror.Error:
return string(x.RFCCode())
default:
return "unknown"
}
}
// Copyright 2018 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package metrics
import (
metricscommon "github.com/pingcap/tidb/pkg/metrics/common"
"github.com/prometheus/client_golang/prometheus"
)
// Session metrics.
var (
AutoIDReqDuration prometheus.Histogram
SessionExecuteParseDuration *prometheus.HistogramVec
SessionExecuteCompileDuration *prometheus.HistogramVec
SessionExecuteRunDuration *prometheus.HistogramVec
SchemaLeaseErrorCounter *prometheus.CounterVec
SessionRetry *prometheus.HistogramVec
SessionRetryErrorCounter *prometheus.CounterVec
SessionRestrictedSQLCounter prometheus.Counter
StatementPerTransaction *prometheus.HistogramVec
TransactionDuration *prometheus.HistogramVec
StatementDeadlockDetectDuration prometheus.Histogram
StatementPessimisticRetryCount prometheus.Histogram
StatementLockKeysCount prometheus.Histogram
ValidateReadTSFromPDCount prometheus.Counter
NonTransactionalDMLCount *prometheus.CounterVec
TxnStatusEnteringCounter *prometheus.CounterVec
TxnDurationHistogram *prometheus.HistogramVec
LazyPessimisticUniqueCheckSetCount prometheus.Counter
PessimisticDMLDurationByAttempt *prometheus.HistogramVec
ResourceGroupQueryTotalCounter *prometheus.CounterVec
FairLockingUsageCount *prometheus.CounterVec
PessimisticLockKeysDuration prometheus.Histogram
)
// InitSessionMetrics initializes session metrics.
func InitSessionMetrics() {
AutoIDReqDuration = metricscommon.NewHistogram(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "meta",
Name: "autoid_duration_seconds",
Help: "Bucketed histogram of processing time (s) in parse SQL.",
Buckets: prometheus.ExponentialBuckets(0.00004, 2, 28), // 40us ~ 1.5h
})
SessionExecuteParseDuration = metricscommon.NewHistogramVec(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "session",
Name: "parse_duration_seconds",
Help: "Bucketed histogram of processing time (s) in parse SQL.",
Buckets: prometheus.ExponentialBuckets(0.00004, 2, 28), // 40us ~ 1.5h
}, []string{LblSQLType})
SessionExecuteCompileDuration = metricscommon.NewHistogramVec(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "session",
Name: "compile_duration_seconds",
Help: "Bucketed histogram of processing time (s) in query optimize.",
// Build plan may execute the statement, or allocate table ID, so it might take a long time.
Buckets: prometheus.ExponentialBuckets(0.00004, 2, 28), // 40us ~ 1.5h
}, []string{LblSQLType})
SessionExecuteRunDuration = metricscommon.NewHistogramVec(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "session",
Name: "execute_duration_seconds",
Help: "Bucketed histogram of processing time (s) in running executor.",
Buckets: prometheus.ExponentialBuckets(0.0001, 2, 30), // 100us ~ 15h
}, []string{LblSQLType})
SchemaLeaseErrorCounter = metricscommon.NewCounterVec(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "session",
Name: "schema_lease_error_total",
Help: "Counter of schema lease error",
}, []string{LblType})
SessionRetry = metricscommon.NewHistogramVec(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "session",
Name: "retry_num",
Help: "Bucketed histogram of session retry count.",
Buckets: prometheus.LinearBuckets(0, 1, 21), // 0 ~ 20
}, []string{LblScope})
SessionRetryErrorCounter = metricscommon.NewCounterVec(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "session",
Name: "retry_error_total",
Help: "Counter of session retry error.",
}, []string{LblSQLType, LblType})
SessionRestrictedSQLCounter = metricscommon.NewCounter(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "session",
Name: "restricted_sql_total",
Help: "Counter of internal restricted sql.",
})
StatementPerTransaction = metricscommon.NewHistogramVec(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "session",
Name: "transaction_statement_num",
Help: "Bucketed histogram of statements count in each transaction.",
Buckets: prometheus.ExponentialBuckets(1, 2, 16), // 1 ~ 32768
}, []string{LblTxnMode, LblType, LblScope})
TransactionDuration = metricscommon.NewHistogramVec(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "session",
Name: "transaction_duration_seconds",
Help: "Bucketed histogram of a transaction execution duration, including retry.",
Buckets: prometheus.ExponentialBuckets(0.001, 2, 28), // 1ms ~ 1.5days
}, []string{LblTxnMode, LblType, LblScope})
StatementDeadlockDetectDuration = metricscommon.NewHistogram(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "session",
Name: "statement_deadlock_detect_duration_seconds",
Help: "Bucketed histogram of a statement deadlock detect duration.",
Buckets: prometheus.ExponentialBuckets(0.001, 2, 28), // 1ms ~ 1.5days
},
)
StatementPessimisticRetryCount = metricscommon.NewHistogram(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "session",
Name: "statement_pessimistic_retry_count",
Help: "Bucketed histogram of statement pessimistic retry count",
Buckets: prometheus.ExponentialBuckets(1, 2, 16), // 1 ~ 32768
})
StatementLockKeysCount = metricscommon.NewHistogram(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "session",
Name: "statement_lock_keys_count",
Help: "Keys locking for a single statement",
Buckets: prometheus.ExponentialBuckets(1, 2, 21), // 1 ~ 1048576
})
ValidateReadTSFromPDCount = metricscommon.NewCounter(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "session",
Name: "validate_read_ts_from_pd_count",
Help: "Counter of validating read ts by getting a timestamp from PD",
})
NonTransactionalDMLCount = metricscommon.NewCounterVec(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "session",
Name: "non_transactional_dml_count",
Help: "Counter of non-transactional delete",
}, []string{LblType},
)
TxnStatusEnteringCounter = metricscommon.NewCounterVec(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "session",
Name: "txn_state_entering_count",
Help: "How many times transactions enter this state",
}, []string{LblType},
)
TxnDurationHistogram = metricscommon.NewHistogramVec(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "session",
Name: "txn_state_seconds",
Help: "Bucketed histogram of different states of a transaction.",
Buckets: prometheus.ExponentialBuckets(0.0005, 2, 29), // 0.5ms ~ 1.5days
}, []string{LblType, LblHasLock})
LazyPessimisticUniqueCheckSetCount = metricscommon.NewCounter(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "session",
Name: "lazy_pessimistic_unique_check_set_count",
Help: "Counter of setting tidb_constraint_check_in_place to false, note that it doesn't count the default value set by tidb config",
},
)
PessimisticDMLDurationByAttempt = metricscommon.NewHistogramVec(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "session",
Name: "transaction_pessimistic_dml_duration_by_attempt",
Help: "Bucketed histogram of duration of pessimistic DMLs, distinguished by first attempt and retries",
Buckets: prometheus.ExponentialBuckets(0.001, 2, 28), // 1ms ~ 1.5days
}, []string{LblType, LblPhase})
ResourceGroupQueryTotalCounter = metricscommon.NewCounterVec(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "session",
Name: "resource_group_query_total",
Help: "Counter of the total number of queries for the resource group",
}, []string{LblName, LblResourceGroup})
FairLockingUsageCount = metricscommon.NewCounterVec(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "session",
Name: "transaction_fair_locking_usage",
Help: "The counter of statements and transactions in which fair locking is used or takes effect",
}, []string{LblType})
// Moved from client-go module to tidb, to keep consistency with history versions, keep the subsystem name "tikvclient"
PessimisticLockKeysDuration = metricscommon.NewHistogram(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "tikvclient",
Name: "pessimistic_lock_keys_duration",
Buckets: prometheus.ExponentialBuckets(0.001, 2, 19), // 1ms ~ 262s, The default value of innodb_lock_wait_timeout is 50s
Help: "tidb txn pessimistic lock keys duration",
})
}
// Label constants.
const (
LblUnretryable = "unretryable"
LblReachMax = "reach_max"
LblOK = "ok"
LblError = "error"
LblCommit = "commit"
LblAbort = "abort"
LblRollback = "rollback"
LblType = "type"
LblDb = "db"
LblResult = "result"
LblSQLType = "sql_type"
LblCoprType = "copr_type"
LblGeneral = "general"
LblInternal = "internal"
LblTxnMode = "txn_mode"
LblPessimistic = "pessimistic"
LblOptimistic = "optimistic"
LblStore = "store"
LblAddress = "address"
LblBatchGet = "batch_get"
LblGet = "get"
LblLockKeys = "lock_keys"
LblInTxn = "in_txn"
LblVersion = "version"
LblHash = "hash"
LblCTEType = "cte_type"
LblAccountLock = "account_lock"
LblIdle = "idle"
LblRunning = "executing_sql"
LblLockWaiting = "waiting_for_lock"
LblCommitting = "committing"
LblRollingBack = "rolling_back"
LblHasLock = "has_lock"
LblPhase = "phase"
LblModule = "module"
LblRCReadCheckTS = "read_check"
LblRCWriteCheckTS = "write_check"
LblResourceGroup = "resource_group"
LblName = "name"
LblFairLockingTxnUsed = "txn-used"
LblFairLockingTxnEffective = "txn-effective"
LblFairLockingStmtUsed = "stmt-used"
LblFairLockingStmtEffective = "stmt-effective"
LblScope = "scope"
)
// Copyright 2021 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package metrics
import (
metricscommon "github.com/pingcap/tidb/pkg/metrics/common"
"github.com/prometheus/client_golang/prometheus"
)
var (
// SmallTxnWriteDuration uses to collect small transaction write duration.
SmallTxnWriteDuration prometheus.Histogram
// TxnWriteThroughput uses to collect transaction write throughput which transaction is not small.
TxnWriteThroughput prometheus.Histogram
)
// InitSliMetrics initializes sli metrics.
func InitSliMetrics() {
SmallTxnWriteDuration = metricscommon.NewHistogram(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "sli",
Name: "small_txn_write_duration_seconds",
Help: "Bucketed histogram of small transaction write time (s).",
Buckets: prometheus.ExponentialBuckets(0.001, 2, 28), // 1ms ~ 74h
})
TxnWriteThroughput = metricscommon.NewHistogram(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "sli",
Name: "txn_write_throughput",
Help: "Bucketed histogram of transaction write throughput (bytes/second).",
Buckets: prometheus.ExponentialBuckets(64, 1.3, 40), // 64 bytes/s ~ 2.3MB/s
})
}
// Copyright 2018 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package metrics
import (
metricscommon "github.com/pingcap/tidb/pkg/metrics/common"
"github.com/prometheus/client_golang/prometheus"
)
// Stats metrics.
var (
AutoAnalyzeHistogram prometheus.Histogram
AutoAnalyzeCounter *prometheus.CounterVec
StatsInaccuracyRate prometheus.Histogram
PseudoEstimation *prometheus.CounterVec
SyncLoadCounter prometheus.Counter
SyncLoadTimeoutCounter prometheus.Counter
SyncLoadDedupCounter prometheus.Counter
SyncLoadHistogram prometheus.Histogram
ReadStatsHistogram prometheus.Histogram
StatsCacheCounter *prometheus.CounterVec
StatsCacheGauge *prometheus.GaugeVec
StatsHealthyGauge *prometheus.GaugeVec
StatsDeltaLoadHistogram prometheus.Histogram
StatsDeltaUpdateHistogram prometheus.Histogram
StatsUsageUpdateHistogram prometheus.Histogram
HistoricalStatsCounter *prometheus.CounterVec
PlanReplayerTaskCounter *prometheus.CounterVec
PlanReplayerRegisterTaskGauge prometheus.Gauge
)
// InitStatsMetrics initializes stats metrics.
func InitStatsMetrics() {
AutoAnalyzeHistogram = metricscommon.NewHistogram(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "statistics",
Name: "auto_analyze_duration_seconds",
Help: "Bucketed histogram of processing time (s) of auto analyze.",
Buckets: prometheus.ExponentialBuckets(0.01, 2, 24), // 10ms ~ 24h
})
AutoAnalyzeCounter = metricscommon.NewCounterVec(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "statistics",
Name: "auto_analyze_total",
Help: "Counter of auto analyze.",
}, []string{LblType})
StatsInaccuracyRate = metricscommon.NewHistogram(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "statistics",
Name: "stats_inaccuracy_rate",
Help: "Bucketed histogram of stats inaccuracy rate.",
Buckets: prometheus.ExponentialBuckets(0.01, 2, 14),
})
PseudoEstimation = metricscommon.NewCounterVec(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "statistics",
Name: "pseudo_estimation_total",
Help: "Counter of pseudo estimation caused by outdated stats.",
}, []string{LblType})
SyncLoadCounter = metricscommon.NewCounter(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "statistics",
Name: "sync_load_total",
Help: "Counter of sync load.",
})
SyncLoadTimeoutCounter = metricscommon.NewCounter(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "statistics",
Name: "sync_load_timeout_total",
Help: "Counter of sync load timeout.",
})
SyncLoadDedupCounter = metricscommon.NewCounter(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "statistics",
Name: "sync_load_dedup_total",
Help: "Counter of deduplicated sync load.",
})
SyncLoadHistogram = metricscommon.NewHistogram(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "statistics",
Name: "sync_load_latency_millis",
Help: "Bucketed histogram of latency time (ms) of sync load.",
Buckets: prometheus.ExponentialBuckets(1, 2, 22), // 1ms ~ 1h
})
ReadStatsHistogram = metricscommon.NewHistogram(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "statistics",
Name: "read_stats_latency_millis",
Help: "Bucketed histogram of latency time (ms) of stats read during sync-load.",
Buckets: prometheus.ExponentialBuckets(1, 2, 22), // 1ms ~ 1h
})
StatsHealthyGauge = metricscommon.NewGaugeVec(prometheus.GaugeOpts{
Namespace: "tidb",
Subsystem: "statistics",
Name: "stats_healthy",
Help: "Gauge of stats healthy",
}, []string{LblType})
HistoricalStatsCounter = metricscommon.NewCounterVec(prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "statistics",
Name: "historical_stats",
Help: "counter of the historical stats operation",
}, []string{LblType, LblResult})
PlanReplayerTaskCounter = metricscommon.NewCounterVec(prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "plan_replayer",
Name: "task",
Help: "counter of plan replayer captured task",
}, []string{LblType, LblResult})
PlanReplayerRegisterTaskGauge = metricscommon.NewGauge(prometheus.GaugeOpts{
Namespace: "tidb",
Subsystem: "plan_replayer",
Name: "register_task",
Help: "gauge of plan replayer registered task",
})
StatsDeltaLoadHistogram = metricscommon.NewHistogram(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "statistics",
Name: "stats_delta_load_duration_seconds",
Help: "Bucketed histogram of processing time for the background statistics loading job",
Buckets: prometheus.ExponentialBuckets(0.01, 2, 24), // 10ms ~ 24h
},
)
StatsDeltaUpdateHistogram = metricscommon.NewHistogram(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "statistics",
Name: "stats_delta_update_duration_seconds",
Help: "Bucketed histogram of processing time for the background stats_meta update job",
Buckets: prometheus.ExponentialBuckets(0.01, 2, 24), // 10ms ~ 24h
},
)
StatsUsageUpdateHistogram = metricscommon.NewHistogram(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "statistics",
Name: "stats_usage_update_duration_seconds",
Help: "Bucketed histogram of processing time for the background stats usage update job",
Buckets: prometheus.ExponentialBuckets(0.01, 2, 24), // 10ms ~ 24h
},
)
StatsCacheCounter = metricscommon.NewCounterVec(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "statistics",
Name: "stats_cache_op",
Help: "Counter for statsCache operation",
}, []string{LblType})
StatsCacheGauge = metricscommon.NewGaugeVec(prometheus.GaugeOpts{
Namespace: "tidb",
Subsystem: "statistics",
Name: "stats_cache_val",
Help: "gauge of stats cache value",
}, []string{LblType})
}
// Copyright 2021 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package metrics
import (
metricscommon "github.com/pingcap/tidb/pkg/metrics/common"
"github.com/prometheus/client_golang/prometheus"
dto "github.com/prometheus/client_model/go"
)
// Metrics
var (
TelemetrySQLCTECnt *prometheus.CounterVec
TelemetryMultiSchemaChangeCnt prometheus.Counter
TelemetryTablePartitionCnt prometheus.Counter
TelemetryTablePartitionListCnt prometheus.Counter
TelemetryTablePartitionRangeCnt prometheus.Counter
TelemetryTablePartitionHashCnt prometheus.Counter
TelemetryTablePartitionRangeColumnsCnt prometheus.Counter
TelemetryTablePartitionRangeColumnsGt1Cnt prometheus.Counter
TelemetryTablePartitionRangeColumnsGt2Cnt prometheus.Counter
TelemetryTablePartitionRangeColumnsGt3Cnt prometheus.Counter
TelemetryTablePartitionListColumnsCnt prometheus.Counter
TelemetryTablePartitionMaxPartitionsCnt prometheus.Counter
TelemetryAccountLockCnt *prometheus.CounterVec
TelemetryTablePartitionCreateIntervalPartitionsCnt prometheus.Counter
TelemetryTablePartitionAddIntervalPartitionsCnt prometheus.Counter
TelemetryTablePartitionDropIntervalPartitionsCnt prometheus.Counter
TelemetryExchangePartitionCnt prometheus.Counter
TelemetryAddIndexIngestCnt prometheus.Counter
TelemetryFlashbackClusterCnt prometheus.Counter
TelemetryIndexMergeUsage prometheus.Counter
TelemetryCompactPartitionCnt prometheus.Counter
TelemetryReorganizePartitionCnt prometheus.Counter
TelemetryDistReorgCnt prometheus.Counter
TelemetryStoreBatchedQueryCnt prometheus.Counter
TelemetryBatchedQueryTaskCnt prometheus.Counter
TelemetryStoreBatchedCnt prometheus.Counter
TelemetryStoreBatchedFallbackCnt prometheus.Counter
)
// InitTelemetryMetrics initializes telemetry metrics.
func InitTelemetryMetrics() {
TelemetrySQLCTECnt = metricscommon.NewCounterVec(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "telemetry",
Name: "non_recursive_cte_usage",
Help: "Counter of usage of CTE",
}, []string{LblCTEType})
TelemetryMultiSchemaChangeCnt = metricscommon.NewCounter(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "telemetry",
Name: "multi_schema_change_usage",
Help: "Counter of usage of multi-schema change",
})
TelemetryTablePartitionCnt = metricscommon.NewCounter(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "telemetry",
Name: "table_partition_usage",
Help: "Counter of CREATE TABLE which includes of table partitioning",
})
TelemetryTablePartitionListCnt = metricscommon.NewCounter(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "telemetry",
Name: "table_partition_list_usage",
Help: "Counter of CREATE TABLE which includes LIST partitioning",
})
TelemetryTablePartitionRangeCnt = metricscommon.NewCounter(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "telemetry",
Name: "table_partition_range_usage",
Help: "Counter of CREATE TABLE which includes RANGE partitioning",
})
TelemetryTablePartitionHashCnt = metricscommon.NewCounter(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "telemetry",
Name: "table_partition_hash_usage",
Help: "Counter of CREATE TABLE which includes HASH partitioning",
})
TelemetryTablePartitionRangeColumnsCnt = metricscommon.NewCounter(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "telemetry",
Name: "table_partition_range_columns_usage",
Help: "Counter of CREATE TABLE which includes RANGE COLUMNS partitioning",
})
TelemetryTablePartitionRangeColumnsGt1Cnt = metricscommon.NewCounter(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "telemetry",
Name: "table_partition_range_multi_columns_usage",
Help: "Counter of CREATE TABLE which includes RANGE COLUMNS partitioning with more than one partitioning column",
})
TelemetryTablePartitionRangeColumnsGt2Cnt = metricscommon.NewCounter(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "telemetry",
Name: "table_partition_range_multi_columns_usage",
Help: "Counter of CREATE TABLE which includes RANGE COLUMNS partitioning with more than two partitioning columns",
})
TelemetryTablePartitionRangeColumnsGt3Cnt = metricscommon.NewCounter(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "telemetry",
Name: "table_partition_range_multi_columns_usage",
Help: "Counter of CREATE TABLE which includes RANGE COLUMNS partitioning with more than three partitioning columns",
})
TelemetryTablePartitionListColumnsCnt = metricscommon.NewCounter(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "telemetry",
Name: "table_partition_list_columns_usage",
Help: "Counter of CREATE TABLE which includes LIST COLUMNS partitioning",
})
TelemetryTablePartitionMaxPartitionsCnt = metricscommon.NewCounter(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "telemetry",
Name: "table_partition_max_partition_usage",
Help: "Counter of partitions created by CREATE TABLE statements",
})
TelemetryAccountLockCnt = metricscommon.NewCounterVec(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "telemetry",
Name: "account_lock_usage",
Help: "Counter of locked/unlocked users",
}, []string{LblAccountLock})
TelemetryTablePartitionCreateIntervalPartitionsCnt = metricscommon.NewCounter(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "telemetry",
Name: "table_partition_create_interval_partition_usage",
Help: "Counter of partitions created by CREATE TABLE INTERVAL statements",
})
TelemetryTablePartitionAddIntervalPartitionsCnt = metricscommon.NewCounter(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "telemetry",
Name: "table_partition_add_interval_partition_usage",
Help: "Counter of partitions added by ALTER TABLE LAST PARTITION statements",
})
TelemetryTablePartitionDropIntervalPartitionsCnt = metricscommon.NewCounter(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "telemetry",
Name: "table_partition_drop_interval_partition_usage",
Help: "Counter of partitions added by ALTER TABLE FIRST PARTITION statements",
})
TelemetryExchangePartitionCnt = metricscommon.NewCounter(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "telemetry",
Name: "exchange_partition_usage",
Help: "Counter of usage of exchange partition statements",
})
TelemetryAddIndexIngestCnt = metricscommon.NewCounter(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "telemetry",
Name: "add_index_ingest_usage",
Help: "Counter of usage of add index acceleration solution",
})
TelemetryFlashbackClusterCnt = metricscommon.NewCounter(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "telemetry",
Name: "flashback_cluster_usage",
Help: "Counter of usage of flashback cluster",
})
TelemetryIndexMergeUsage = metricscommon.NewCounter(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "telemetry",
Name: "index_merge_usage",
Help: "Counter of usage of index merge",
})
TelemetryCompactPartitionCnt = metricscommon.NewCounter(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "telemetry",
Name: "compact_partition_usage",
Help: "Counter of compact table partition",
})
TelemetryReorganizePartitionCnt = metricscommon.NewCounter(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "telemetry",
Name: "reorganize_partition_usage",
Help: "Counter of alter table reorganize partition",
})
TelemetryDistReorgCnt = metricscommon.NewCounter(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "telemetry",
Name: "distributed_reorg_count",
Help: "Counter of usage of distributed reorg DDL tasks count",
})
TelemetryStoreBatchedQueryCnt = metricscommon.NewCounter(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "telemetry",
Name: "store_batched_query",
Help: "Counter of queries which use store batched coprocessor tasks",
})
TelemetryBatchedQueryTaskCnt = metricscommon.NewCounter(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "telemetry",
Name: "batched_query_task",
Help: "Counter of coprocessor tasks in batched queries",
})
TelemetryStoreBatchedCnt = metricscommon.NewCounter(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "telemetry",
Name: "store_batched",
Help: "Counter of store batched coprocessor tasks",
})
TelemetryStoreBatchedFallbackCnt = metricscommon.NewCounter(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "telemetry",
Name: "store_batched_fallback",
Help: "Counter of store batched fallback coprocessor tasks",
})
}
// readCounter reads the value of a prometheus.Counter.
// Returns -1 when failing to read the value.
func readCounter(m prometheus.Counter) int64 {
// Actually, it's not recommended to read the value of prometheus metric types directly:
// https://github.com/prometheus/client_golang/issues/486#issuecomment-433345239
pb := &dto.Metric{}
// It's impossible to return an error though.
if err := m.Write(pb); err != nil {
return -1
}
return int64(pb.GetCounter().GetValue())
}
// CTEUsageCounter records the usages of CTE.
type CTEUsageCounter struct {
NonRecursiveCTEUsed int64 `json:"nonRecursiveCTEUsed"`
RecursiveUsed int64 `json:"recursiveUsed"`
NonCTEUsed int64 `json:"nonCTEUsed"`
}
// Sub returns the difference of two counters.
func (c CTEUsageCounter) Sub(rhs CTEUsageCounter) CTEUsageCounter {
return CTEUsageCounter{
NonRecursiveCTEUsed: c.NonRecursiveCTEUsed - rhs.NonRecursiveCTEUsed,
RecursiveUsed: c.RecursiveUsed - rhs.RecursiveUsed,
NonCTEUsed: c.NonCTEUsed - rhs.NonCTEUsed,
}
}
// GetCTECounter gets the TxnCommitCounter.
func GetCTECounter() CTEUsageCounter {
return CTEUsageCounter{
NonRecursiveCTEUsed: readCounter(TelemetrySQLCTECnt.With(prometheus.Labels{LblCTEType: "nonRecurCTE"})),
RecursiveUsed: readCounter(TelemetrySQLCTECnt.With(prometheus.Labels{LblCTEType: "recurCTE"})),
NonCTEUsed: readCounter(TelemetrySQLCTECnt.With(prometheus.Labels{LblCTEType: "notCTE"})),
}
}
// AccountLockCounter records the number of lock users/roles
type AccountLockCounter struct {
LockUser int64 `json:"lockUser"`
UnlockUser int64 `json:"unlockUser"`
CreateOrAlterUser int64 `json:"createOrAlterUser"`
}
// Sub returns the difference of two counters.
func (c AccountLockCounter) Sub(rhs AccountLockCounter) AccountLockCounter {
return AccountLockCounter{
LockUser: c.LockUser - rhs.LockUser,
UnlockUser: c.UnlockUser - rhs.UnlockUser,
CreateOrAlterUser: c.CreateOrAlterUser - rhs.CreateOrAlterUser,
}
}
// GetAccountLockCounter gets the AccountLockCounter
func GetAccountLockCounter() AccountLockCounter {
return AccountLockCounter{
LockUser: readCounter(TelemetryAccountLockCnt.With(prometheus.Labels{LblAccountLock: "lockUser"})),
UnlockUser: readCounter(TelemetryAccountLockCnt.With(prometheus.Labels{LblAccountLock: "unlockUser"})),
CreateOrAlterUser: readCounter(TelemetryAccountLockCnt.With(prometheus.Labels{LblAccountLock: "createOrAlterUser"})),
}
}
// MultiSchemaChangeUsageCounter records the usages of multi-schema change.
type MultiSchemaChangeUsageCounter struct {
MultiSchemaChangeUsed int64 `json:"multi_schema_change_used"`
}
// Sub returns the difference of two counters.
func (c MultiSchemaChangeUsageCounter) Sub(rhs MultiSchemaChangeUsageCounter) MultiSchemaChangeUsageCounter {
return MultiSchemaChangeUsageCounter{
MultiSchemaChangeUsed: c.MultiSchemaChangeUsed - rhs.MultiSchemaChangeUsed,
}
}
// GetMultiSchemaCounter gets the TxnCommitCounter.
func GetMultiSchemaCounter() MultiSchemaChangeUsageCounter {
return MultiSchemaChangeUsageCounter{
MultiSchemaChangeUsed: readCounter(TelemetryMultiSchemaChangeCnt),
}
}
// TablePartitionUsageCounter records the usages of table partition.
type TablePartitionUsageCounter struct {
TablePartitionCnt int64 `json:"table_partition_cnt"`
TablePartitionListCnt int64 `json:"table_partition_list_cnt"`
TablePartitionRangeCnt int64 `json:"table_partition_range_cnt"`
TablePartitionHashCnt int64 `json:"table_partition_hash_cnt"`
TablePartitionRangeColumnsCnt int64 `json:"table_partition_range_columns_cnt"`
TablePartitionRangeColumnsGt1Cnt int64 `json:"table_partition_range_columns_gt_1_cnt"`
TablePartitionRangeColumnsGt2Cnt int64 `json:"table_partition_range_columns_gt_2_cnt"`
TablePartitionRangeColumnsGt3Cnt int64 `json:"table_partition_range_columns_gt_3_cnt"`
TablePartitionListColumnsCnt int64 `json:"table_partition_list_columns_cnt"`
TablePartitionMaxPartitionsCnt int64 `json:"table_partition_max_partitions_cnt"`
TablePartitionCreateIntervalPartitionsCnt int64 `json:"table_partition_create_interval_partitions_cnt"`
TablePartitionAddIntervalPartitionsCnt int64 `json:"table_partition_add_interval_partitions_cnt"`
TablePartitionDropIntervalPartitionsCnt int64 `json:"table_partition_drop_interval_partitions_cnt"`
TablePartitionComactCnt int64 `json:"table_TablePartitionComactCnt"`
TablePartitionReorganizePartitionCnt int64 `json:"table_reorganize_partition_cnt"`
}
// ExchangePartitionUsageCounter records the usages of exchange partition.
type ExchangePartitionUsageCounter struct {
ExchangePartitionCnt int64 `json:"exchange_partition_cnt"`
}
// Sub returns the difference of two counters.
func (c ExchangePartitionUsageCounter) Sub(rhs ExchangePartitionUsageCounter) ExchangePartitionUsageCounter {
return ExchangePartitionUsageCounter{
ExchangePartitionCnt: c.ExchangePartitionCnt - rhs.ExchangePartitionCnt,
}
}
// GetExchangePartitionCounter gets the TxnCommitCounter.
func GetExchangePartitionCounter() ExchangePartitionUsageCounter {
return ExchangePartitionUsageCounter{
ExchangePartitionCnt: readCounter(TelemetryExchangePartitionCnt),
}
}
// Cal returns the difference of two counters.
func (c TablePartitionUsageCounter) Cal(rhs TablePartitionUsageCounter) TablePartitionUsageCounter {
return TablePartitionUsageCounter{
TablePartitionCnt: c.TablePartitionCnt - rhs.TablePartitionCnt,
TablePartitionListCnt: c.TablePartitionListCnt - rhs.TablePartitionListCnt,
TablePartitionRangeCnt: c.TablePartitionRangeCnt - rhs.TablePartitionRangeCnt,
TablePartitionHashCnt: c.TablePartitionHashCnt - rhs.TablePartitionHashCnt,
TablePartitionRangeColumnsCnt: c.TablePartitionRangeColumnsCnt - rhs.TablePartitionRangeColumnsCnt,
TablePartitionRangeColumnsGt1Cnt: c.TablePartitionRangeColumnsGt1Cnt - rhs.TablePartitionRangeColumnsGt1Cnt,
TablePartitionRangeColumnsGt2Cnt: c.TablePartitionRangeColumnsGt2Cnt - rhs.TablePartitionRangeColumnsGt2Cnt,
TablePartitionRangeColumnsGt3Cnt: c.TablePartitionRangeColumnsGt3Cnt - rhs.TablePartitionRangeColumnsGt3Cnt,
TablePartitionListColumnsCnt: c.TablePartitionListColumnsCnt - rhs.TablePartitionListColumnsCnt,
TablePartitionMaxPartitionsCnt: max(c.TablePartitionMaxPartitionsCnt-rhs.TablePartitionMaxPartitionsCnt, rhs.TablePartitionMaxPartitionsCnt),
TablePartitionCreateIntervalPartitionsCnt: c.TablePartitionCreateIntervalPartitionsCnt - rhs.TablePartitionCreateIntervalPartitionsCnt,
TablePartitionAddIntervalPartitionsCnt: c.TablePartitionAddIntervalPartitionsCnt - rhs.TablePartitionAddIntervalPartitionsCnt,
TablePartitionDropIntervalPartitionsCnt: c.TablePartitionDropIntervalPartitionsCnt - rhs.TablePartitionDropIntervalPartitionsCnt,
TablePartitionComactCnt: c.TablePartitionComactCnt - rhs.TablePartitionComactCnt,
TablePartitionReorganizePartitionCnt: c.TablePartitionReorganizePartitionCnt - rhs.TablePartitionReorganizePartitionCnt,
}
}
// ResetTablePartitionCounter gets the TxnCommitCounter.
func ResetTablePartitionCounter(pre TablePartitionUsageCounter) TablePartitionUsageCounter {
return TablePartitionUsageCounter{
TablePartitionCnt: readCounter(TelemetryTablePartitionCnt),
TablePartitionListCnt: readCounter(TelemetryTablePartitionListCnt),
TablePartitionRangeCnt: readCounter(TelemetryTablePartitionRangeCnt),
TablePartitionHashCnt: readCounter(TelemetryTablePartitionHashCnt),
TablePartitionRangeColumnsCnt: readCounter(TelemetryTablePartitionRangeColumnsCnt),
TablePartitionRangeColumnsGt1Cnt: readCounter(TelemetryTablePartitionRangeColumnsGt1Cnt),
TablePartitionRangeColumnsGt2Cnt: readCounter(TelemetryTablePartitionRangeColumnsGt2Cnt),
TablePartitionRangeColumnsGt3Cnt: readCounter(TelemetryTablePartitionRangeColumnsGt3Cnt),
TablePartitionListColumnsCnt: readCounter(TelemetryTablePartitionListColumnsCnt),
TablePartitionMaxPartitionsCnt: max(readCounter(TelemetryTablePartitionMaxPartitionsCnt)-pre.TablePartitionMaxPartitionsCnt, pre.TablePartitionMaxPartitionsCnt),
TablePartitionReorganizePartitionCnt: readCounter(TelemetryReorganizePartitionCnt),
}
}
// GetTablePartitionCounter gets the TxnCommitCounter.
func GetTablePartitionCounter() TablePartitionUsageCounter {
return TablePartitionUsageCounter{
TablePartitionCnt: readCounter(TelemetryTablePartitionCnt),
TablePartitionListCnt: readCounter(TelemetryTablePartitionListCnt),
TablePartitionRangeCnt: readCounter(TelemetryTablePartitionRangeCnt),
TablePartitionHashCnt: readCounter(TelemetryTablePartitionHashCnt),
TablePartitionRangeColumnsCnt: readCounter(TelemetryTablePartitionRangeColumnsCnt),
TablePartitionRangeColumnsGt1Cnt: readCounter(TelemetryTablePartitionRangeColumnsGt1Cnt),
TablePartitionRangeColumnsGt2Cnt: readCounter(TelemetryTablePartitionRangeColumnsGt2Cnt),
TablePartitionRangeColumnsGt3Cnt: readCounter(TelemetryTablePartitionRangeColumnsGt3Cnt),
TablePartitionListColumnsCnt: readCounter(TelemetryTablePartitionListColumnsCnt),
TablePartitionMaxPartitionsCnt: readCounter(TelemetryTablePartitionMaxPartitionsCnt),
TablePartitionCreateIntervalPartitionsCnt: readCounter(TelemetryTablePartitionCreateIntervalPartitionsCnt),
TablePartitionAddIntervalPartitionsCnt: readCounter(TelemetryTablePartitionAddIntervalPartitionsCnt),
TablePartitionDropIntervalPartitionsCnt: readCounter(TelemetryTablePartitionDropIntervalPartitionsCnt),
TablePartitionComactCnt: readCounter(TelemetryCompactPartitionCnt),
TablePartitionReorganizePartitionCnt: readCounter(TelemetryReorganizePartitionCnt),
}
}
// NonTransactionalStmtCounter records the usages of non-transactional statements.
type NonTransactionalStmtCounter struct {
DeleteCount int64 `json:"delete"`
UpdateCount int64 `json:"update"`
InsertCount int64 `json:"insert"`
}
// Sub returns the difference of two counters.
func (n NonTransactionalStmtCounter) Sub(rhs NonTransactionalStmtCounter) NonTransactionalStmtCounter {
return NonTransactionalStmtCounter{
DeleteCount: n.DeleteCount - rhs.DeleteCount,
UpdateCount: n.UpdateCount - rhs.UpdateCount,
InsertCount: n.InsertCount - rhs.InsertCount,
}
}
// GetNonTransactionalStmtCounter gets the NonTransactionalStmtCounter.
func GetNonTransactionalStmtCounter() NonTransactionalStmtCounter {
return NonTransactionalStmtCounter{
DeleteCount: readCounter(NonTransactionalDMLCount.With(prometheus.Labels{LblType: "delete"})),
UpdateCount: readCounter(NonTransactionalDMLCount.With(prometheus.Labels{LblType: "update"})),
InsertCount: readCounter(NonTransactionalDMLCount.With(prometheus.Labels{LblType: "insert"})),
}
}
// GetSavepointStmtCounter gets the savepoint statement executed counter.
func GetSavepointStmtCounter() int64 {
return readCounter(StmtNodeCounter.WithLabelValues("Savepoint", "", "default"))
}
// GetLazyPessimisticUniqueCheckSetCounter returns the counter of setting tidb_constraint_check_in_place_pessimistic to false.
func GetLazyPessimisticUniqueCheckSetCounter() int64 {
return readCounter(LazyPessimisticUniqueCheckSetCount)
}
// DDLUsageCounter records the usages of DDL related features.
type DDLUsageCounter struct {
AddIndexIngestUsed int64 `json:"add_index_ingest_used"`
MetadataLockUsed bool `json:"metadata_lock_used"`
FlashbackClusterUsed int64 `json:"flashback_cluster_used"`
DistReorgUsed int64 `json:"dist_reorg_used"`
}
// Sub returns the difference of two counters.
func (a DDLUsageCounter) Sub(rhs DDLUsageCounter) DDLUsageCounter {
return DDLUsageCounter{
AddIndexIngestUsed: a.AddIndexIngestUsed - rhs.AddIndexIngestUsed,
FlashbackClusterUsed: a.FlashbackClusterUsed - rhs.FlashbackClusterUsed,
DistReorgUsed: a.DistReorgUsed - rhs.DistReorgUsed,
}
}
// GetDDLUsageCounter gets the add index acceleration solution counts.
func GetDDLUsageCounter() DDLUsageCounter {
return DDLUsageCounter{
AddIndexIngestUsed: readCounter(TelemetryAddIndexIngestCnt),
FlashbackClusterUsed: readCounter(TelemetryFlashbackClusterCnt),
DistReorgUsed: readCounter(TelemetryDistReorgCnt),
}
}
// IndexMergeUsageCounter records the usages of IndexMerge feature.
type IndexMergeUsageCounter struct {
IndexMergeUsed int64 `json:"index_merge_used"`
}
// Sub returns the difference of two counters.
func (i IndexMergeUsageCounter) Sub(rhs IndexMergeUsageCounter) IndexMergeUsageCounter {
return IndexMergeUsageCounter{
IndexMergeUsed: i.IndexMergeUsed - rhs.IndexMergeUsed,
}
}
// GetIndexMergeCounter gets the IndexMerge usage counter.
func GetIndexMergeCounter() IndexMergeUsageCounter {
return IndexMergeUsageCounter{
IndexMergeUsed: readCounter(TelemetryIndexMergeUsage),
}
}
// StoreBatchCoprCounter records the usages of batch copr statements.
type StoreBatchCoprCounter struct {
// BatchSize is the global value of `tidb_store_batch_size`
BatchSize int `json:"batch_size"`
// BatchedQuery is the counter of queries that use this feature.
BatchedQuery int64 `json:"query"`
// BatchedQueryTask is the counter of total tasks in queries above.
BatchedQueryTask int64 `json:"tasks"`
// BatchedCount is the counter of successfully batched tasks.
BatchedCount int64 `json:"batched"`
// BatchedFallbackCount is the counter of fallback batched tasks by region miss.
BatchedFallbackCount int64 `json:"batched_fallback"`
}
// Sub returns the difference of two counters.
func (n StoreBatchCoprCounter) Sub(rhs StoreBatchCoprCounter) StoreBatchCoprCounter {
return StoreBatchCoprCounter{
BatchedQuery: n.BatchedQuery - rhs.BatchedQuery,
BatchedQueryTask: n.BatchedQueryTask - rhs.BatchedQueryTask,
BatchedCount: n.BatchedCount - rhs.BatchedCount,
BatchedFallbackCount: n.BatchedFallbackCount - rhs.BatchedFallbackCount,
}
}
// GetStoreBatchCoprCounter gets the IndexMerge usage counter.
func GetStoreBatchCoprCounter() StoreBatchCoprCounter {
return StoreBatchCoprCounter{
BatchedQuery: readCounter(TelemetryStoreBatchedQueryCnt),
BatchedQueryTask: readCounter(TelemetryBatchedQueryTaskCnt),
BatchedCount: readCounter(TelemetryStoreBatchedCnt),
BatchedFallbackCount: readCounter(TelemetryStoreBatchedFallbackCnt),
}
}
// FairLockingUsageCounter records the usage of Fair Locking feature of pessimistic transaction.
type FairLockingUsageCounter struct {
TxnFairLockingUsed int64 `json:"txn_fair_locking_used"`
TxnFairLockingEffective int64 `json:"txn_fair_locking_effective"`
}
// Sub returns the difference of two counters.
func (i FairLockingUsageCounter) Sub(rhs FairLockingUsageCounter) FairLockingUsageCounter {
return FairLockingUsageCounter{
TxnFairLockingUsed: i.TxnFairLockingUsed - rhs.TxnFairLockingUsed,
TxnFairLockingEffective: i.TxnFairLockingEffective - rhs.TxnFairLockingEffective,
}
}
// GetFairLockingUsageCounter returns the Fair Locking usage counter.
func GetFairLockingUsageCounter() FairLockingUsageCounter {
return FairLockingUsageCounter{
TxnFairLockingUsed: readCounter(FairLockingUsageCount.WithLabelValues(LblFairLockingTxnUsed)),
TxnFairLockingEffective: readCounter(FairLockingUsageCount.WithLabelValues(LblFairLockingTxnEffective)),
}
}
// Copyright 2021 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package metrics
import (
metricscommon "github.com/pingcap/tidb/pkg/metrics/common"
"github.com/prometheus/client_golang/prometheus"
)
// Top SQL metrics.
var (
TopSQLIgnoredCounter *prometheus.CounterVec
TopSQLReportDurationHistogram *prometheus.HistogramVec
TopSQLReportDataHistogram *prometheus.HistogramVec
)
// InitTopSQLMetrics initializes top-sql metrics.
func InitTopSQLMetrics() {
TopSQLIgnoredCounter = metricscommon.NewCounterVec(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "topsql",
Name: "ignored_total",
Help: "Counter of ignored top-sql metrics (register-sql, register-plan, collect-data and report-data), normally it should be 0.",
}, []string{LblType})
TopSQLReportDurationHistogram = metricscommon.NewHistogramVec(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "topsql",
Name: "report_duration_seconds",
Help: "Bucket histogram of reporting time (s) to the top-sql agent",
Buckets: prometheus.ExponentialBuckets(0.001, 2, 24), // 1ms ~ 2.3h
}, []string{LblType, LblResult})
TopSQLReportDataHistogram = metricscommon.NewHistogramVec(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "topsql",
Name: "report_data_total",
Help: "Bucket histogram of reporting records/sql/plan count to the top-sql agent.",
Buckets: prometheus.ExponentialBuckets(1, 2, 20), // 1 ~ 524288
}, []string{LblType})
}
// Copyright 2022 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package metrics
import (
metricscommon "github.com/pingcap/tidb/pkg/metrics/common"
"github.com/prometheus/client_golang/prometheus"
)
// TTL metrics
var (
TTLQueryDuration *prometheus.HistogramVec
TTLProcessedExpiredRowsCounter *prometheus.CounterVec
TTLJobStatus *prometheus.GaugeVec
TTLTaskStatus *prometheus.GaugeVec
TTLPhaseTime *prometheus.CounterVec
TTLInsertRowsCount prometheus.Counter
TTLWatermarkDelay *prometheus.GaugeVec
TTLEventCounter *prometheus.CounterVec
TTLSyncTimerCounter prometheus.Counter
TTLFullRefreshTimersCounter prometheus.Counter
)
// InitTTLMetrics initializes ttl metrics.
func InitTTLMetrics() {
TTLQueryDuration = metricscommon.NewHistogramVec(
prometheus.HistogramOpts{
Namespace: "tidb",
Subsystem: "server",
Name: "ttl_query_duration",
Help: "Bucketed histogram of processing time (s) of handled TTL queries.",
Buckets: prometheus.ExponentialBuckets(0.01, 2, 20), // 10ms ~ 1.45hour
}, []string{LblSQLType, LblResult})
TTLProcessedExpiredRowsCounter = metricscommon.NewCounterVec(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "server",
Name: "ttl_processed_expired_rows",
Help: "The count of expired rows processed in TTL jobs",
}, []string{LblSQLType, LblResult})
TTLJobStatus = metricscommon.NewGaugeVec(
prometheus.GaugeOpts{
Namespace: "tidb",
Subsystem: "server",
Name: "ttl_job_status",
Help: "The jobs count in the specified status",
}, []string{LblType})
TTLTaskStatus = metricscommon.NewGaugeVec(
prometheus.GaugeOpts{
Namespace: "tidb",
Subsystem: "server",
Name: "ttl_task_status",
Help: "The tasks count in the specified status",
}, []string{LblType})
TTLPhaseTime = metricscommon.NewCounterVec(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "server",
Name: "ttl_phase_time",
Help: "The time spent in each phase",
}, []string{LblType, LblPhase})
TTLInsertRowsCount = metricscommon.NewCounter(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "server",
Name: "ttl_insert_rows",
Help: "The count of TTL rows inserted",
})
TTLWatermarkDelay = metricscommon.NewGaugeVec(
prometheus.GaugeOpts{
Namespace: "tidb",
Subsystem: "server",
Name: "ttl_watermark_delay",
Help: "Bucketed delay time in seconds for TTL tables.",
}, []string{LblType, LblName})
TTLEventCounter = metricscommon.NewCounterVec(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "server",
Name: "ttl_event_count",
Help: "Counter of ttl event.",
}, []string{LblType})
TTLSyncTimerCounter = TTLEventCounter.WithLabelValues("sync_one_timer")
TTLFullRefreshTimersCounter = TTLEventCounter.WithLabelValues("full_refresh_timers")
}
// Copyright 2015 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// See the License for the specific language governing permissions and
// limitations under the License.
// Package ast is the abstract syntax tree parsed from a SQL statement by parser.
// It can be analysed and transformed by optimizer.
package ast
import (
"io"
"github.com/pingcap/tidb/pkg/parser/charset"
"github.com/pingcap/tidb/pkg/parser/format"
"github.com/pingcap/tidb/pkg/parser/types"
)
// Node is the basic element of the AST.
// Interfaces embed Node should have 'Node' name suffix.
type Node interface {
// Restore returns the sql text from ast tree
Restore(ctx *format.RestoreCtx) error
// Accept accepts Visitor to visit itself.
// The returned node should replace original node.
// ok returns false to stop visiting.
//
// Implementation of this method should first call visitor.Enter,
// assign the returned node to its method receiver, if skipChildren returns true,
// children should be skipped. Otherwise, call its children in particular order that
// later elements depends on former elements. Finally, return visitor.Leave.
Accept(v Visitor) (node Node, ok bool)
// Text returns the utf8 encoding text of the element.
Text() string
// OriginalText returns the original text of the element.
OriginalText() string
// SetText sets original text to the Node.
SetText(enc charset.Encoding, text string)
// SetOriginTextPosition set the start offset of this node in the origin text.
// Only be called when `parser.lexer.skipPositionRecording` equals to false.
SetOriginTextPosition(offset int)
// OriginTextPosition get the start offset of this node in the origin text.
OriginTextPosition() int
}
// Flags indicates whether an expression contains certain types of expression.
const (
FlagConstant uint64 = 0
FlagHasParamMarker uint64 = 1 << iota
FlagHasFunc
FlagHasReference
FlagHasAggregateFunc
FlagHasSubquery
FlagHasVariable
FlagHasDefault
FlagPreEvaluated
FlagHasWindowFunc
)
// ExprNode is a node that can be evaluated.
// Name of implementations should have 'Expr' suffix.
type ExprNode interface {
// Node is embedded in ExprNode.
Node
// SetType sets evaluation type to the expression.
SetType(tp *types.FieldType)
// GetType gets the evaluation type of the expression.
GetType() *types.FieldType
// SetFlag sets flag to the expression.
// Flag indicates whether the expression contains
// parameter marker, reference, aggregate function...
SetFlag(flag uint64)
// GetFlag returns the flag of the expression.
GetFlag() uint64
// Format formats the AST into a writer.
Format(w io.Writer)
}
// OptBinary is used for parser.
type OptBinary struct {
IsBinary bool
Charset string
}
// OptVectorType represents the element type of the vector.
type VectorElementType struct {
Tp byte // Only FLOAT and DOUBLE is accepted.
}
// FuncNode represents function call expression node.
type FuncNode interface {
ExprNode
functionExpression()
}
// StmtNode represents statement node.
// Name of implementations should have 'Stmt' suffix.
type StmtNode interface {
Node
statement()
// SEMCommand generates a string that represents the command type of the statement.
// It's only used for Security Enforcement Mode (SEM) for now. If it's going to be
// re-used for other purposes, we may need to rename and give it a clearer definition.
//
// The function of this method is similar to `GetStmtLabel`, but it returns more detail.
SEMCommand() string
}
// DDLNode represents DDL statement node.
type DDLNode interface {
StmtNode
ddlStatement()
}
// DMLNode represents DML statement node.
type DMLNode interface {
StmtNode
dmlStatement()
}
// ResultSetNode interface has a ResultFields property, represents a Node that returns result set.
// Implementations include SelectStmt, SubqueryExpr, TableSource, TableName, Join and SetOprStmt.
type ResultSetNode interface {
Node
resultSet()
}
// SensitiveStmtNode overloads StmtNode and provides a SecureText method.
type SensitiveStmtNode interface {
StmtNode
// SecureText is different from Text that it hide password information.
SecureText() string
}
// Visitor visits a Node.
type Visitor interface {
// Enter is called before children nodes are visited.
// The returned node must be the same type as the input node n.
// skipChildren returns true means children nodes should be skipped,
// this is useful when work is done in Enter and there is no need to visit children.
Enter(n Node) (node Node, skipChildren bool)
// Leave is called after children nodes have been visited.
// The returned node's type can be different from the input node if it is a ExprNode,
// Non-expression node must be the same type as the input node n.
// ok returns false to stop visiting.
Leave(n Node) (node Node, ok bool)
}
// GetStmtLabel generates a label for a statement.
func GetStmtLabel(stmtNode StmtNode) string {
switch x := stmtNode.(type) {
case *AlterTableStmt:
return "AlterTable"
case *AnalyzeTableStmt:
return "AnalyzeTable"
case *BeginStmt:
return "Begin"
case *CommitStmt:
return "Commit"
case *CompactTableStmt:
return "CompactTable"
case *CreateDatabaseStmt:
return "CreateDatabase"
case *CreateIndexStmt:
return "CreateIndex"
case *CreateTableStmt:
return "CreateTable"
case *CreateViewStmt:
return "CreateView"
case *CreateUserStmt:
return "CreateUser"
case *DeleteStmt:
return "Delete"
case *DropDatabaseStmt:
return "DropDatabase"
case *DropIndexStmt:
return "DropIndex"
case *DropTableStmt:
if x.IsView {
return "DropView"
}
return "DropTable"
case *ExplainStmt:
if _, ok := x.Stmt.(*ShowStmt); ok {
return "DescTable"
}
if x.Analyze {
return "ExplainAnalyzeSQL"
}
return "ExplainSQL"
case *InsertStmt:
if x.IsReplace {
return "Replace"
}
return "Insert"
case *ImportIntoStmt:
return "ImportInto"
case *LoadDataStmt:
return "LoadData"
case *RollbackStmt:
return "Rollback"
case *SelectStmt:
return "Select"
case *SetStmt, *SetPwdStmt:
return "Set"
case *ShowStmt:
return "Show"
case *TruncateTableStmt:
return "TruncateTable"
case *UpdateStmt:
return "Update"
case *GrantStmt:
return "Grant"
case *RevokeStmt:
return "Revoke"
case *DeallocateStmt:
return "Deallocate"
case *ExecuteStmt:
return "Execute"
case *PrepareStmt:
return "Prepare"
case *UseStmt:
return "Use"
case *CreateBindingStmt:
return "CreateBinding"
case *DropBindingStmt:
return "DropBinding"
case *TraceStmt:
return "Trace"
case *ShutdownStmt:
return "Shutdown"
case *SavepointStmt:
return "Savepoint"
case *OptimizeTableStmt:
return "Optimize"
}
return "other"
}
// Copyright 2015 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// See the License for the specific language governing permissions and
// limitations under the License.
package ast
import (
"sync"
"github.com/pingcap/tidb/pkg/parser/charset"
"github.com/pingcap/tidb/pkg/parser/types"
)
// node is the struct implements Node interface except for Accept method.
// Node implementations should embed it in.
type node struct {
utf8Text string
enc charset.Encoding
once *sync.Once
text string
offset int
}
// SetOriginTextPosition implements Node interface.
func (n *node) SetOriginTextPosition(offset int) {
n.offset = offset
}
// OriginTextPosition implements Node interface.
func (n *node) OriginTextPosition() int {
return n.offset
}
// SetText implements Node interface.
func (n *node) SetText(enc charset.Encoding, text string) {
n.enc = enc
n.text = text
n.once = &sync.Once{}
}
// Text implements Node interface.
func (n *node) Text() string {
if n.once == nil {
return n.text
}
n.once.Do(func() {
if n.enc == nil {
n.utf8Text = n.text
return
}
utf8Lit, _ := n.enc.Transform(nil, charset.HackSlice(n.text), charset.OpDecodeReplace)
n.utf8Text = charset.HackString(utf8Lit)
})
return n.utf8Text
}
// OriginalText implements Node interface.
func (n *node) OriginalText() string {
return n.text
}
// stmtNode implements StmtNode interface.
// Statement implementations should embed it in.
type stmtNode struct {
node
}
// statement implements StmtNode interface.
func (sn *stmtNode) statement() {}
// ddlNode implements DDLNode interface.
// DDL implementations should embed it in.
type ddlNode struct {
stmtNode
}
// ddlStatement implements DDLNode interface.
func (dn *ddlNode) ddlStatement() {}
// dmlNode is the struct implements DMLNode interface.
// DML implementations should embed it in.
type dmlNode struct {
stmtNode
}
// dmlStatement implements DMLNode interface.
func (dn *dmlNode) dmlStatement() {}
// exprNode is the struct implements Expression interface.
// Expression implementations should embed it in.
type exprNode struct {
node
Type types.FieldType
flag uint64
}
// TexprNode is exported for parser driver.
type TexprNode = exprNode
// SetType implements ExprNode interface.
func (en *exprNode) SetType(tp *types.FieldType) {
en.Type = *tp
}
// GetType implements ExprNode interface.
func (en *exprNode) GetType() *types.FieldType {
return &en.Type
}
// SetFlag implements ExprNode interface.
func (en *exprNode) SetFlag(flag uint64) {
en.flag = flag
}
// GetFlag implements ExprNode interface.
func (en *exprNode) GetFlag() uint64 {
return en.flag
}
type funcNode struct {
exprNode
}
// functionExpression implements FunctionNode interface.
func (fn *funcNode) functionExpression() {}
// Copyright 2015 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// See the License for the specific language governing permissions and
// limitations under the License.
package ast
import (
"github.com/pingcap/errors"
"github.com/pingcap/tidb/pkg/parser/auth"
"github.com/pingcap/tidb/pkg/parser/format"
"github.com/pingcap/tidb/pkg/parser/mysql"
"github.com/pingcap/tidb/pkg/parser/terror"
"github.com/pingcap/tidb/pkg/parser/tidb"
"github.com/pingcap/tidb/pkg/parser/types"
)
var (
_ DDLNode = &AlterTableStmt{}
_ DDLNode = &AlterSequenceStmt{}
_ DDLNode = &AlterPlacementPolicyStmt{}
_ DDLNode = &AlterResourceGroupStmt{}
_ DDLNode = &CreateDatabaseStmt{}
_ DDLNode = &CreateIndexStmt{}
_ DDLNode = &CreateTableStmt{}
_ DDLNode = &CreateViewStmt{}
_ DDLNode = &CreateSequenceStmt{}
_ DDLNode = &CreatePlacementPolicyStmt{}
_ DDLNode = &CreateResourceGroupStmt{}
_ DDLNode = &DropDatabaseStmt{}
_ DDLNode = &FlashBackDatabaseStmt{}
_ DDLNode = &DropIndexStmt{}
_ DDLNode = &DropTableStmt{}
_ DDLNode = &DropSequenceStmt{}
_ DDLNode = &DropPlacementPolicyStmt{}
_ DDLNode = &DropResourceGroupStmt{}
_ DDLNode = &OptimizeTableStmt{}
_ DDLNode = &RenameTableStmt{}
_ DDLNode = &TruncateTableStmt{}
_ DDLNode = &RepairTableStmt{}
_ Node = &AlterTableSpec{}
_ Node = &ColumnDef{}
_ Node = &ColumnOption{}
_ Node = &ColumnPosition{}
_ Node = &Constraint{}
_ Node = &IndexPartSpecification{}
_ Node = &ReferenceDef{}
)
// CharsetOpt is used for parsing charset option from SQL.
type CharsetOpt struct {
Chs string
Col string
}
// NullString represents a string that may be nil.
type NullString struct {
String string
Empty bool // Empty is true if String is empty backtick.
}
// DatabaseOptionType is the type for database options.
type DatabaseOptionType int
// Database option types.
const (
DatabaseOptionNone DatabaseOptionType = iota
DatabaseOptionCharset
DatabaseOptionCollate
DatabaseOptionEncryption
DatabaseSetTiFlashReplica
DatabaseOptionPlacementPolicy = DatabaseOptionType(PlacementOptionPolicy)
)
// DatabaseOption represents database option.
type DatabaseOption struct {
Tp DatabaseOptionType
Value string
UintValue uint64
TiFlashReplica *TiFlashReplicaSpec
}
// Restore implements Node interface.
func (n *DatabaseOption) Restore(ctx *format.RestoreCtx) error {
switch n.Tp {
case DatabaseOptionCharset:
ctx.WriteKeyWord("CHARACTER SET")
ctx.WritePlain(" = ")
ctx.WritePlain(n.Value)
case DatabaseOptionCollate:
ctx.WriteKeyWord("COLLATE")
ctx.WritePlain(" = ")
ctx.WritePlain(n.Value)
case DatabaseOptionEncryption:
ctx.WriteKeyWord("ENCRYPTION")
ctx.WritePlain(" = ")
ctx.WriteString(n.Value)
case DatabaseOptionPlacementPolicy:
placementOpt := PlacementOption{
Tp: PlacementOptionPolicy,
UintValue: n.UintValue,
StrValue: n.Value,
}
return placementOpt.Restore(ctx)
case DatabaseSetTiFlashReplica:
ctx.WriteKeyWord("SET TIFLASH REPLICA ")
ctx.WritePlainf("%d", n.TiFlashReplica.Count)
if len(n.TiFlashReplica.Labels) == 0 {
break
}
ctx.WriteKeyWord(" LOCATION LABELS ")
for i, v := range n.TiFlashReplica.Labels {
if i > 0 {
ctx.WritePlain(", ")
}
ctx.WriteString(v)
}
default:
return errors.Errorf("invalid DatabaseOptionType: %d", n.Tp)
}
return nil
}
// CreateDatabaseStmt is a statement to create a database.
// See https://dev.mysql.com/doc/refman/5.7/en/create-database.html
type CreateDatabaseStmt struct {
ddlNode
IfNotExists bool
Name CIStr
Options []*DatabaseOption
}
// Restore implements Node interface.
func (n *CreateDatabaseStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("CREATE DATABASE ")
if n.IfNotExists {
ctx.WriteKeyWord("IF NOT EXISTS ")
}
ctx.WriteName(n.Name.O)
for i, option := range n.Options {
ctx.WritePlain(" ")
err := option.Restore(ctx)
if err != nil {
return errors.Annotatef(err, "An error occurred while splicing CreateDatabaseStmt DatabaseOption: [%v]", i)
}
}
return nil
}
// Accept implements Node Accept interface.
func (n *CreateDatabaseStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*CreateDatabaseStmt)
return v.Leave(n)
}
// AlterDatabaseStmt is a statement to change the structure of a database.
// See https://dev.mysql.com/doc/refman/5.7/en/alter-database.html
type AlterDatabaseStmt struct {
ddlNode
Name CIStr
AlterDefaultDatabase bool
Options []*DatabaseOption
}
// Restore implements Node interface.
func (n *AlterDatabaseStmt) Restore(ctx *format.RestoreCtx) error {
if ctx.Flags.HasSkipPlacementRuleForRestoreFlag() && n.isAllPlacementOptions() {
return nil
}
// If all options placement options and RestoreTiDBSpecialComment flag is on,
// we should restore the whole node in special comment. For example, the restore result should be:
// /*T![placement] ALTER DATABASE `db1` PLACEMENT POLICY = `p1` */
// instead of
// ALTER DATABASE `db1` /*T![placement] PLACEMENT POLICY = `p1` */
// because altering a database without any options is not a legal syntax in mysql
if n.isAllPlacementOptions() && ctx.Flags.HasTiDBSpecialCommentFlag() {
return restorePlacementStmtInSpecialComment(ctx, n)
}
ctx.WriteKeyWord("ALTER DATABASE")
if !n.AlterDefaultDatabase {
ctx.WritePlain(" ")
ctx.WriteName(n.Name.O)
}
for i, option := range n.Options {
ctx.WritePlain(" ")
err := option.Restore(ctx)
if err != nil {
return errors.Annotatef(err, "An error occurred while splicing AlterDatabaseStmt DatabaseOption: [%v]", i)
}
}
return nil
}
// Accept implements Node Accept interface.
func (n *AlterDatabaseStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*AlterDatabaseStmt)
return v.Leave(n)
}
func (n *AlterDatabaseStmt) isAllPlacementOptions() bool {
for _, n := range n.Options {
switch n.Tp {
case DatabaseOptionPlacementPolicy:
default:
return false
}
}
return true
}
// DropDatabaseStmt is a statement to drop a database and all tables in the database.
// See https://dev.mysql.com/doc/refman/5.7/en/drop-database.html
type DropDatabaseStmt struct {
ddlNode
IfExists bool
Name CIStr
}
// Restore implements Node interface.
func (n *DropDatabaseStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("DROP DATABASE ")
if n.IfExists {
ctx.WriteKeyWord("IF EXISTS ")
}
ctx.WriteName(n.Name.O)
return nil
}
// Accept implements Node Accept interface.
func (n *DropDatabaseStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*DropDatabaseStmt)
return v.Leave(n)
}
// FlashBackDatabaseStmt is a statement to restore a database and all tables in the database.
type FlashBackDatabaseStmt struct {
ddlNode
DBName CIStr
NewName string
}
// Restore implements Node interface.
func (n *FlashBackDatabaseStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("FLASHBACK DATABASE ")
ctx.WriteName(n.DBName.O)
if len(n.NewName) > 0 {
ctx.WriteKeyWord(" TO ")
ctx.WriteName(n.NewName)
}
return nil
}
// Accept implements Node Accept interface.
func (n *FlashBackDatabaseStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*FlashBackDatabaseStmt)
return v.Leave(n)
}
// IndexPartSpecifications is used for parsing index column name or index expression from SQL.
type IndexPartSpecification struct {
node
Column *ColumnName
Length int
// Order is parsed but should be ignored because MySQL v5.7 doesn't support it.
Desc bool
Expr ExprNode
}
// Restore implements Node interface.
func (n *IndexPartSpecification) Restore(ctx *format.RestoreCtx) error {
if n.Expr != nil {
ctx.WritePlain("(")
if err := n.Expr.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while splicing IndexPartSpecifications")
}
ctx.WritePlain(")")
if n.Desc {
ctx.WritePlain(" DESC")
}
return nil
}
if err := n.Column.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while splicing IndexPartSpecifications")
}
if n.Length > 0 {
ctx.WritePlainf("(%d)", n.Length)
}
if n.Desc {
ctx.WritePlain(" DESC")
}
return nil
}
// Accept implements Node Accept interface.
func (n *IndexPartSpecification) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*IndexPartSpecification)
if n.Expr != nil {
node, ok := n.Expr.Accept(v)
if !ok {
return n, false
}
n.Expr = node.(ExprNode)
return v.Leave(n)
}
node, ok := n.Column.Accept(v)
if !ok {
return n, false
}
n.Column = node.(*ColumnName)
return v.Leave(n)
}
// MatchType is the type for reference match type.
type MatchType int
// match type
const (
MatchNone MatchType = iota
MatchFull
MatchPartial
MatchSimple
)
// ReferenceDef is used for parsing foreign key reference option from SQL.
// See http://dev.mysql.com/doc/refman/5.7/en/create-table-foreign-keys.html
type ReferenceDef struct {
node
Table *TableName
IndexPartSpecifications []*IndexPartSpecification
OnDelete *OnDeleteOpt
OnUpdate *OnUpdateOpt
Match MatchType
}
// Restore implements Node interface.
func (n *ReferenceDef) Restore(ctx *format.RestoreCtx) error {
if n.Table != nil {
ctx.WriteKeyWord("REFERENCES ")
if err := n.Table.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while splicing ReferenceDef")
}
}
if n.IndexPartSpecifications != nil {
ctx.WritePlain("(")
for i, indexColNames := range n.IndexPartSpecifications {
if i > 0 {
ctx.WritePlain(", ")
}
if err := indexColNames.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while splicing IndexPartSpecifications: [%v]", i)
}
}
ctx.WritePlain(")")
}
if n.Match != MatchNone {
ctx.WriteKeyWord(" MATCH ")
switch n.Match {
case MatchFull:
ctx.WriteKeyWord("FULL")
case MatchPartial:
ctx.WriteKeyWord("PARTIAL")
case MatchSimple:
ctx.WriteKeyWord("SIMPLE")
}
}
if n.OnDelete.ReferOpt != ReferOptionNoOption {
ctx.WritePlain(" ")
if err := n.OnDelete.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while splicing OnDelete")
}
}
if n.OnUpdate.ReferOpt != ReferOptionNoOption {
ctx.WritePlain(" ")
if err := n.OnUpdate.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while splicing OnUpdate")
}
}
return nil
}
// Accept implements Node Accept interface.
func (n *ReferenceDef) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*ReferenceDef)
if n.Table != nil {
node, ok := n.Table.Accept(v)
if !ok {
return n, false
}
n.Table = node.(*TableName)
}
for i, val := range n.IndexPartSpecifications {
node, ok := val.Accept(v)
if !ok {
return n, false
}
n.IndexPartSpecifications[i] = node.(*IndexPartSpecification)
}
onDelete, ok := n.OnDelete.Accept(v)
if !ok {
return n, false
}
n.OnDelete = onDelete.(*OnDeleteOpt)
onUpdate, ok := n.OnUpdate.Accept(v)
if !ok {
return n, false
}
n.OnUpdate = onUpdate.(*OnUpdateOpt)
return v.Leave(n)
}
// OnDeleteOpt is used for optional on delete clause.
type OnDeleteOpt struct {
node
ReferOpt ReferOptionType
}
// Restore implements Node interface.
func (n *OnDeleteOpt) Restore(ctx *format.RestoreCtx) error {
if n.ReferOpt != ReferOptionNoOption {
ctx.WriteKeyWord("ON DELETE ")
ctx.WriteKeyWord(n.ReferOpt.String())
}
return nil
}
// Accept implements Node Accept interface.
func (n *OnDeleteOpt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*OnDeleteOpt)
return v.Leave(n)
}
// OnUpdateOpt is used for optional on update clause.
type OnUpdateOpt struct {
node
ReferOpt ReferOptionType
}
// Restore implements Node interface.
func (n *OnUpdateOpt) Restore(ctx *format.RestoreCtx) error {
if n.ReferOpt != ReferOptionNoOption {
ctx.WriteKeyWord("ON UPDATE ")
ctx.WriteKeyWord(n.ReferOpt.String())
}
return nil
}
// Accept implements Node Accept interface.
func (n *OnUpdateOpt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*OnUpdateOpt)
return v.Leave(n)
}
// ColumnOptionType is the type for ColumnOption.
type ColumnOptionType int
// ColumnOption types.
const (
ColumnOptionNoOption ColumnOptionType = iota
ColumnOptionPrimaryKey
ColumnOptionNotNull
ColumnOptionAutoIncrement
ColumnOptionDefaultValue
ColumnOptionUniqKey
ColumnOptionNull
ColumnOptionOnUpdate // For Timestamp and Datetime only.
ColumnOptionFulltext
ColumnOptionComment
ColumnOptionGenerated
ColumnOptionReference
ColumnOptionCollate
ColumnOptionCheck
ColumnOptionColumnFormat
ColumnOptionStorage
ColumnOptionAutoRandom
ColumnOptionSecondaryEngineAttribute
)
var (
invalidOptionForGeneratedColumn = map[ColumnOptionType]string{
ColumnOptionAutoIncrement: "AUTO_INCREMENT",
ColumnOptionOnUpdate: "ON UPDATE",
ColumnOptionDefaultValue: "DEFAULT",
}
)
// ColumnOptionList stores column options.
type ColumnOptionList struct {
HasCollateOption bool
Options []*ColumnOption
}
// ColumnOption is used for parsing column constraint info from SQL.
type ColumnOption struct {
node
Tp ColumnOptionType
// Expr is used for ColumnOptionDefaultValue/ColumnOptionOnUpdateColumnOptionGenerated.
// For ColumnOptionDefaultValue or ColumnOptionOnUpdate, it's the target value.
// For ColumnOptionGenerated, it's the target expression.
Expr ExprNode
// Stored is only for ColumnOptionGenerated, default is false.
Stored bool
// Refer is used for foreign key.
Refer *ReferenceDef
StrValue string
AutoRandOpt AutoRandomOption
// Enforced is only for Check, default is true.
Enforced bool
// Name is only used for Check Constraint name.
ConstraintName string
PrimaryKeyTp PrimaryKeyType
SecondaryEngineAttr string
}
// Restore implements Node interface.
func (n *ColumnOption) Restore(ctx *format.RestoreCtx) error {
switch n.Tp {
case ColumnOptionNoOption:
return nil
case ColumnOptionPrimaryKey:
ctx.WriteKeyWord("PRIMARY KEY")
pkTp := n.PrimaryKeyTp.String()
if len(pkTp) != 0 {
ctx.WritePlain(" ")
ctx.WriteKeyWordWithSpecialComments(tidb.FeatureIDClusteredIndex, pkTp)
}
if n.StrValue == "Global" {
ctx.WriteKeyWord(" GLOBAL")
}
case ColumnOptionNotNull:
ctx.WriteKeyWord("NOT NULL")
case ColumnOptionAutoIncrement:
ctx.WriteKeyWord("AUTO_INCREMENT")
case ColumnOptionDefaultValue:
ctx.WriteKeyWord("DEFAULT ")
printOuterParentheses := false
if funcCallExpr, ok := n.Expr.(*FuncCallExpr); ok {
if name := funcCallExpr.FnName.L; name != CurrentTimestamp {
printOuterParentheses = true
}
}
if _, ok := n.Expr.(*ColumnNameExpr); ok {
printOuterParentheses = true
}
if printOuterParentheses {
ctx.WritePlain("(")
}
if err := n.Expr.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while splicing ColumnOption DefaultValue Expr")
}
if printOuterParentheses {
ctx.WritePlain(")")
}
case ColumnOptionUniqKey:
ctx.WriteKeyWord("UNIQUE KEY")
if n.StrValue == "Global" {
ctx.WriteKeyWord(" GLOBAL")
}
case ColumnOptionNull:
ctx.WriteKeyWord("NULL")
case ColumnOptionOnUpdate:
ctx.WriteKeyWord("ON UPDATE ")
if err := n.Expr.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while splicing ColumnOption ON UPDATE Expr")
}
case ColumnOptionFulltext:
return errors.New("TiDB Parser ignore the `ColumnOptionFulltext` type now")
case ColumnOptionComment:
ctx.WriteKeyWord("COMMENT ")
if err := n.Expr.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while splicing ColumnOption COMMENT Expr")
}
case ColumnOptionGenerated:
ctx.WriteKeyWord("GENERATED ALWAYS AS")
ctx.WritePlain("(")
if err := n.Expr.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while splicing ColumnOption GENERATED ALWAYS Expr")
}
ctx.WritePlain(")")
if n.Stored {
ctx.WriteKeyWord(" STORED")
} else {
ctx.WriteKeyWord(" VIRTUAL")
}
case ColumnOptionReference:
if err := n.Refer.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while splicing ColumnOption ReferenceDef")
}
case ColumnOptionCollate:
if n.StrValue == "" {
return errors.New("Empty ColumnOption COLLATE")
}
ctx.WriteKeyWord("COLLATE ")
ctx.WritePlain(n.StrValue)
case ColumnOptionCheck:
if n.ConstraintName != "" {
ctx.WriteKeyWord("CONSTRAINT ")
ctx.WriteName(n.ConstraintName)
ctx.WritePlain(" ")
}
ctx.WriteKeyWord("CHECK")
ctx.WritePlain("(")
if err := n.Expr.Restore(ctx); err != nil {
return errors.Trace(err)
}
ctx.WritePlain(")")
if n.Enforced {
ctx.WriteKeyWord(" ENFORCED")
} else {
ctx.WriteKeyWord(" NOT ENFORCED")
}
case ColumnOptionColumnFormat:
ctx.WriteKeyWord("COLUMN_FORMAT ")
ctx.WriteKeyWord(n.StrValue)
case ColumnOptionStorage:
ctx.WriteKeyWord("STORAGE ")
ctx.WriteKeyWord(n.StrValue)
case ColumnOptionAutoRandom:
_ = ctx.WriteWithSpecialComments(tidb.FeatureIDAutoRandom, func() error {
ctx.WriteKeyWord("AUTO_RANDOM")
opt := n.AutoRandOpt
if opt.ShardBits != types.UnspecifiedLength {
if opt.RangeBits != types.UnspecifiedLength {
ctx.WritePlainf("(%d, %d)", opt.ShardBits, opt.RangeBits)
} else {
ctx.WritePlainf("(%d)", opt.ShardBits)
}
}
return nil
})
case ColumnOptionSecondaryEngineAttribute:
ctx.WriteKeyWord("SECONDARY_ENGINE_ATTRIBUTE")
ctx.WritePlain(" = ")
ctx.WriteString(n.StrValue)
default:
return errors.New("An error occurred while splicing ColumnOption")
}
return nil
}
// Accept implements Node Accept interface.
func (n *ColumnOption) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*ColumnOption)
if n.Expr != nil {
node, ok := n.Expr.Accept(v)
if !ok {
return n, false
}
n.Expr = node.(ExprNode)
}
return v.Leave(n)
}
// AutoRandomOption contains the length of shard bits and range bits.
type AutoRandomOption struct {
// ShardBits is the number of bits used to store the shard.
ShardBits int
// RangeBits is the number of int primary key bits that will be used by TiDB.
RangeBits int
}
// IndexVisibility is the option for index visibility.
type IndexVisibility int
// IndexVisibility options.
const (
IndexVisibilityDefault IndexVisibility = iota
IndexVisibilityVisible
IndexVisibilityInvisible
)
// IndexOption is the index options.
//
// KEY_BLOCK_SIZE [=] value
// | index_type
// | WITH PARSER parser_name
// | COMMENT 'string'
// | GLOBAL
//
// See http://dev.mysql.com/doc/refman/5.7/en/create-table.html
// with the addition of Global Index
type IndexOption struct {
node
KeyBlockSize uint64
Tp IndexType
Comment string
ParserName CIStr
Visibility IndexVisibility
PrimaryKeyTp PrimaryKeyType
Global bool
SplitOpt *SplitOption `json:"-"` // SplitOption contains expr nodes, which cannot marshal for DDL job arguments.
SecondaryEngineAttr string
AddColumnarReplicaOnDemand int
Condition ExprNode `json:"-"` // Condition contains expr nodes, which cannot marshal for DDL job arguments. It's used for partial index.
}
// IsEmpty is true if only default options are given
// and it should not be added to the output
func (n *IndexOption) IsEmpty() bool {
if n.PrimaryKeyTp != PrimaryKeyTypeDefault ||
n.KeyBlockSize > 0 ||
n.Tp != IndexTypeInvalid ||
len(n.ParserName.O) > 0 ||
n.Comment != "" ||
n.Global ||
n.Visibility != IndexVisibilityDefault ||
n.SplitOpt != nil ||
len(n.SecondaryEngineAttr) > 0 ||
n.Condition != nil {
return false
}
return true
}
// Restore implements Node interface.
func (n *IndexOption) Restore(ctx *format.RestoreCtx) error {
hasPrevOption := false
if n.AddColumnarReplicaOnDemand > 0 {
ctx.WriteKeyWord("ADD_COLUMNAR_REPLICA_ON_DEMAND")
hasPrevOption = true
}
if n.PrimaryKeyTp != PrimaryKeyTypeDefault {
if hasPrevOption {
ctx.WritePlain(" ")
}
ctx.WriteKeyWordWithSpecialComments(tidb.FeatureIDClusteredIndex, n.PrimaryKeyTp.String())
hasPrevOption = true
}
if n.KeyBlockSize > 0 {
if hasPrevOption {
ctx.WritePlain(" ")
}
ctx.WriteKeyWord("KEY_BLOCK_SIZE")
ctx.WritePlainf("=%d", n.KeyBlockSize)
hasPrevOption = true
}
if n.Tp != IndexTypeInvalid {
if hasPrevOption {
ctx.WritePlain(" ")
}
ctx.WriteKeyWord("USING ")
ctx.WritePlain(n.Tp.String())
hasPrevOption = true
}
if len(n.ParserName.O) > 0 {
if hasPrevOption {
ctx.WritePlain(" ")
}
ctx.WriteKeyWord("WITH PARSER ")
ctx.WriteName(n.ParserName.O)
hasPrevOption = true
}
if n.Comment != "" {
if hasPrevOption {
ctx.WritePlain(" ")
}
ctx.WriteKeyWord("COMMENT ")
ctx.WriteString(n.Comment)
hasPrevOption = true
}
if n.Global {
if hasPrevOption {
ctx.WritePlain(" ")
}
_ = ctx.WriteWithSpecialComments(tidb.FeatureIDGlobalIndex, func() error {
ctx.WriteKeyWord("GLOBAL")
return nil
})
hasPrevOption = true
}
if n.Visibility != IndexVisibilityDefault {
if hasPrevOption {
ctx.WritePlain(" ")
}
switch n.Visibility {
case IndexVisibilityVisible:
ctx.WriteKeyWord("VISIBLE")
case IndexVisibilityInvisible:
ctx.WriteKeyWord("INVISIBLE")
}
hasPrevOption = true
}
if n.SplitOpt != nil {
if hasPrevOption {
ctx.WritePlain(" ")
}
err := ctx.WriteWithSpecialComments(tidb.FeatureIDPresplit, func() error {
ctx.WriteKeyWord("PRE_SPLIT_REGIONS")
ctx.WritePlain(" = ")
if n.SplitOpt.Num != 0 && len(n.SplitOpt.Lower) == 0 {
ctx.WritePlainf("%d", n.SplitOpt.Num)
} else {
ctx.WritePlain("(")
if err := n.SplitOpt.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while splicing IndexOption SplitOpt")
}
ctx.WritePlain(")")
}
return nil
})
if err != nil {
return err
}
hasPrevOption = true
}
if n.SecondaryEngineAttr != "" {
if hasPrevOption {
ctx.WritePlain(" ")
}
ctx.WriteKeyWord("SECONDARY_ENGINE_ATTRIBUTE")
ctx.WritePlain(" = ")
ctx.WriteString(n.SecondaryEngineAttr)
// If a new option is added after, please also uncomment:
//hasPrevOption = true
}
if n.Condition != nil {
if hasPrevOption {
ctx.WritePlain(" ")
}
ctx.WriteKeyWord("WHERE ")
if err := n.Condition.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while splicing IndexOption Condition")
}
}
return nil
}
// Accept implements Node Accept interface.
func (n *IndexOption) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*IndexOption)
if n.SplitOpt != nil {
node, ok := n.SplitOpt.Accept(v)
if !ok {
return n, false
}
n.SplitOpt = node.(*SplitOption)
}
return v.Leave(n)
}
// ConstraintType is the type for Constraint.
type ConstraintType int
// ConstraintTypes
const (
ConstraintNoConstraint ConstraintType = iota
ConstraintPrimaryKey
ConstraintKey
ConstraintIndex
ConstraintUniq
ConstraintUniqKey
ConstraintUniqIndex
ConstraintForeignKey
// ConstraintFulltext is only used in AST.
// It will be rewritten into ConstraintIndex after preprocessor phase.
ConstraintFulltext
ConstraintCheck
// ConstraintVector is only used in AST.
// It will be rewritten into ConstraintColumnar after preprocessor phase.
ConstraintVector
ConstraintColumnar
)
// Constraint is constraint for table definition.
type Constraint struct {
node
// only supported by MariaDB 10.0.2+ (ADD {INDEX|KEY}, ADD FOREIGN KEY),
// see https://mariadb.com/kb/en/library/alter-table/
IfNotExists bool
Tp ConstraintType
Name string
Keys []*IndexPartSpecification // Used for PRIMARY KEY, UNIQUE, ......
Refer *ReferenceDef // Used for foreign key.
Option *IndexOption // Index Options
Expr ExprNode // Used for Check
Enforced bool // Used for Check
InColumn bool // Used for Check
InColumnName string // Used for Check
IsEmptyIndex bool // Used for Check
}
// Restore implements Node interface.
func (n *Constraint) Restore(ctx *format.RestoreCtx) error {
switch n.Tp {
case ConstraintNoConstraint:
return nil
case ConstraintPrimaryKey:
ctx.WriteKeyWord("PRIMARY KEY")
case ConstraintKey:
ctx.WriteKeyWord("KEY")
if n.IfNotExists {
ctx.WriteKeyWordWithSpecialComments(tidb.FeatureIDTiDB, " IF NOT EXISTS")
}
case ConstraintIndex:
ctx.WriteKeyWord("INDEX")
if n.IfNotExists {
ctx.WriteKeyWordWithSpecialComments(tidb.FeatureIDTiDB, " IF NOT EXISTS")
}
case ConstraintUniq:
ctx.WriteKeyWord("UNIQUE")
case ConstraintUniqKey:
ctx.WriteKeyWord("UNIQUE KEY")
case ConstraintUniqIndex:
ctx.WriteKeyWord("UNIQUE INDEX")
case ConstraintFulltext:
ctx.WriteKeyWord("FULLTEXT")
case ConstraintCheck:
if n.Name != "" {
ctx.WriteKeyWord("CONSTRAINT ")
ctx.WriteName(n.Name)
ctx.WritePlain(" ")
}
ctx.WriteKeyWord("CHECK")
ctx.WritePlain("(")
if err := n.Expr.Restore(ctx); err != nil {
return errors.Trace(err)
}
ctx.WritePlain(") ")
if n.Enforced {
ctx.WriteKeyWord("ENFORCED")
} else {
ctx.WriteKeyWord("NOT ENFORCED")
}
return nil
case ConstraintVector:
ctx.WriteKeyWord("VECTOR INDEX")
if n.IfNotExists {
ctx.WriteKeyWordWithSpecialComments(tidb.FeatureIDTiDB, " IF NOT EXISTS")
}
case ConstraintColumnar:
ctx.WriteKeyWord("COLUMNAR INDEX")
if n.IfNotExists {
ctx.WriteKeyWordWithSpecialComments(tidb.FeatureIDTiDB, " IF NOT EXISTS")
}
}
if n.Tp == ConstraintForeignKey {
ctx.WriteKeyWord("CONSTRAINT ")
if n.Name != "" {
ctx.WriteName(n.Name)
ctx.WritePlain(" ")
}
ctx.WriteKeyWord("FOREIGN KEY ")
if n.IfNotExists {
ctx.WriteKeyWordWithSpecialComments(tidb.FeatureIDTiDB, "IF NOT EXISTS ")
}
} else if n.Name != "" || n.IsEmptyIndex {
ctx.WritePlain(" ")
ctx.WriteName(n.Name)
}
ctx.WritePlain("(")
for i, keys := range n.Keys {
if i > 0 {
ctx.WritePlain(", ")
}
if err := keys.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while splicing Constraint Keys: [%v]", i)
}
}
ctx.WritePlain(")")
if n.Refer != nil {
ctx.WritePlain(" ")
if err := n.Refer.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while splicing Constraint Refer")
}
}
if n.Option != nil && !n.Option.IsEmpty() {
ctx.WritePlain(" ")
if err := n.Option.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while splicing Constraint Option")
}
}
return nil
}
// Accept implements Node Accept interface.
func (n *Constraint) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*Constraint)
for i, val := range n.Keys {
node, ok := val.Accept(v)
if !ok {
return n, false
}
n.Keys[i] = node.(*IndexPartSpecification)
}
if n.Refer != nil {
node, ok := n.Refer.Accept(v)
if !ok {
return n, false
}
n.Refer = node.(*ReferenceDef)
}
if n.Option != nil {
node, ok := n.Option.Accept(v)
if !ok {
return n, false
}
n.Option = node.(*IndexOption)
}
if n.Expr != nil {
node, ok := n.Expr.Accept(v)
if !ok {
return n, false
}
n.Expr = node.(ExprNode)
}
return v.Leave(n)
}
// ColumnDef is used for parsing column definition from SQL.
type ColumnDef struct {
node
Name *ColumnName
Tp *types.FieldType
Options []*ColumnOption
}
// Restore implements Node interface.
func (n *ColumnDef) Restore(ctx *format.RestoreCtx) error {
if err := n.Name.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while splicing ColumnDef Name")
}
if n.Tp != nil {
ctx.WritePlain(" ")
if err := n.Tp.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while splicing ColumnDef Type")
}
}
for i, options := range n.Options {
ctx.WritePlain(" ")
if err := options.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while splicing ColumnDef ColumnOption: [%v]", i)
}
}
return nil
}
// Accept implements Node Accept interface.
func (n *ColumnDef) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*ColumnDef)
node, ok := n.Name.Accept(v)
if !ok {
return n, false
}
n.Name = node.(*ColumnName)
for i, val := range n.Options {
node, ok := val.Accept(v)
if !ok {
return n, false
}
n.Options[i] = node.(*ColumnOption)
}
return v.Leave(n)
}
// Validate checks if a column definition is legal.
// For example, generated column definitions that contain such
// column options as `ON UPDATE`, `AUTO_INCREMENT`, `DEFAULT`
// are illegal.
func (n *ColumnDef) Validate() error {
generatedCol := false
var illegalOpt4gc string
for _, opt := range n.Options {
if opt.Tp == ColumnOptionGenerated {
generatedCol = true
}
msg, found := invalidOptionForGeneratedColumn[opt.Tp]
if found {
illegalOpt4gc = msg
}
}
if generatedCol && illegalOpt4gc != "" {
return ErrWrongUsage.GenWithStackByArgs(illegalOpt4gc, "generated column")
}
return nil
}
type TemporaryKeyword int
const (
TemporaryNone TemporaryKeyword = iota
TemporaryGlobal
TemporaryLocal
)
// CreateTableStmt is a statement to create a table.
// See https://dev.mysql.com/doc/refman/5.7/en/create-table.html
type CreateTableStmt struct {
ddlNode
IfNotExists bool
TemporaryKeyword
// Meanless when TemporaryKeyword is not TemporaryGlobal.
// ON COMMIT DELETE ROWS => true
// ON COMMIT PRESERVE ROW => false
OnCommitDelete bool
Table *TableName
ReferTable *TableName
Cols []*ColumnDef
Constraints []*Constraint
Options []*TableOption
Partition *PartitionOptions
OnDuplicate OnDuplicateKeyHandlingType
Select ResultSetNode
}
// Restore implements Node interface.
func (n *CreateTableStmt) Restore(ctx *format.RestoreCtx) error {
switch n.TemporaryKeyword {
case TemporaryNone:
ctx.WriteKeyWord("CREATE TABLE ")
case TemporaryGlobal:
ctx.WriteKeyWord("CREATE GLOBAL TEMPORARY TABLE ")
case TemporaryLocal:
ctx.WriteKeyWord("CREATE TEMPORARY TABLE ")
}
if n.IfNotExists {
ctx.WriteKeyWord("IF NOT EXISTS ")
}
if err := n.Table.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while splicing CreateTableStmt Table")
}
if n.ReferTable != nil {
ctx.WriteKeyWord(" LIKE ")
if err := n.ReferTable.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while splicing CreateTableStmt ReferTable")
}
}
lenCols := len(n.Cols)
lenConstraints := len(n.Constraints)
if lenCols+lenConstraints > 0 {
ctx.WritePlain(" (")
for i, col := range n.Cols {
if i > 0 {
ctx.WritePlain(",")
}
if err := col.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while splicing CreateTableStmt ColumnDef: [%v]", i)
}
}
for i, constraint := range n.Constraints {
if i > 0 || lenCols >= 1 {
ctx.WritePlain(",")
}
if err := constraint.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while splicing CreateTableStmt Constraints: [%v]", i)
}
}
ctx.WritePlain(")")
}
options := tableOptionsWithRestoreTTLFlag(ctx.Flags, n.Options)
for i, option := range options {
ctx.WritePlain(" ")
if err := option.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while splicing CreateTableStmt TableOption: [%v]", i)
}
}
if n.Partition != nil {
ctx.WritePlain(" ")
if err := n.Partition.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while splicing CreateTableStmt Partition")
}
}
if n.Select != nil {
switch n.OnDuplicate {
case OnDuplicateKeyHandlingError:
ctx.WriteKeyWord(" AS ")
case OnDuplicateKeyHandlingIgnore:
ctx.WriteKeyWord(" IGNORE AS ")
case OnDuplicateKeyHandlingReplace:
ctx.WriteKeyWord(" REPLACE AS ")
}
if err := n.Select.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while splicing CreateTableStmt Select")
}
}
if n.TemporaryKeyword == TemporaryGlobal {
if n.OnCommitDelete {
ctx.WriteKeyWord(" ON COMMIT DELETE ROWS")
} else {
ctx.WriteKeyWord(" ON COMMIT PRESERVE ROWS")
}
}
return nil
}
// Accept implements Node Accept interface.
func (n *CreateTableStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*CreateTableStmt)
node, ok := n.Table.Accept(v)
if !ok {
return n, false
}
n.Table = node.(*TableName)
if n.ReferTable != nil {
node, ok = n.ReferTable.Accept(v)
if !ok {
return n, false
}
n.ReferTable = node.(*TableName)
}
for i, val := range n.Cols {
node, ok = val.Accept(v)
if !ok {
return n, false
}
n.Cols[i] = node.(*ColumnDef)
}
for i, val := range n.Constraints {
node, ok = val.Accept(v)
if !ok {
return n, false
}
n.Constraints[i] = node.(*Constraint)
}
if n.Select != nil {
node, ok := n.Select.Accept(v)
if !ok {
return n, false
}
n.Select = node.(ResultSetNode)
}
if n.Partition != nil {
node, ok := n.Partition.Accept(v)
if !ok {
return n, false
}
n.Partition = node.(*PartitionOptions)
}
for i, option := range n.Options {
node, ok = option.Accept(v)
if !ok {
return n, false
}
n.Options[i] = node.(*TableOption)
}
return v.Leave(n)
}
// DropTableStmt is a statement to drop one or more tables.
// See https://dev.mysql.com/doc/refman/5.7/en/drop-table.html
type DropTableStmt struct {
ddlNode
IfExists bool
Tables []*TableName
IsView bool
TemporaryKeyword // make sense ONLY if/when IsView == false
}
// Restore implements Node interface.
func (n *DropTableStmt) Restore(ctx *format.RestoreCtx) error {
if n.IsView {
ctx.WriteKeyWord("DROP VIEW ")
} else {
switch n.TemporaryKeyword {
case TemporaryNone:
ctx.WriteKeyWord("DROP TABLE ")
case TemporaryGlobal:
ctx.WriteKeyWord("DROP GLOBAL TEMPORARY TABLE ")
case TemporaryLocal:
ctx.WriteKeyWord("DROP TEMPORARY TABLE ")
}
}
if n.IfExists {
ctx.WriteKeyWord("IF EXISTS ")
}
for index, table := range n.Tables {
if index != 0 {
ctx.WritePlain(", ")
}
if err := table.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore DropTableStmt.Tables[%d]", index)
}
}
return nil
}
// Accept implements Node Accept interface.
func (n *DropTableStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*DropTableStmt)
for i, val := range n.Tables {
node, ok := val.Accept(v)
if !ok {
return n, false
}
n.Tables[i] = node.(*TableName)
}
return v.Leave(n)
}
// DropPlacementPolicyStmt is a statement to drop a Policy.
type DropPlacementPolicyStmt struct {
ddlNode
IfExists bool
PolicyName CIStr
}
// Restore implements Restore interface.
func (n *DropPlacementPolicyStmt) Restore(ctx *format.RestoreCtx) error {
if ctx.Flags.HasTiDBSpecialCommentFlag() {
return restorePlacementStmtInSpecialComment(ctx, n)
}
ctx.WriteKeyWord("DROP PLACEMENT POLICY ")
if n.IfExists {
ctx.WriteKeyWord("IF EXISTS ")
}
ctx.WriteName(n.PolicyName.O)
return nil
}
func (n *DropPlacementPolicyStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*DropPlacementPolicyStmt)
return v.Leave(n)
}
type DropResourceGroupStmt struct {
ddlNode
IfExists bool
ResourceGroupName CIStr
}
// Restore implements Restore interface.
func (n *DropResourceGroupStmt) Restore(ctx *format.RestoreCtx) error {
if ctx.Flags.HasTiDBSpecialCommentFlag() {
return restoreStmtInSpecialComment(ctx, n, tidb.FeatureIDResourceGroup)
}
ctx.WriteKeyWord("DROP RESOURCE GROUP ")
if n.IfExists {
ctx.WriteKeyWord("IF EXISTS ")
}
ctx.WriteName(n.ResourceGroupName.O)
return nil
}
func (n *DropResourceGroupStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*DropResourceGroupStmt)
return v.Leave(n)
}
type OptimizeTableStmt struct {
ddlNode
NoWriteToBinLog bool
Tables []*TableName
}
func (n *OptimizeTableStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("OPTIMIZE ")
if n.NoWriteToBinLog {
ctx.WriteKeyWord("NO_WRITE_TO_BINLOG ")
}
ctx.WriteKeyWord("TABLE ")
for index, table := range n.Tables {
if index != 0 {
ctx.WritePlain(", ")
}
if err := table.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore OptimizeTableStmt.Tables[%d]", index)
}
}
return nil
}
func (n *OptimizeTableStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*OptimizeTableStmt)
return v.Leave(n)
}
// DropSequenceStmt is a statement to drop a Sequence.
type DropSequenceStmt struct {
ddlNode
IfExists bool
Sequences []*TableName
}
// Restore implements Node interface.
func (n *DropSequenceStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("DROP SEQUENCE ")
if n.IfExists {
ctx.WriteKeyWord("IF EXISTS ")
}
for i, sequence := range n.Sequences {
if i != 0 {
ctx.WritePlain(", ")
}
if err := sequence.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore DropSequenceStmt.Sequences[%d]", i)
}
}
return nil
}
// Accept implements Node Accept interface.
func (n *DropSequenceStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*DropSequenceStmt)
for i, val := range n.Sequences {
node, ok := val.Accept(v)
if !ok {
return n, false
}
n.Sequences[i] = node.(*TableName)
}
return v.Leave(n)
}
// RenameTableStmt is a statement to rename a table.
// See http://dev.mysql.com/doc/refman/5.7/en/rename-table.html
type RenameTableStmt struct {
ddlNode
TableToTables []*TableToTable
}
// Restore implements Node interface.
func (n *RenameTableStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("RENAME TABLE ")
for index, table2table := range n.TableToTables {
if index != 0 {
ctx.WritePlain(", ")
}
if err := table2table.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore RenameTableStmt.TableToTables")
}
}
return nil
}
// Accept implements Node Accept interface.
func (n *RenameTableStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*RenameTableStmt)
for i, t := range n.TableToTables {
node, ok := t.Accept(v)
if !ok {
return n, false
}
n.TableToTables[i] = node.(*TableToTable)
}
return v.Leave(n)
}
// TableToTable represents renaming old table to new table used in RenameTableStmt.
type TableToTable struct {
node
OldTable *TableName
NewTable *TableName
}
// Restore implements Node interface.
func (n *TableToTable) Restore(ctx *format.RestoreCtx) error {
if err := n.OldTable.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore TableToTable.OldTable")
}
ctx.WriteKeyWord(" TO ")
if err := n.NewTable.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore TableToTable.NewTable")
}
return nil
}
// Accept implements Node Accept interface.
func (n *TableToTable) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*TableToTable)
node, ok := n.OldTable.Accept(v)
if !ok {
return n, false
}
n.OldTable = node.(*TableName)
node, ok = n.NewTable.Accept(v)
if !ok {
return n, false
}
n.NewTable = node.(*TableName)
return v.Leave(n)
}
// CreateViewStmt is a statement to create a View.
// See https://dev.mysql.com/doc/refman/5.7/en/create-view.html
type CreateViewStmt struct {
ddlNode
OrReplace bool
ViewName *TableName
Cols []CIStr
Select StmtNode
SchemaCols []CIStr
Algorithm ViewAlgorithm
Definer *auth.UserIdentity
Security ViewSecurity
CheckOption ViewCheckOption
}
// Restore implements Node interface.
func (n *CreateViewStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("CREATE ")
if n.OrReplace {
ctx.WriteKeyWord("OR REPLACE ")
}
ctx.WriteKeyWord("ALGORITHM")
ctx.WritePlain(" = ")
ctx.WriteKeyWord(n.Algorithm.String())
ctx.WriteKeyWord(" DEFINER")
ctx.WritePlain(" = ")
// todo Use n.Definer.Restore(ctx) to replace this part
if n.Definer.CurrentUser {
ctx.WriteKeyWord("current_user")
} else {
ctx.WriteName(n.Definer.Username)
if n.Definer.Hostname != "" {
ctx.WritePlain("@")
ctx.WriteName(n.Definer.Hostname)
}
}
ctx.WriteKeyWord(" SQL SECURITY ")
ctx.WriteKeyWord(n.Security.String())
ctx.WriteKeyWord(" VIEW ")
if err := n.ViewName.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while create CreateViewStmt.ViewName")
}
for i, col := range n.Cols {
if i == 0 {
ctx.WritePlain(" (")
} else {
ctx.WritePlain(",")
}
ctx.WriteName(col.O)
if i == len(n.Cols)-1 {
ctx.WritePlain(")")
}
}
ctx.WriteKeyWord(" AS ")
if err := n.Select.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while create CreateViewStmt.Select")
}
if n.CheckOption != CheckOptionCascaded {
ctx.WriteKeyWord(" WITH ")
ctx.WriteKeyWord(n.CheckOption.String())
ctx.WriteKeyWord(" CHECK OPTION")
}
return nil
}
// Accept implements Node Accept interface.
func (n *CreateViewStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*CreateViewStmt)
node, ok := n.ViewName.Accept(v)
if !ok {
return n, false
}
n.ViewName = node.(*TableName)
selnode, ok := n.Select.Accept(v)
if !ok {
return n, false
}
n.Select = selnode.(StmtNode)
return v.Leave(n)
}
// CreatePlacementPolicyStmt is a statement to create a policy.
type CreatePlacementPolicyStmt struct {
ddlNode
OrReplace bool
IfNotExists bool
PolicyName CIStr
PlacementOptions []*PlacementOption
}
// Restore implements Node interface.
func (n *CreatePlacementPolicyStmt) Restore(ctx *format.RestoreCtx) error {
if ctx.Flags.HasTiDBSpecialCommentFlag() {
return restorePlacementStmtInSpecialComment(ctx, n)
}
ctx.WriteKeyWord("CREATE ")
if n.OrReplace {
ctx.WriteKeyWord("OR REPLACE ")
}
ctx.WriteKeyWord("PLACEMENT POLICY ")
if n.IfNotExists {
ctx.WriteKeyWord("IF NOT EXISTS ")
}
ctx.WriteName(n.PolicyName.O)
for i, option := range n.PlacementOptions {
ctx.WritePlain(" ")
if err := option.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while splicing CreatePlacementPolicy TableOption: [%v]", i)
}
}
return nil
}
// Accept implements Node Accept interface.
func (n *CreatePlacementPolicyStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*CreatePlacementPolicyStmt)
return v.Leave(n)
}
// CreateResourceGroupStmt is a statement to create a policy.
type CreateResourceGroupStmt struct {
ddlNode
IfNotExists bool
ResourceGroupName CIStr
ResourceGroupOptionList []*ResourceGroupOption
}
// Restore implements Node interface.
func (n *CreateResourceGroupStmt) Restore(ctx *format.RestoreCtx) error {
if ctx.Flags.HasTiDBSpecialCommentFlag() {
return restoreStmtInSpecialComment(ctx, n, tidb.FeatureIDResourceGroup)
}
ctx.WriteKeyWord("CREATE ")
ctx.WriteKeyWord("RESOURCE GROUP ")
if n.IfNotExists {
ctx.WriteKeyWord("IF NOT EXISTS ")
}
ctx.WriteName(n.ResourceGroupName.O)
for i, option := range n.ResourceGroupOptionList {
if i > 0 {
ctx.WritePlain(",")
}
ctx.WritePlain(" ")
if err := option.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while splicing CreateResourceGroupStmt Option: [%v]", i)
}
}
return nil
}
// Accept implements Node Accept interface.
func (n *CreateResourceGroupStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*CreateResourceGroupStmt)
return v.Leave(n)
}
// CreateSequenceStmt is a statement to create a Sequence.
type CreateSequenceStmt struct {
ddlNode
// TODO : support or replace if need : care for it will conflict on temporaryOpt.
IfNotExists bool
Name *TableName
SeqOptions []*SequenceOption
TblOptions []*TableOption
}
// Restore implements Node interface.
func (n *CreateSequenceStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("CREATE ")
ctx.WriteKeyWord("SEQUENCE ")
if n.IfNotExists {
ctx.WriteKeyWord("IF NOT EXISTS ")
}
if err := n.Name.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while create CreateSequenceStmt.Name")
}
for i, option := range n.SeqOptions {
ctx.WritePlain(" ")
if err := option.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while splicing CreateSequenceStmt SequenceOption: [%v]", i)
}
}
for i, option := range n.TblOptions {
ctx.WritePlain(" ")
if err := option.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while splicing CreateSequenceStmt TableOption: [%v]", i)
}
}
return nil
}
// Accept implements Node Accept interface.
func (n *CreateSequenceStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*CreateSequenceStmt)
node, ok := n.Name.Accept(v)
if !ok {
return n, false
}
n.Name = node.(*TableName)
return v.Leave(n)
}
// IndexLockAndAlgorithm stores the algorithm option and the lock option.
type IndexLockAndAlgorithm struct {
node
LockTp LockType
AlgorithmTp AlgorithmType
}
// Restore implements Node interface.
func (n *IndexLockAndAlgorithm) Restore(ctx *format.RestoreCtx) error {
hasPrevOption := false
if n.AlgorithmTp != AlgorithmTypeDefault {
ctx.WriteKeyWord("ALGORITHM")
ctx.WritePlain(" = ")
ctx.WriteKeyWord(n.AlgorithmTp.String())
hasPrevOption = true
}
if n.LockTp != LockTypeDefault {
if hasPrevOption {
ctx.WritePlain(" ")
}
ctx.WriteKeyWord("LOCK")
ctx.WritePlain(" = ")
ctx.WriteKeyWord(n.LockTp.String())
}
return nil
}
// Accept implements Node Accept interface.
func (n *IndexLockAndAlgorithm) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*IndexLockAndAlgorithm)
return v.Leave(n)
}
// IndexKeyType is the type for index key.
type IndexKeyType int
// Index key types.
const (
IndexKeyTypeNone IndexKeyType = iota
IndexKeyTypeUnique
IndexKeyTypeSpatial
// IndexKeyTypeFulltext is only used in AST.
// It will be rewritten into IndexKeyTypeFulltext after preprocessor phase.
IndexKeyTypeFulltext
// IndexKeyTypeVector is only used in AST.
// It will be rewritten into IndexKeyTypeColumnar after preprocessor phase.
IndexKeyTypeVector
IndexKeyTypeColumnar
)
// CreateIndexStmt is a statement to create an index.
// See https://dev.mysql.com/doc/refman/5.7/en/create-index.html
type CreateIndexStmt struct {
ddlNode
// only supported by MariaDB 10.0.2+,
// see https://mariadb.com/kb/en/library/create-index/
IfNotExists bool
IndexName string
Table *TableName
IndexPartSpecifications []*IndexPartSpecification
IndexOption *IndexOption
KeyType IndexKeyType
LockAlg *IndexLockAndAlgorithm
}
// Restore implements Node interface.
func (n *CreateIndexStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("CREATE ")
switch n.KeyType {
case IndexKeyTypeUnique:
ctx.WriteKeyWord("UNIQUE ")
case IndexKeyTypeSpatial:
ctx.WriteKeyWord("SPATIAL ")
case IndexKeyTypeFulltext:
ctx.WriteKeyWord("FULLTEXT ")
case IndexKeyTypeVector:
ctx.WriteKeyWord("VECTOR ")
case IndexKeyTypeColumnar:
ctx.WriteKeyWord("COLUMNAR ")
}
ctx.WriteKeyWord("INDEX ")
if n.IfNotExists {
ctx.WriteKeyWordWithSpecialComments(tidb.FeatureIDTiDB, "IF NOT EXISTS ")
}
ctx.WriteName(n.IndexName)
ctx.WriteKeyWord(" ON ")
if err := n.Table.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore CreateIndexStmt.Table")
}
ctx.WritePlain(" (")
for i, indexColName := range n.IndexPartSpecifications {
if i != 0 {
ctx.WritePlain(", ")
}
if err := indexColName.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore CreateIndexStmt.IndexPartSpecifications: [%v]", i)
}
}
ctx.WritePlain(")")
if n.IndexOption != nil && !n.IndexOption.IsEmpty() {
ctx.WritePlain(" ")
if err := n.IndexOption.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore CreateIndexStmt.IndexOption")
}
}
if n.LockAlg != nil {
ctx.WritePlain(" ")
if err := n.LockAlg.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore CreateIndexStmt.LockAlg")
}
}
return nil
}
// Accept implements Node Accept interface.
func (n *CreateIndexStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*CreateIndexStmt)
node, ok := n.Table.Accept(v)
if !ok {
return n, false
}
n.Table = node.(*TableName)
for i, val := range n.IndexPartSpecifications {
node, ok = val.Accept(v)
if !ok {
return n, false
}
n.IndexPartSpecifications[i] = node.(*IndexPartSpecification)
}
if n.IndexOption != nil {
node, ok := n.IndexOption.Accept(v)
if !ok {
return n, false
}
n.IndexOption = node.(*IndexOption)
}
if n.LockAlg != nil {
node, ok := n.LockAlg.Accept(v)
if !ok {
return n, false
}
n.LockAlg = node.(*IndexLockAndAlgorithm)
}
return v.Leave(n)
}
// DropIndexStmt is a statement to drop the index.
// See https://dev.mysql.com/doc/refman/5.7/en/drop-index.html
type DropIndexStmt struct {
ddlNode
IfExists bool
IndexName string
Table *TableName
LockAlg *IndexLockAndAlgorithm
IsHypo bool // whether this operation is for a hypothetical index.
}
// Restore implements Node interface.
func (n *DropIndexStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("DROP INDEX ")
if n.IfExists {
ctx.WriteKeyWordWithSpecialComments(tidb.FeatureIDTiDB, "IF EXISTS ")
}
ctx.WriteName(n.IndexName)
ctx.WriteKeyWord(" ON ")
if err := n.Table.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while add index")
}
if n.LockAlg != nil {
ctx.WritePlain(" ")
if err := n.LockAlg.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore CreateIndexStmt.LockAlg")
}
}
return nil
}
// Accept implements Node Accept interface.
func (n *DropIndexStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*DropIndexStmt)
node, ok := n.Table.Accept(v)
if !ok {
return n, false
}
n.Table = node.(*TableName)
if n.LockAlg != nil {
node, ok := n.LockAlg.Accept(v)
if !ok {
return n, false
}
n.LockAlg = node.(*IndexLockAndAlgorithm)
}
return v.Leave(n)
}
// LockTablesStmt is a statement to lock tables.
type LockTablesStmt struct {
ddlNode
TableLocks []TableLock
}
// TableLock contains the table name and lock type.
type TableLock struct {
Table *TableName
Type TableLockType
}
// Accept implements Node Accept interface.
func (n *LockTablesStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*LockTablesStmt)
for i := range n.TableLocks {
node, ok := n.TableLocks[i].Table.Accept(v)
if !ok {
return n, false
}
n.TableLocks[i].Table = node.(*TableName)
}
return v.Leave(n)
}
// Restore implements Node interface.
func (n *LockTablesStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("LOCK TABLES ")
for i, tl := range n.TableLocks {
if i != 0 {
ctx.WritePlain(", ")
}
if err := tl.Table.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while add index")
}
ctx.WriteKeyWord(" " + tl.Type.String())
}
return nil
}
// UnlockTablesStmt is a statement to unlock tables.
type UnlockTablesStmt struct {
ddlNode
}
// Accept implements Node Accept interface.
func (n *UnlockTablesStmt) Accept(v Visitor) (Node, bool) {
_, _ = v.Enter(n)
return v.Leave(n)
}
// Restore implements Node interface.
func (n *UnlockTablesStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("UNLOCK TABLES")
return nil
}
// CleanupTableLockStmt is a statement to cleanup table lock.
type CleanupTableLockStmt struct {
ddlNode
Tables []*TableName
}
// Accept implements Node Accept interface.
func (n *CleanupTableLockStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*CleanupTableLockStmt)
for i := range n.Tables {
node, ok := n.Tables[i].Accept(v)
if !ok {
return n, false
}
n.Tables[i] = node.(*TableName)
}
return v.Leave(n)
}
// Restore implements Node interface.
func (n *CleanupTableLockStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("ADMIN CLEANUP TABLE LOCK ")
for i, v := range n.Tables {
if i != 0 {
ctx.WritePlain(", ")
}
if err := v.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore CleanupTableLockStmt.Tables[%d]", i)
}
}
return nil
}
// RepairTableStmt is a statement to repair tableInfo.
type RepairTableStmt struct {
ddlNode
Table *TableName
CreateStmt *CreateTableStmt
}
// Accept implements Node Accept interface.
func (n *RepairTableStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*RepairTableStmt)
node, ok := n.Table.Accept(v)
if !ok {
return n, false
}
n.Table = node.(*TableName)
node, ok = n.CreateStmt.Accept(v)
if !ok {
return n, false
}
n.CreateStmt = node.(*CreateTableStmt)
return v.Leave(n)
}
// Restore implements Node interface.
func (n *RepairTableStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("ADMIN REPAIR TABLE ")
if err := n.Table.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore RepairTableStmt.table : [%v]", n.Table)
}
ctx.WritePlain(" ")
if err := n.CreateStmt.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore RepairTableStmt.createStmt : [%v]", n.CreateStmt)
}
return nil
}
// PlacementOptionType is the type for PlacementOption
type PlacementOptionType int
// PlacementOption types.
const (
PlacementOptionPrimaryRegion PlacementOptionType = 0x3000 + iota
PlacementOptionRegions
PlacementOptionFollowerCount
PlacementOptionVoterCount
PlacementOptionLearnerCount
PlacementOptionSchedule
PlacementOptionConstraints
PlacementOptionLeaderConstraints
PlacementOptionLearnerConstraints
PlacementOptionFollowerConstraints
PlacementOptionVoterConstraints
PlacementOptionSurvivalPreferences
PlacementOptionPolicy
)
// PlacementOption is used for parsing placement option.
type PlacementOption struct {
Tp PlacementOptionType
StrValue string
UintValue uint64
}
func (n *PlacementOption) Restore(ctx *format.RestoreCtx) error {
if ctx.Flags.HasSkipPlacementRuleForRestoreFlag() {
return nil
}
fn := func() error {
switch n.Tp {
case PlacementOptionPrimaryRegion:
ctx.WriteKeyWord("PRIMARY_REGION ")
ctx.WritePlain("= ")
ctx.WriteString(n.StrValue)
case PlacementOptionRegions:
ctx.WriteKeyWord("REGIONS ")
ctx.WritePlain("= ")
ctx.WriteString(n.StrValue)
case PlacementOptionFollowerCount:
ctx.WriteKeyWord("FOLLOWERS ")
ctx.WritePlain("= ")
ctx.WritePlainf("%d", n.UintValue)
case PlacementOptionVoterCount:
ctx.WriteKeyWord("VOTERS ")
ctx.WritePlain("= ")
ctx.WritePlainf("%d", n.UintValue)
case PlacementOptionLearnerCount:
ctx.WriteKeyWord("LEARNERS ")
ctx.WritePlain("= ")
ctx.WritePlainf("%d", n.UintValue)
case PlacementOptionSchedule:
ctx.WriteKeyWord("SCHEDULE ")
ctx.WritePlain("= ")
ctx.WriteString(n.StrValue)
case PlacementOptionConstraints:
ctx.WriteKeyWord("CONSTRAINTS ")
ctx.WritePlain("= ")
ctx.WriteString(n.StrValue)
case PlacementOptionLeaderConstraints:
ctx.WriteKeyWord("LEADER_CONSTRAINTS ")
ctx.WritePlain("= ")
ctx.WriteString(n.StrValue)
case PlacementOptionFollowerConstraints:
ctx.WriteKeyWord("FOLLOWER_CONSTRAINTS ")
ctx.WritePlain("= ")
ctx.WriteString(n.StrValue)
case PlacementOptionVoterConstraints:
ctx.WriteKeyWord("VOTER_CONSTRAINTS ")
ctx.WritePlain("= ")
ctx.WriteString(n.StrValue)
case PlacementOptionLearnerConstraints:
ctx.WriteKeyWord("LEARNER_CONSTRAINTS ")
ctx.WritePlain("= ")
ctx.WriteString(n.StrValue)
case PlacementOptionPolicy:
ctx.WriteKeyWord("PLACEMENT POLICY ")
ctx.WritePlain("= ")
ctx.WriteName(n.StrValue)
case PlacementOptionSurvivalPreferences:
ctx.WriteKeyWord("SURVIVAL_PREFERENCES ")
ctx.WritePlain("= ")
ctx.WriteString(n.StrValue)
default:
return errors.Errorf("invalid PlacementOption: %d", n.Tp)
}
return nil
}
// WriteSpecialComment
return ctx.WriteWithSpecialComments(tidb.FeatureIDPlacement, fn)
}
// ResourceGroupOption is used for parsing resource group option.
type ResourceGroupOption struct {
Tp ResourceUnitType
StrValue string
UintValue uint64
Burstable BurstableType
RunawayOptionList []*ResourceGroupRunawayOption
BackgroundOptions []*ResourceGroupBackgroundOption
}
type ResourceUnitType int
const (
// RU mode
ResourceRURate ResourceUnitType = iota
ResourcePriority
ResourceBurstable
// Raw mode
ResourceUnitCPU
ResourceUnitIOReadBandwidth
ResourceUnitIOWriteBandwidth
// Options
ResourceBurstableOpiton
ResourceUnlimitedOption
ResourceGroupRunaway
ResourceGroupBackground
)
type BurstableType int
const (
BurstableDisable BurstableType = iota
BurstableModerated
BurstableUnlimited
)
func (n *ResourceGroupOption) Restore(ctx *format.RestoreCtx) error {
switch n.Tp {
case ResourceRURate:
ctx.WriteKeyWord("RU_PER_SEC ")
ctx.WritePlain("= ")
if n.Burstable == BurstableUnlimited {
ctx.WriteKeyWord("UNLIMITED")
} else {
ctx.WritePlainf("%d", n.UintValue)
}
case ResourcePriority:
ctx.WriteKeyWord("PRIORITY ")
ctx.WritePlain("= ")
ctx.WriteKeyWord(PriorityValueToName(n.UintValue))
case ResourceUnitCPU:
ctx.WriteKeyWord("CPU ")
ctx.WritePlain("= ")
ctx.WriteString(n.StrValue)
case ResourceUnitIOReadBandwidth:
ctx.WriteKeyWord("IO_READ_BANDWIDTH ")
ctx.WritePlain("= ")
ctx.WriteString(n.StrValue)
case ResourceUnitIOWriteBandwidth:
ctx.WriteKeyWord("IO_WRITE_BANDWIDTH ")
ctx.WritePlain("= ")
ctx.WriteString(n.StrValue)
case ResourceBurstable:
ctx.WriteKeyWord("BURSTABLE ")
ctx.WritePlain("= ")
switch n.Burstable {
case BurstableDisable:
ctx.WritePlain("OFF")
case BurstableModerated:
ctx.WritePlain("MODERATED")
case BurstableUnlimited:
ctx.WritePlain("UNLIMITED")
}
case ResourceGroupRunaway:
ctx.WritePlain("QUERY_LIMIT ")
ctx.WritePlain("= ")
if len(n.RunawayOptionList) > 0 {
ctx.WritePlain("(")
for i, option := range n.RunawayOptionList {
if i > 0 {
ctx.WritePlain(" ")
}
if err := option.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while splicing ResourceGroupRunaway Option: [%v]", option)
}
}
ctx.WritePlain(")")
} else {
ctx.WritePlain("NULL")
}
case ResourceGroupBackground:
ctx.WritePlain("BACKGROUND ")
ctx.WritePlain("= ")
if len(n.BackgroundOptions) > 0 {
ctx.WritePlain("(")
for i, option := range n.BackgroundOptions {
if i > 0 {
ctx.WritePlain(", ")
}
if err := option.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while splicing ResourceGroup Background Option: [%v]", option)
}
}
ctx.WritePlain(")")
} else {
ctx.WritePlain("NULL")
}
default:
return errors.Errorf("invalid ResourceGroupOption: %d", n.Tp)
}
return nil
}
// ResourceGroupRunawayOption is used for parsing resource group runaway rule option.
type ResourceGroupRunawayOption struct {
Tp RunawayOptionType
RuleOption *ResourceGroupRunawayRuleOption
ActionOption *ResourceGroupRunawayActionOption
WatchOption *ResourceGroupRunawayWatchOption
}
func (n *ResourceGroupRunawayOption) Restore(ctx *format.RestoreCtx) error {
switch n.Tp {
case RunawayRule:
n.RuleOption.restore(ctx)
case RunawayAction:
n.ActionOption.Restore(ctx)
case RunawayWatch:
n.WatchOption.restore(ctx)
default:
return errors.Errorf("invalid ResourceGroupRunawayOption: %d", n.Tp)
}
return nil
}
// ResourceGroupRunawayRuleOption is used for parsing the resource group/query watch runaway rule.
type ResourceGroupRunawayRuleOption struct {
Tp RunawayRuleOptionType
ExecElapsed string
ProcessedKeys int64
RequestUnit int64
}
type RunawayRuleOptionType int
const (
RunawayRuleExecElapsed RunawayRuleOptionType = iota
RunawayRuleProcessedKeys
RunawayRuleRequestUnit
)
func (n *ResourceGroupRunawayRuleOption) restore(ctx *format.RestoreCtx) error {
switch n.Tp {
case RunawayRuleExecElapsed:
ctx.WriteKeyWord("EXEC_ELAPSED ")
ctx.WritePlain("= ")
ctx.WriteString(n.ExecElapsed)
case RunawayRuleProcessedKeys:
ctx.WriteKeyWord("PROCESSED_KEYS ")
ctx.WritePlain("= ")
ctx.WritePlainf("%d", n.ProcessedKeys)
case RunawayRuleRequestUnit:
ctx.WriteKeyWord("RU ")
ctx.WritePlain("= ")
ctx.WritePlainf("%d", n.RequestUnit)
}
return nil
}
// ResourceGroupRunawayActionOption is used for parsing the resource group runaway action.
type ResourceGroupRunawayActionOption struct {
node
Type RunawayActionType
SwitchGroupName CIStr
}
// Restore implements Node interface.
func (n *ResourceGroupRunawayActionOption) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("ACTION ")
ctx.WritePlain("= ")
switch n.Type {
case RunawayActionNone, RunawayActionDryRun, RunawayActionCooldown, RunawayActionKill:
ctx.WriteKeyWord(n.Type.String())
case RunawayActionSwitchGroup:
switchGroup := n.SwitchGroupName.String()
if len(switchGroup) == 0 {
return errors.New("SWITCH_GROUP runaway watch action requires a non-empty group name")
}
ctx.WriteKeyWord("SWITCH_GROUP")
ctx.WritePlain("(")
ctx.WriteName(switchGroup)
ctx.WritePlain(")")
}
return nil
}
// Accept implements Node Accept interface.
func (n *ResourceGroupRunawayActionOption) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
return v.Leave(n)
}
// ResourceGroupRunawayWatchOption is used for parsing the resource group runaway watch.
type ResourceGroupRunawayWatchOption struct {
Type RunawayWatchType
Duration string
}
func (n *ResourceGroupRunawayWatchOption) restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("WATCH ")
ctx.WritePlain("= ")
ctx.WriteKeyWord(n.Type.String())
ctx.WritePlain(" ")
ctx.WriteKeyWord("DURATION ")
ctx.WritePlain("= ")
if len(n.Duration) > 0 {
ctx.WriteString(n.Duration)
} else {
ctx.WriteKeyWord("UNLIMITED")
}
return nil
}
type BackgroundOptionType int
const (
BackgroundOptionNone BackgroundOptionType = iota
BackgroundOptionTaskNames
BackgroundUtilizationLimit
)
// ResourceGroupBackgroundOption is used to config background job settings.
type ResourceGroupBackgroundOption struct {
Type BackgroundOptionType
StrValue string
UintValue uint64
}
func (n *ResourceGroupBackgroundOption) Restore(ctx *format.RestoreCtx) error {
switch n.Type {
case BackgroundOptionTaskNames:
ctx.WriteKeyWord("TASK_TYPES")
ctx.WritePlain(" = ")
ctx.WriteString(n.StrValue)
case BackgroundUtilizationLimit:
ctx.WriteKeyWord("UTILIZATION_LIMIT")
ctx.WritePlain(" = ")
ctx.WritePlainf("%d", n.UintValue)
default:
return errors.Errorf("unknown ResourceGroupBackgroundOption: %d", n.Type)
}
return nil
}
type StatsOptionType int
const (
StatsOptionBuckets StatsOptionType = 0x5000 + iota
StatsOptionTopN
StatsOptionColsChoice
StatsOptionColList
StatsOptionSampleRate
)
// TableOptionType is the type for TableOption
type TableOptionType int
// TableOption types.
const (
TableOptionNone TableOptionType = iota
TableOptionEngine
TableOptionCharset
TableOptionCollate
TableOptionAutoIdCache //nolint:revive
TableOptionAutoIncrement
TableOptionAutoRandomBase
TableOptionComment
TableOptionAvgRowLength
TableOptionCheckSum
TableOptionCompression
TableOptionConnection
TableOptionPassword
TableOptionKeyBlockSize
TableOptionMaxRows
TableOptionMinRows
TableOptionDelayKeyWrite
TableOptionRowFormat
TableOptionStatsPersistent
TableOptionStatsAutoRecalc
TableOptionShardRowID
TableOptionPreSplitRegion
TableOptionPackKeys
TableOptionTablespace
TableOptionNodegroup
TableOptionDataDirectory
TableOptionIndexDirectory
TableOptionStorageMedia
TableOptionStatsSamplePages
TableOptionSecondaryEngine
TableOptionSecondaryEngineNull
TableOptionInsertMethod
TableOptionTableCheckSum
TableOptionUnion
TableOptionEncryption
TableOptionTTL
TableOptionTTLEnable
TableOptionTTLJobInterval
TableOptionEngineAttribute
TableOptionSecondaryEngineAttribute
TableOptionPlacementPolicy = TableOptionType(PlacementOptionPolicy)
TableOptionStatsBuckets = TableOptionType(StatsOptionBuckets)
TableOptionStatsTopN = TableOptionType(StatsOptionTopN)
TableOptionStatsColsChoice = TableOptionType(StatsOptionColsChoice)
TableOptionStatsColList = TableOptionType(StatsOptionColList)
TableOptionStatsSampleRate = TableOptionType(StatsOptionSampleRate)
)
// RowFormat types
const (
RowFormatDefault uint64 = iota + 1
RowFormatDynamic
RowFormatFixed
RowFormatCompressed
RowFormatRedundant
RowFormatCompact
TokuDBRowFormatDefault
TokuDBRowFormatFast
TokuDBRowFormatSmall
TokuDBRowFormatZlib
TokuDBRowFormatQuickLZ
TokuDBRowFormatLzma
TokuDBRowFormatSnappy
TokuDBRowFormatUncompressed
TokuDBRowFormatZstd
)
// OnDuplicateKeyHandlingType is the option that handle unique key values in 'CREATE TABLE ... SELECT' or `LOAD DATA`.
// See https://dev.mysql.com/doc/refman/5.7/en/create-table-select.html
// See https://dev.mysql.com/doc/refman/5.7/en/load-data.html
type OnDuplicateKeyHandlingType int
// OnDuplicateKeyHandling types
const (
OnDuplicateKeyHandlingError OnDuplicateKeyHandlingType = iota
OnDuplicateKeyHandlingIgnore
OnDuplicateKeyHandlingReplace
)
const (
TableOptionCharsetWithoutConvertTo uint64 = 0
TableOptionCharsetWithConvertTo uint64 = 1
)
// TableOption is used for parsing table option from SQL.
type TableOption struct {
node
Tp TableOptionType
Default bool
StrValue string
UintValue uint64
BoolValue bool
TimeUnitValue *TimeUnitExpr
Value ValueExpr
TableNames []*TableName
ColumnName *ColumnName
}
func (n *TableOption) Restore(ctx *format.RestoreCtx) error {
switch n.Tp {
case TableOptionEngine:
ctx.WriteKeyWord("ENGINE ")
ctx.WritePlain("= ")
if n.StrValue != "" {
ctx.WritePlain(n.StrValue)
} else {
ctx.WritePlain("''")
}
case TableOptionCharset:
if n.UintValue == TableOptionCharsetWithConvertTo {
ctx.WriteKeyWord("CONVERT TO ")
} else {
ctx.WriteKeyWord("DEFAULT ")
}
ctx.WriteKeyWord("CHARACTER SET ")
if n.UintValue == TableOptionCharsetWithoutConvertTo {
ctx.WriteKeyWord("= ")
}
if n.Default {
ctx.WriteKeyWord("DEFAULT")
} else {
ctx.WriteKeyWord(n.StrValue)
}
case TableOptionCollate:
ctx.WriteKeyWord("DEFAULT COLLATE ")
ctx.WritePlain("= ")
ctx.WriteKeyWord(n.StrValue)
case TableOptionAutoIncrement:
if n.BoolValue {
ctx.WriteKeyWordWithSpecialComments(tidb.FeatureIDForceAutoInc, "FORCE ")
}
ctx.WriteKeyWord("AUTO_INCREMENT ")
ctx.WritePlain("= ")
ctx.WritePlainf("%d", n.UintValue)
case TableOptionAutoIdCache:
_ = ctx.WriteWithSpecialComments(tidb.FeatureIDAutoIDCache, func() error {
ctx.WriteKeyWord("AUTO_ID_CACHE ")
ctx.WritePlain("= ")
ctx.WritePlainf("%d", n.UintValue)
return nil
})
case TableOptionAutoRandomBase:
if n.BoolValue {
ctx.WriteKeyWordWithSpecialComments(tidb.FeatureIDForceAutoInc, "FORCE ")
}
_ = ctx.WriteWithSpecialComments(tidb.FeatureIDAutoRandomBase, func() error {
ctx.WriteKeyWord("AUTO_RANDOM_BASE ")
ctx.WritePlain("= ")
ctx.WritePlainf("%d", n.UintValue)
return nil
})
case TableOptionComment:
ctx.WriteKeyWord("COMMENT ")
ctx.WritePlain("= ")
ctx.WriteString(n.StrValue)
case TableOptionAvgRowLength:
ctx.WriteKeyWord("AVG_ROW_LENGTH ")
ctx.WritePlain("= ")
ctx.WritePlainf("%d", n.UintValue)
case TableOptionCheckSum:
ctx.WriteKeyWord("CHECKSUM ")
ctx.WritePlain("= ")
ctx.WritePlainf("%d", n.UintValue)
case TableOptionCompression:
ctx.WriteKeyWord("COMPRESSION ")
ctx.WritePlain("= ")
ctx.WriteString(n.StrValue)
case TableOptionConnection:
ctx.WriteKeyWord("CONNECTION ")
ctx.WritePlain("= ")
ctx.WriteString(n.StrValue)
case TableOptionPassword:
ctx.WriteKeyWord("PASSWORD ")
ctx.WritePlain("= ")
ctx.WriteString(n.StrValue)
case TableOptionKeyBlockSize:
ctx.WriteKeyWord("KEY_BLOCK_SIZE ")
ctx.WritePlain("= ")
ctx.WritePlainf("%d", n.UintValue)
case TableOptionMaxRows:
ctx.WriteKeyWord("MAX_ROWS ")
ctx.WritePlain("= ")
ctx.WritePlainf("%d", n.UintValue)
case TableOptionMinRows:
ctx.WriteKeyWord("MIN_ROWS ")
ctx.WritePlain("= ")
ctx.WritePlainf("%d", n.UintValue)
case TableOptionDelayKeyWrite:
ctx.WriteKeyWord("DELAY_KEY_WRITE ")
ctx.WritePlain("= ")
ctx.WritePlainf("%d", n.UintValue)
case TableOptionRowFormat:
ctx.WriteKeyWord("ROW_FORMAT ")
ctx.WritePlain("= ")
switch n.UintValue {
case RowFormatDefault:
ctx.WriteKeyWord("DEFAULT")
case RowFormatDynamic:
ctx.WriteKeyWord("DYNAMIC")
case RowFormatFixed:
ctx.WriteKeyWord("FIXED")
case RowFormatCompressed:
ctx.WriteKeyWord("COMPRESSED")
case RowFormatRedundant:
ctx.WriteKeyWord("REDUNDANT")
case RowFormatCompact:
ctx.WriteKeyWord("COMPACT")
case TokuDBRowFormatDefault:
ctx.WriteKeyWord("TOKUDB_DEFAULT")
case TokuDBRowFormatFast:
ctx.WriteKeyWord("TOKUDB_FAST")
case TokuDBRowFormatSmall:
ctx.WriteKeyWord("TOKUDB_SMALL")
case TokuDBRowFormatZlib:
ctx.WriteKeyWord("TOKUDB_ZLIB")
case TokuDBRowFormatQuickLZ:
ctx.WriteKeyWord("TOKUDB_QUICKLZ")
case TokuDBRowFormatLzma:
ctx.WriteKeyWord("TOKUDB_LZMA")
case TokuDBRowFormatSnappy:
ctx.WriteKeyWord("TOKUDB_SNAPPY")
case TokuDBRowFormatZstd:
ctx.WriteKeyWord("TOKUDB_ZSTD")
case TokuDBRowFormatUncompressed:
ctx.WriteKeyWord("TOKUDB_UNCOMPRESSED")
default:
return errors.Errorf("invalid TableOption: TableOptionRowFormat: %d", n.UintValue)
}
case TableOptionStatsPersistent:
// TODO: not support
ctx.WriteKeyWord("STATS_PERSISTENT ")
ctx.WritePlain("= ")
ctx.WriteKeyWord("DEFAULT")
ctx.WritePlain(" /* TableOptionStatsPersistent is not supported */ ")
case TableOptionStatsAutoRecalc:
ctx.WriteKeyWord("STATS_AUTO_RECALC ")
ctx.WritePlain("= ")
if n.Default {
ctx.WriteKeyWord("DEFAULT")
} else {
ctx.WritePlainf("%d", n.UintValue)
}
case TableOptionShardRowID:
_ = ctx.WriteWithSpecialComments(tidb.FeatureIDTiDB, func() error {
ctx.WriteKeyWord("SHARD_ROW_ID_BITS ")
ctx.WritePlainf("= %d", n.UintValue)
return nil
})
case TableOptionPreSplitRegion:
_ = ctx.WriteWithSpecialComments(tidb.FeatureIDTiDB, func() error {
ctx.WriteKeyWord("PRE_SPLIT_REGIONS ")
ctx.WritePlainf("= %d", n.UintValue)
return nil
})
case TableOptionPackKeys:
// TODO: not support
ctx.WriteKeyWord("PACK_KEYS ")
ctx.WritePlain("= ")
ctx.WriteKeyWord("DEFAULT")
ctx.WritePlain(" /* TableOptionPackKeys is not supported */ ")
case TableOptionTablespace:
ctx.WriteKeyWord("TABLESPACE ")
ctx.WritePlain("= ")
ctx.WriteName(n.StrValue)
case TableOptionNodegroup:
ctx.WriteKeyWord("NODEGROUP ")
ctx.WritePlainf("= %d", n.UintValue)
case TableOptionDataDirectory:
ctx.WriteKeyWord("DATA DIRECTORY ")
ctx.WritePlain("= ")
ctx.WriteString(n.StrValue)
case TableOptionIndexDirectory:
ctx.WriteKeyWord("INDEX DIRECTORY ")
ctx.WritePlain("= ")
ctx.WriteString(n.StrValue)
case TableOptionStorageMedia:
ctx.WriteKeyWord("STORAGE ")
ctx.WriteKeyWord(n.StrValue)
case TableOptionStatsSamplePages:
ctx.WriteKeyWord("STATS_SAMPLE_PAGES ")
ctx.WritePlain("= ")
if n.Default {
ctx.WriteKeyWord("DEFAULT")
} else {
ctx.WritePlainf("%d", n.UintValue)
}
case TableOptionSecondaryEngine:
ctx.WriteKeyWord("SECONDARY_ENGINE ")
ctx.WritePlain("= ")
ctx.WriteString(n.StrValue)
case TableOptionSecondaryEngineNull:
ctx.WriteKeyWord("SECONDARY_ENGINE ")
ctx.WritePlain("= ")
ctx.WriteKeyWord("NULL")
case TableOptionSecondaryEngineAttribute:
ctx.WriteKeyWord("SECONDARY_ENGINE_ATTRIBUTE ")
ctx.WritePlain("= ")
ctx.WriteString(n.StrValue)
case TableOptionInsertMethod:
ctx.WriteKeyWord("INSERT_METHOD ")
ctx.WritePlain("= ")
ctx.WriteKeyWord(n.StrValue)
case TableOptionTableCheckSum:
ctx.WriteKeyWord("TABLE_CHECKSUM ")
ctx.WritePlain("= ")
ctx.WritePlainf("%d", n.UintValue)
case TableOptionUnion:
ctx.WriteKeyWord("UNION ")
ctx.WritePlain("= (")
for i, tableName := range n.TableNames {
if i != 0 {
ctx.WritePlain(",")
}
tableName.Restore(ctx)
}
ctx.WritePlain(")")
case TableOptionEncryption:
ctx.WriteKeyWord("ENCRYPTION ")
ctx.WritePlain("= ")
ctx.WriteString(n.StrValue)
case TableOptionPlacementPolicy:
if ctx.Flags.HasSkipPlacementRuleForRestoreFlag() {
return nil
}
placementOpt := PlacementOption{
Tp: PlacementOptionPolicy,
UintValue: n.UintValue,
StrValue: n.StrValue,
}
return placementOpt.Restore(ctx)
case TableOptionStatsBuckets:
ctx.WriteKeyWord("STATS_BUCKETS ")
ctx.WritePlain("= ")
if n.Default {
ctx.WriteKeyWord("DEFAULT")
} else {
ctx.WritePlainf("%d", n.UintValue)
}
case TableOptionStatsTopN:
ctx.WriteKeyWord("STATS_TOPN ")
ctx.WritePlain("= ")
if n.Default {
ctx.WriteKeyWord("DEFAULT")
} else {
ctx.WritePlainf("%d", n.UintValue)
}
case TableOptionStatsSampleRate:
ctx.WriteKeyWord("STATS_SAMPLE_RATE ")
ctx.WritePlain("= ")
if n.Default {
ctx.WriteKeyWord("DEFAULT")
} else {
ctx.WritePlainf("%v", n.Value.GetValue())
}
case TableOptionStatsColsChoice:
ctx.WriteKeyWord("STATS_COL_CHOICE ")
ctx.WritePlain("= ")
if n.Default {
ctx.WriteKeyWord("DEFAULT")
} else {
ctx.WriteString(n.StrValue)
}
case TableOptionStatsColList:
ctx.WriteKeyWord("STATS_COL_LIST ")
ctx.WritePlain("= ")
if n.Default {
ctx.WriteKeyWord("DEFAULT")
} else {
ctx.WriteString(n.StrValue)
}
case TableOptionTTL:
_ = ctx.WriteWithSpecialComments(tidb.FeatureIDTTL, func() error {
ctx.WriteKeyWord("TTL ")
ctx.WritePlain("= ")
ctx.WriteName(n.ColumnName.Name.String())
ctx.WritePlain(" + INTERVAL ")
err := n.Value.Restore(ctx)
ctx.WritePlain(" ")
if err != nil {
return err
}
return n.TimeUnitValue.Restore(ctx)
})
case TableOptionTTLEnable:
_ = ctx.WriteWithSpecialComments(tidb.FeatureIDTTL, func() error {
ctx.WriteKeyWord("TTL_ENABLE ")
ctx.WritePlain("= ")
if n.BoolValue {
ctx.WriteString("ON")
} else {
ctx.WriteString("OFF")
}
return nil
})
case TableOptionTTLJobInterval:
_ = ctx.WriteWithSpecialComments(tidb.FeatureIDTTL, func() error {
ctx.WriteKeyWord("TTL_JOB_INTERVAL ")
ctx.WritePlain("= ")
ctx.WriteString(n.StrValue)
return nil
})
default:
return errors.Errorf("invalid TableOption: %d", n.Tp)
}
return nil
}
// Accept implements Node Accept interface.
func (n *TableOption) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*TableOption)
if n.Value != nil {
node, ok := n.Value.Accept(v)
if !ok {
return n, false
}
n.Value = node.(ValueExpr)
}
if n.TimeUnitValue != nil {
node, ok := n.TimeUnitValue.Accept(v)
if !ok {
return n, false
}
n.TimeUnitValue = node.(*TimeUnitExpr)
}
return v.Leave(n)
}
// SequenceOptionType is the type for SequenceOption
type SequenceOptionType int
// SequenceOption types.
const (
SequenceOptionNone SequenceOptionType = iota
SequenceOptionIncrementBy
SequenceStartWith
SequenceNoMinValue
SequenceMinValue
SequenceNoMaxValue
SequenceMaxValue
SequenceNoCache
SequenceCache
SequenceNoCycle
SequenceCycle
// SequenceRestart is only used in alter sequence statement.
SequenceRestart
SequenceRestartWith
)
// SequenceOption is used for parsing sequence option from SQL.
type SequenceOption struct {
Tp SequenceOptionType
IntValue int64
}
func (n *SequenceOption) Restore(ctx *format.RestoreCtx) error {
switch n.Tp {
case SequenceOptionIncrementBy:
ctx.WriteKeyWord("INCREMENT BY ")
ctx.WritePlainf("%d", n.IntValue)
case SequenceStartWith:
ctx.WriteKeyWord("START WITH ")
ctx.WritePlainf("%d", n.IntValue)
case SequenceNoMinValue:
ctx.WriteKeyWord("NO MINVALUE")
case SequenceMinValue:
ctx.WriteKeyWord("MINVALUE ")
ctx.WritePlainf("%d", n.IntValue)
case SequenceNoMaxValue:
ctx.WriteKeyWord("NO MAXVALUE")
case SequenceMaxValue:
ctx.WriteKeyWord("MAXVALUE ")
ctx.WritePlainf("%d", n.IntValue)
case SequenceNoCache:
ctx.WriteKeyWord("NOCACHE")
case SequenceCache:
ctx.WriteKeyWord("CACHE ")
ctx.WritePlainf("%d", n.IntValue)
case SequenceNoCycle:
ctx.WriteKeyWord("NOCYCLE")
case SequenceCycle:
ctx.WriteKeyWord("CYCLE")
case SequenceRestart:
ctx.WriteKeyWord("RESTART")
case SequenceRestartWith:
ctx.WriteKeyWord("RESTART WITH ")
ctx.WritePlainf("%d", n.IntValue)
default:
return errors.Errorf("invalid SequenceOption: %d", n.Tp)
}
return nil
}
// ColumnPositionType is the type for ColumnPosition.
type ColumnPositionType int
// ColumnPosition Types
const (
ColumnPositionNone ColumnPositionType = iota
ColumnPositionFirst
ColumnPositionAfter
)
// ColumnPosition represent the position of the newly added column
type ColumnPosition struct {
node
// Tp is either ColumnPositionNone, ColumnPositionFirst or ColumnPositionAfter.
Tp ColumnPositionType
// RelativeColumn is the column the newly added column after if type is ColumnPositionAfter
RelativeColumn *ColumnName
}
// Restore implements Node interface.
func (n *ColumnPosition) Restore(ctx *format.RestoreCtx) error {
switch n.Tp {
case ColumnPositionNone:
// do nothing
case ColumnPositionFirst:
ctx.WriteKeyWord("FIRST")
case ColumnPositionAfter:
ctx.WriteKeyWord("AFTER ")
if err := n.RelativeColumn.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore ColumnPosition.RelativeColumn")
}
default:
return errors.Errorf("invalid ColumnPositionType: %d", n.Tp)
}
return nil
}
// Accept implements Node Accept interface.
func (n *ColumnPosition) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*ColumnPosition)
if n.RelativeColumn != nil {
node, ok := n.RelativeColumn.Accept(v)
if !ok {
return n, false
}
n.RelativeColumn = node.(*ColumnName)
}
return v.Leave(n)
}
// AlterTableType is the type for AlterTableSpec.
type AlterTableType int
// AlterTable types.
const (
AlterTableOption AlterTableType = iota + 1
AlterTableAddColumns
AlterTableAddConstraint
AlterTableDropColumn
AlterTableDropPrimaryKey
AlterTableDropIndex
AlterTableDropForeignKey
AlterTableModifyColumn
AlterTableChangeColumn
AlterTableRenameColumn
AlterTableRenameTable
AlterTableAlterColumn
AlterTableLock
AlterTableWriteable
AlterTableAlgorithm
AlterTableRenameIndex
AlterTableForce
AlterTableAddPartitions
// A tombstone for `AlterTableAlterPartition`. It will never be used anymore.
// Just left a tombstone here to keep the enum number unchanged.
__DEPRECATED_AlterTableAlterPartition //nolint:revive
AlterTablePartitionAttributes
AlterTablePartitionOptions
AlterTableCoalescePartitions
AlterTableDropPartition
AlterTableTruncatePartition
AlterTablePartition
AlterTableEnableKeys
AlterTableDisableKeys
AlterTableRemovePartitioning
AlterTableWithValidation
AlterTableWithoutValidation
AlterTableSecondaryLoad
AlterTableSecondaryUnload
AlterTableRebuildPartition
AlterTableReorganizePartition
AlterTableCheckPartitions
AlterTableExchangePartition
AlterTableOptimizePartition
AlterTableRepairPartition
AlterTableImportPartitionTablespace
AlterTableDiscardPartitionTablespace
AlterTableAlterCheck
AlterTableDropCheck
AlterTableImportTablespace
AlterTableDiscardTablespace
AlterTableIndexInvisible
// TODO: Add more actions
AlterTableOrderByColumns
// AlterTableSetTiFlashReplica uses to set the table TiFlash replica.
AlterTableSetTiFlashReplica
// A tombstone for `AlterTablePlacement`. It will never be used anymore.
// Just left a tombstone here to keep the enum number unchanged.
__DEPRECATED_AlterTablePlacement //nolint:revive
AlterTableAddStatistics
AlterTableDropStatistics
AlterTableAttributes
AlterTableCache
AlterTableNoCache
AlterTableStatsOptions
AlterTableDropFirstPartition
AlterTableAddLastPartition
AlterTableReorganizeLastPartition
AlterTableReorganizeFirstPartition
AlterTableRemoveTTL
)
// LockType is the type for AlterTableSpec.
// See https://dev.mysql.com/doc/refman/5.7/en/alter-table.html#alter-table-concurrency
type LockType byte
func (n LockType) String() string {
switch n {
case LockTypeNone:
return "NONE"
case LockTypeDefault:
return "DEFAULT"
case LockTypeShared:
return "SHARED"
case LockTypeExclusive:
return "EXCLUSIVE"
}
return ""
}
// Lock Types.
const (
LockTypeNone LockType = iota + 1
LockTypeDefault
LockTypeShared
LockTypeExclusive
)
// AlgorithmType is the algorithm of the DDL operations.
// See https://dev.mysql.com/doc/refman/8.0/en/alter-table.html#alter-table-performance.
type AlgorithmType byte
// DDL algorithms.
// For now, TiDB only supported inplace and instance algorithms. If the user specify `copy`,
// will get an error.
const (
AlgorithmTypeDefault AlgorithmType = iota
AlgorithmTypeCopy
AlgorithmTypeInplace
AlgorithmTypeInstant
)
func (a AlgorithmType) String() string {
switch a {
case AlgorithmTypeDefault:
return "DEFAULT"
case AlgorithmTypeCopy:
return "COPY"
case AlgorithmTypeInplace:
return "INPLACE"
case AlgorithmTypeInstant:
return "INSTANT"
default:
return "DEFAULT"
}
}
// AlterTableSpec represents alter table specification.
type AlterTableSpec struct {
node
// only supported by MariaDB 10.0.2+ (DROP COLUMN, CHANGE COLUMN, MODIFY COLUMN, DROP INDEX, DROP FOREIGN KEY, DROP PARTITION)
// see https://mariadb.com/kb/en/library/alter-table/
IfExists bool
// only supported by MariaDB 10.0.2+ (ADD COLUMN, ADD PARTITION)
// see https://mariadb.com/kb/en/library/alter-table/
IfNotExists bool
NoWriteToBinlog bool
OnAllPartitions bool
Tp AlterTableType
Name string
IndexName CIStr
Constraint *Constraint
Options []*TableOption
OrderByList []*AlterOrderItem
NewTable *TableName
NewColumns []*ColumnDef
NewConstraints []*Constraint
OldColumnName *ColumnName
NewColumnName *ColumnName
Position *ColumnPosition
LockType LockType
Algorithm AlgorithmType
Comment string
FromKey CIStr
ToKey CIStr
Partition *PartitionOptions
PartitionNames []CIStr
PartDefinitions []*PartitionDefinition
WithValidation bool
Num uint64
Visibility IndexVisibility
TiFlashReplica *TiFlashReplicaSpec
Writeable bool
Statistics *StatisticsSpec
AttributesSpec *AttributesSpec
StatsOptionsSpec *StatsOptionsSpec
}
type TiFlashReplicaSpec struct {
Count uint64
Labels []string
Hypo bool // hypothetical replica is used by index advisor
}
// AlterOrderItem represents an item in order by at alter table stmt.
type AlterOrderItem struct {
node
Column *ColumnName
Desc bool
}
// Restore implements Node interface.
func (n *AlterOrderItem) Restore(ctx *format.RestoreCtx) error {
if err := n.Column.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore AlterOrderItem.Column")
}
if n.Desc {
ctx.WriteKeyWord(" DESC")
}
return nil
}
func (n *AlterTableSpec) IsAllPlacementRule() bool {
switch n.Tp {
case AlterTablePartitionAttributes, AlterTablePartitionOptions, AlterTableOption, AlterTableAttributes:
for _, o := range n.Options {
if o.Tp != TableOptionPlacementPolicy {
return false
}
}
return true
default:
return false
}
}
// Restore implements Node interface.
func (n *AlterTableSpec) Restore(ctx *format.RestoreCtx) error {
if n.IsAllPlacementRule() && ctx.Flags.HasSkipPlacementRuleForRestoreFlag() {
return nil
}
switch n.Tp {
case AlterTableSetTiFlashReplica:
ctx.WriteKeyWord("SET TIFLASH REPLICA ")
ctx.WritePlainf("%d", n.TiFlashReplica.Count)
if len(n.TiFlashReplica.Labels) == 0 {
break
}
ctx.WriteKeyWord(" LOCATION LABELS ")
for i, v := range n.TiFlashReplica.Labels {
if i > 0 {
ctx.WritePlain(", ")
}
ctx.WriteString(v)
}
case AlterTableAddStatistics:
ctx.WriteKeyWord("ADD STATS_EXTENDED ")
if n.IfNotExists {
ctx.WriteKeyWord("IF NOT EXISTS ")
}
ctx.WriteName(n.Statistics.StatsName)
switch n.Statistics.StatsType {
case StatsTypeCardinality:
ctx.WriteKeyWord(" CARDINALITY(")
case StatsTypeDependency:
ctx.WriteKeyWord(" DEPENDENCY(")
case StatsTypeCorrelation:
ctx.WriteKeyWord(" CORRELATION(")
}
for i, col := range n.Statistics.Columns {
if i != 0 {
ctx.WritePlain(", ")
}
if err := col.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore AddStatisticsSpec.Columns: [%v]", i)
}
}
ctx.WritePlain(")")
case AlterTableDropStatistics:
ctx.WriteKeyWord("DROP STATS_EXTENDED ")
if n.IfExists {
ctx.WriteKeyWord("IF EXISTS ")
}
ctx.WriteName(n.Statistics.StatsName)
case AlterTableOption:
switch {
case len(n.Options) == 2 && n.Options[0].Tp == TableOptionCharset && n.Options[1].Tp == TableOptionCollate:
if n.Options[0].UintValue == TableOptionCharsetWithConvertTo {
ctx.WriteKeyWord("CONVERT TO ")
}
ctx.WriteKeyWord("CHARACTER SET ")
if n.Options[0].Default {
ctx.WriteKeyWord("DEFAULT")
} else {
ctx.WriteKeyWord(n.Options[0].StrValue)
}
ctx.WriteKeyWord(" COLLATE ")
ctx.WriteKeyWord(n.Options[1].StrValue)
case n.Options[0].Tp == TableOptionCharset && n.Options[0].Default:
if n.Options[0].UintValue == TableOptionCharsetWithConvertTo {
ctx.WriteKeyWord("CONVERT TO ")
}
ctx.WriteKeyWord("CHARACTER SET DEFAULT")
default:
for i, opt := range n.Options {
if i != 0 {
ctx.WritePlain(" ")
}
if err := opt.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore AlterTableSpec.Options[%d]", i)
}
}
}
case AlterTableAddColumns:
ctx.WriteKeyWord("ADD COLUMN ")
if n.IfNotExists {
ctx.WriteKeyWordWithSpecialComments(tidb.FeatureIDTiDB, "IF NOT EXISTS ")
}
if n.Position != nil && len(n.NewColumns) == 1 {
if err := n.NewColumns[0].Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore AlterTableSpec.NewColumns[%d]", 0)
}
if n.Position.Tp != ColumnPositionNone {
ctx.WritePlain(" ")
}
if err := n.Position.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore AlterTableSpec.Position")
}
} else {
lenCols := len(n.NewColumns)
ctx.WritePlain("(")
for i, col := range n.NewColumns {
if i != 0 {
ctx.WritePlain(", ")
}
if err := col.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore AlterTableSpec.NewColumns[%d]", i)
}
}
for i, constraint := range n.NewConstraints {
if i != 0 || lenCols >= 1 {
ctx.WritePlain(", ")
}
if err := constraint.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore AlterTableSpec.NewConstraints[%d]", i)
}
}
ctx.WritePlain(")")
}
case AlterTableAddConstraint:
ctx.WriteKeyWord("ADD ")
if err := n.Constraint.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore AlterTableSpec.Constraint")
}
case AlterTableDropColumn:
ctx.WriteKeyWord("DROP COLUMN ")
if n.IfExists {
ctx.WriteKeyWordWithSpecialComments(tidb.FeatureIDTiDB, "IF EXISTS ")
}
if err := n.OldColumnName.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore AlterTableSpec.OldColumnName")
}
// TODO: RestrictOrCascadeOpt not support
case AlterTableDropPrimaryKey:
ctx.WriteKeyWord("DROP PRIMARY KEY")
case AlterTableDropIndex:
ctx.WriteKeyWord("DROP INDEX ")
if n.IfExists {
ctx.WriteKeyWordWithSpecialComments(tidb.FeatureIDTiDB, "IF EXISTS ")
}
ctx.WriteName(n.Name)
case AlterTableDropForeignKey:
ctx.WriteKeyWord("DROP FOREIGN KEY ")
if n.IfExists {
ctx.WriteKeyWordWithSpecialComments(tidb.FeatureIDTiDB, "IF EXISTS ")
}
ctx.WriteName(n.Name)
case AlterTableModifyColumn:
ctx.WriteKeyWord("MODIFY COLUMN ")
if n.IfExists {
ctx.WriteKeyWordWithSpecialComments(tidb.FeatureIDTiDB, "IF EXISTS ")
}
if err := n.NewColumns[0].Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore AlterTableSpec.NewColumns[0]")
}
if n.Position.Tp != ColumnPositionNone {
ctx.WritePlain(" ")
}
if err := n.Position.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore AlterTableSpec.Position")
}
case AlterTableChangeColumn:
ctx.WriteKeyWord("CHANGE COLUMN ")
if n.IfExists {
ctx.WriteKeyWordWithSpecialComments(tidb.FeatureIDTiDB, "IF EXISTS ")
}
if err := n.OldColumnName.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore AlterTableSpec.OldColumnName")
}
ctx.WritePlain(" ")
if err := n.NewColumns[0].Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore AlterTableSpec.NewColumns[0]")
}
if n.Position.Tp != ColumnPositionNone {
ctx.WritePlain(" ")
}
if err := n.Position.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore AlterTableSpec.Position")
}
case AlterTableRenameColumn:
ctx.WriteKeyWord("RENAME COLUMN ")
if err := n.OldColumnName.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore AlterTableSpec.OldColumnName")
}
ctx.WriteKeyWord(" TO ")
if err := n.NewColumnName.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore AlterTableSpec.NewColumnName")
}
case AlterTableRenameTable:
ctx.WriteKeyWord("RENAME AS ")
if err := n.NewTable.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore AlterTableSpec.NewTable")
}
case AlterTableAlterColumn:
ctx.WriteKeyWord("ALTER COLUMN ")
if err := n.NewColumns[0].Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore AlterTableSpec.NewColumns[0]")
}
if len(n.NewColumns[0].Options) == 1 {
ctx.WriteKeyWord("SET DEFAULT ")
expr := n.NewColumns[0].Options[0].Expr
if valueExpr, ok := expr.(ValueExpr); ok {
if err := valueExpr.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore AlterTableSpec.NewColumns[0].Options[0].Expr")
}
} else {
ctx.WritePlain("(")
if err := expr.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore AlterTableSpec.NewColumns[0].Options[0].Expr")
}
ctx.WritePlain(")")
}
} else {
ctx.WriteKeyWord(" DROP DEFAULT")
}
case AlterTableLock:
ctx.WriteKeyWord("LOCK ")
ctx.WritePlain("= ")
ctx.WriteKeyWord(n.LockType.String())
case AlterTableWriteable:
ctx.WriteKeyWord("READ ")
if n.Writeable {
ctx.WriteKeyWord("WRITE")
} else {
ctx.WriteKeyWord("ONLY")
}
case AlterTableOrderByColumns:
ctx.WriteKeyWord("ORDER BY ")
for i, alterOrderItem := range n.OrderByList {
if i != 0 {
ctx.WritePlain(",")
}
if err := alterOrderItem.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore AlterTableSpec.OrderByList[%d]", i)
}
}
case AlterTableAlgorithm:
ctx.WriteKeyWord("ALGORITHM ")
ctx.WritePlain("= ")
ctx.WriteKeyWord(n.Algorithm.String())
case AlterTableRenameIndex:
ctx.WriteKeyWord("RENAME INDEX ")
ctx.WriteName(n.FromKey.O)
ctx.WriteKeyWord(" TO ")
ctx.WriteName(n.ToKey.O)
case AlterTableForce:
// TODO: not support
ctx.WriteKeyWord("FORCE")
ctx.WritePlain(" /* AlterTableForce is not supported */ ")
case AlterTableAddPartitions:
ctx.WriteKeyWord("ADD PARTITION")
if n.IfNotExists {
ctx.WriteKeyWordWithSpecialComments(tidb.FeatureIDTiDB, " IF NOT EXISTS")
}
if n.NoWriteToBinlog {
ctx.WriteKeyWord(" NO_WRITE_TO_BINLOG")
}
if n.PartDefinitions != nil {
ctx.WritePlain(" (")
for i, def := range n.PartDefinitions {
if i != 0 {
ctx.WritePlain(", ")
}
if err := def.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore AlterTableSpec.PartDefinitions[%d]", i)
}
}
ctx.WritePlain(")")
} else if n.Num != 0 {
ctx.WriteKeyWord(" PARTITIONS ")
ctx.WritePlainf("%d", n.Num)
}
case AlterTableDropFirstPartition:
ctx.WriteKeyWord("FIRST PARTITION LESS THAN (")
if err := n.Partition.PartitionMethod.Expr.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore AlterTableDropFirstPartition Exprs")
}
ctx.WriteKeyWord(")")
if n.NoWriteToBinlog {
ctx.WriteKeyWord(" NO_WRITE_TO_BINLOG")
}
case AlterTableAddLastPartition:
ctx.WriteKeyWord("LAST PARTITION LESS THAN (")
if err := n.Partition.PartitionMethod.Expr.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore AlterTableAddLastPartition Exprs")
}
ctx.WriteKeyWord(")")
if n.NoWriteToBinlog {
ctx.WriteKeyWord(" NO_WRITE_TO_BINLOG")
}
case AlterTablePartitionOptions:
restoreWithoutSpecialComment := func() error {
origFlags := ctx.Flags
defer func() {
ctx.Flags = origFlags
}()
ctx.Flags &= ^format.RestoreTiDBSpecialComment
ctx.WriteKeyWord("PARTITION ")
ctx.WriteName(n.PartitionNames[0].O)
ctx.WritePlain(" ")
for i, opt := range n.Options {
if i != 0 {
ctx.WritePlain(" ")
}
if err := opt.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore AlterTableSpec.Options[%d] for PARTITION `%s`", i, n.PartitionNames[0].O)
}
}
return nil
}
var err error
if ctx.Flags.HasTiDBSpecialCommentFlag() {
// AlterTablePartitionOptions now only supports placement options, so add put all options to special comment
err = ctx.WriteWithSpecialComments(tidb.FeatureIDPlacement, restoreWithoutSpecialComment)
} else {
err = restoreWithoutSpecialComment()
}
if err != nil {
return err
}
case AlterTablePartitionAttributes:
ctx.WriteKeyWord("PARTITION ")
ctx.WriteName(n.PartitionNames[0].O)
ctx.WritePlain(" ")
spec := n.AttributesSpec
if err := spec.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore AlterTableSpec.AttributesSpec")
}
case AlterTableCoalescePartitions:
ctx.WriteKeyWord("COALESCE PARTITION ")
if n.NoWriteToBinlog {
ctx.WriteKeyWord("NO_WRITE_TO_BINLOG ")
}
ctx.WritePlainf("%d", n.Num)
case AlterTableDropPartition:
ctx.WriteKeyWord("DROP PARTITION ")
if n.IfExists {
ctx.WriteKeyWordWithSpecialComments(tidb.FeatureIDTiDB, "IF EXISTS ")
}
for i, name := range n.PartitionNames {
if i != 0 {
ctx.WritePlain(",")
}
ctx.WriteName(name.O)
}
case AlterTableTruncatePartition:
ctx.WriteKeyWord("TRUNCATE PARTITION ")
if n.OnAllPartitions {
ctx.WriteKeyWord("ALL")
return nil
}
for i, name := range n.PartitionNames {
if i != 0 {
ctx.WritePlain(",")
}
ctx.WriteName(name.O)
}
case AlterTableCheckPartitions:
ctx.WriteKeyWord("CHECK PARTITION ")
if n.OnAllPartitions {
ctx.WriteKeyWord("ALL")
return nil
}
for i, name := range n.PartitionNames {
if i != 0 {
ctx.WritePlain(",")
}
ctx.WriteName(name.O)
}
case AlterTableOptimizePartition:
ctx.WriteKeyWord("OPTIMIZE PARTITION ")
if n.NoWriteToBinlog {
ctx.WriteKeyWord("NO_WRITE_TO_BINLOG ")
}
if n.OnAllPartitions {
ctx.WriteKeyWord("ALL")
return nil
}
for i, name := range n.PartitionNames {
if i != 0 {
ctx.WritePlain(",")
}
ctx.WriteName(name.O)
}
case AlterTableRepairPartition:
ctx.WriteKeyWord("REPAIR PARTITION ")
if n.NoWriteToBinlog {
ctx.WriteKeyWord("NO_WRITE_TO_BINLOG ")
}
if n.OnAllPartitions {
ctx.WriteKeyWord("ALL")
return nil
}
for i, name := range n.PartitionNames {
if i != 0 {
ctx.WritePlain(",")
}
ctx.WriteName(name.O)
}
case AlterTableImportPartitionTablespace:
ctx.WriteKeyWord("IMPORT PARTITION ")
if n.OnAllPartitions {
ctx.WriteKeyWord("ALL")
} else {
for i, name := range n.PartitionNames {
if i != 0 {
ctx.WritePlain(",")
}
ctx.WriteName(name.O)
}
}
ctx.WriteKeyWord(" TABLESPACE")
case AlterTableDiscardPartitionTablespace:
ctx.WriteKeyWord("DISCARD PARTITION ")
if n.OnAllPartitions {
ctx.WriteKeyWord("ALL")
} else {
for i, name := range n.PartitionNames {
if i != 0 {
ctx.WritePlain(",")
}
ctx.WriteName(name.O)
}
}
ctx.WriteKeyWord(" TABLESPACE")
case AlterTablePartition:
if err := n.Partition.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore AlterTableSpec.Partition")
}
case AlterTableEnableKeys:
ctx.WriteKeyWord("ENABLE KEYS")
case AlterTableDisableKeys:
ctx.WriteKeyWord("DISABLE KEYS")
case AlterTableRemovePartitioning:
ctx.WriteKeyWord("REMOVE PARTITIONING")
case AlterTableWithValidation:
ctx.WriteKeyWord("WITH VALIDATION")
case AlterTableWithoutValidation:
ctx.WriteKeyWord("WITHOUT VALIDATION")
case AlterTableRebuildPartition:
ctx.WriteKeyWord("REBUILD PARTITION ")
if n.NoWriteToBinlog {
ctx.WriteKeyWord("NO_WRITE_TO_BINLOG ")
}
if n.OnAllPartitions {
ctx.WriteKeyWord("ALL")
return nil
}
for i, name := range n.PartitionNames {
if i != 0 {
ctx.WritePlain(",")
}
ctx.WriteName(name.O)
}
case AlterTableReorganizeLastPartition:
ctx.WriteKeyWord("SPLIT MAXVALUE PARTITION LESS THAN (")
if err := n.Partition.PartitionMethod.Expr.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore AlterTableReorganizeLastPartition Exprs")
}
ctx.WriteKeyWord(")")
case AlterTableReorganizeFirstPartition:
ctx.WriteKeyWord("MERGE FIRST PARTITION LESS THAN (")
if err := n.Partition.PartitionMethod.Expr.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore AlterTableReorganizeLastPartition Exprs")
}
ctx.WriteKeyWord(")")
case AlterTableReorganizePartition:
ctx.WriteKeyWord("REORGANIZE PARTITION")
if n.NoWriteToBinlog {
ctx.WriteKeyWord(" NO_WRITE_TO_BINLOG")
}
if n.OnAllPartitions {
return nil
}
for i, name := range n.PartitionNames {
if i != 0 {
ctx.WritePlain(",")
} else {
ctx.WritePlain(" ")
}
ctx.WriteName(name.O)
}
ctx.WriteKeyWord(" INTO ")
if n.PartDefinitions != nil {
ctx.WritePlain("(")
for i, def := range n.PartDefinitions {
if i != 0 {
ctx.WritePlain(", ")
}
if err := def.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore AlterTableSpec.PartDefinitions[%d]", i)
}
}
ctx.WritePlain(")")
}
case AlterTableExchangePartition:
ctx.WriteKeyWord("EXCHANGE PARTITION ")
ctx.WriteName(n.PartitionNames[0].O)
ctx.WriteKeyWord(" WITH TABLE ")
n.NewTable.Restore(ctx)
if !n.WithValidation {
ctx.WriteKeyWord(" WITHOUT VALIDATION")
}
case AlterTableSecondaryLoad:
ctx.WriteKeyWord("SECONDARY_LOAD")
case AlterTableSecondaryUnload:
ctx.WriteKeyWord("SECONDARY_UNLOAD")
case AlterTableAlterCheck:
ctx.WriteKeyWord("ALTER CHECK ")
ctx.WriteName(n.Constraint.Name)
if !n.Constraint.Enforced {
ctx.WriteKeyWord(" NOT")
}
ctx.WriteKeyWord(" ENFORCED")
case AlterTableDropCheck:
ctx.WriteKeyWord("DROP CHECK ")
ctx.WriteName(n.Constraint.Name)
case AlterTableImportTablespace:
ctx.WriteKeyWord("IMPORT TABLESPACE")
case AlterTableDiscardTablespace:
ctx.WriteKeyWord("DISCARD TABLESPACE")
case AlterTableIndexInvisible:
ctx.WriteKeyWord("ALTER INDEX ")
ctx.WriteName(n.IndexName.O)
switch n.Visibility {
case IndexVisibilityVisible:
ctx.WriteKeyWord(" VISIBLE")
case IndexVisibilityInvisible:
ctx.WriteKeyWord(" INVISIBLE")
}
case AlterTableAttributes:
spec := n.AttributesSpec
if err := spec.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore AlterTableSpec.AttributesSpec")
}
case AlterTableCache:
ctx.WriteKeyWord("CACHE")
case AlterTableNoCache:
ctx.WriteKeyWord("NOCACHE")
case AlterTableStatsOptions:
spec := n.StatsOptionsSpec
if err := spec.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore AlterTableSpec.StatsOptionsSpec")
}
case AlterTableRemoveTTL:
ctx.WriteKeyWordWithSpecialComments(tidb.FeatureIDTTL, "REMOVE TTL")
default:
// TODO: not support
ctx.WritePlainf(" /* AlterTableType(%d) is not supported */ ", n.Tp)
}
return nil
}
// Accept implements Node Accept interface.
func (n *AlterTableSpec) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*AlterTableSpec)
if n.Constraint != nil {
node, ok := n.Constraint.Accept(v)
if !ok {
return n, false
}
n.Constraint = node.(*Constraint)
}
if n.NewTable != nil {
node, ok := n.NewTable.Accept(v)
if !ok {
return n, false
}
n.NewTable = node.(*TableName)
}
for i, col := range n.NewColumns {
node, ok := col.Accept(v)
if !ok {
return n, false
}
n.NewColumns[i] = node.(*ColumnDef)
}
for i, constraint := range n.NewConstraints {
node, ok := constraint.Accept(v)
if !ok {
return n, false
}
n.NewConstraints[i] = node.(*Constraint)
}
if n.OldColumnName != nil {
node, ok := n.OldColumnName.Accept(v)
if !ok {
return n, false
}
n.OldColumnName = node.(*ColumnName)
}
if n.Position != nil {
node, ok := n.Position.Accept(v)
if !ok {
return n, false
}
n.Position = node.(*ColumnPosition)
}
if n.Partition != nil {
node, ok := n.Partition.Accept(v)
if !ok {
return n, false
}
n.Partition = node.(*PartitionOptions)
}
for i, option := range n.Options {
node, ok := option.Accept(v)
if !ok {
return n, false
}
n.Options[i] = node.(*TableOption)
}
for _, def := range n.PartDefinitions {
if !def.acceptInPlace(v) {
return n, false
}
}
return v.Leave(n)
}
// AlterTableStmt is a statement to change the structure of a table.
// See https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
type AlterTableStmt struct {
ddlNode
Table *TableName
Specs []*AlterTableSpec
}
func (n *AlterTableStmt) HaveOnlyPlacementOptions() bool {
for _, n := range n.Specs {
if n.Tp != AlterTablePartitionOptions {
return false
}
if !n.IsAllPlacementRule() {
return false
}
}
return true
}
// Restore implements Node interface.
func (n *AlterTableStmt) Restore(ctx *format.RestoreCtx) error {
if ctx.Flags.HasSkipPlacementRuleForRestoreFlag() && n.HaveOnlyPlacementOptions() {
return nil
}
ctx.WriteKeyWord("ALTER TABLE ")
if err := n.Table.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore AlterTableStmt.Table")
}
specs := make([]*AlterTableSpec, 0, len(n.Specs))
for _, spec := range n.Specs {
if spec.IsAllPlacementRule() && ctx.Flags.HasSkipPlacementRuleForRestoreFlag() {
continue
}
if spec.Tp == AlterTableOption {
newOptions := tableOptionsWithRestoreTTLFlag(ctx.Flags, spec.Options)
if len(newOptions) == 0 {
continue
}
newSpec := *spec
newSpec.Options = newOptions
spec = &newSpec
}
specs = append(specs, spec)
}
for i, spec := range specs {
if i == 0 || spec.Tp == AlterTablePartition || spec.Tp == AlterTableRemovePartitioning || spec.Tp == AlterTableImportTablespace || spec.Tp == AlterTableDiscardTablespace {
ctx.WritePlain(" ")
} else {
ctx.WritePlain(", ")
}
if err := spec.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore AlterTableStmt.Specs[%d]", i)
}
}
return nil
}
// Accept implements Node Accept interface.
func (n *AlterTableStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*AlterTableStmt)
node, ok := n.Table.Accept(v)
if !ok {
return n, false
}
n.Table = node.(*TableName)
for i, val := range n.Specs {
node, ok = val.Accept(v)
if !ok {
return n, false
}
n.Specs[i] = node.(*AlterTableSpec)
}
return v.Leave(n)
}
// TruncateTableStmt is a statement to empty a table completely.
// See https://dev.mysql.com/doc/refman/5.7/en/truncate-table.html
type TruncateTableStmt struct {
ddlNode
Table *TableName
}
// Restore implements Node interface.
func (n *TruncateTableStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("TRUNCATE TABLE ")
if err := n.Table.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore TruncateTableStmt.Table")
}
return nil
}
// Accept implements Node Accept interface.
func (n *TruncateTableStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*TruncateTableStmt)
node, ok := n.Table.Accept(v)
if !ok {
return n, false
}
n.Table = node.(*TableName)
return v.Leave(n)
}
var (
ErrNoParts = terror.ClassDDL.NewStd(mysql.ErrNoParts)
ErrPartitionColumnList = terror.ClassDDL.NewStd(mysql.ErrPartitionColumnList)
ErrPartitionRequiresValues = terror.ClassDDL.NewStd(mysql.ErrPartitionRequiresValues)
ErrPartitionsMustBeDefined = terror.ClassDDL.NewStd(mysql.ErrPartitionsMustBeDefined)
ErrPartitionWrongNoPart = terror.ClassDDL.NewStd(mysql.ErrPartitionWrongNoPart)
ErrPartitionWrongNoSubpart = terror.ClassDDL.NewStd(mysql.ErrPartitionWrongNoSubpart)
ErrPartitionWrongValues = terror.ClassDDL.NewStd(mysql.ErrPartitionWrongValues)
ErrRowSinglePartitionField = terror.ClassDDL.NewStd(mysql.ErrRowSinglePartitionField)
ErrSubpartition = terror.ClassDDL.NewStd(mysql.ErrSubpartition)
ErrSystemVersioningWrongPartitions = terror.ClassDDL.NewStd(mysql.ErrSystemVersioningWrongPartitions)
ErrTooManyValues = terror.ClassDDL.NewStd(mysql.ErrTooManyValues)
ErrWrongPartitionTypeExpectedSystemTime = terror.ClassDDL.NewStd(mysql.ErrWrongPartitionTypeExpectedSystemTime)
ErrUnknownCharacterSet = terror.ClassDDL.NewStd(mysql.ErrUnknownCharacterSet)
ErrCoalescePartitionNoPartition = terror.ClassDDL.NewStd(mysql.ErrCoalescePartitionNoPartition)
ErrWrongUsage = terror.ClassDDL.NewStd(mysql.ErrWrongUsage)
)
type SubPartitionDefinition struct {
Name CIStr
Options []*TableOption
}
func (spd *SubPartitionDefinition) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("SUBPARTITION ")
ctx.WriteName(spd.Name.O)
for i, opt := range spd.Options {
ctx.WritePlain(" ")
if err := opt.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore SubPartitionDefinition.Options[%d]", i)
}
}
return nil
}
type PartitionDefinitionClause interface {
restore(ctx *format.RestoreCtx) error
acceptInPlace(v Visitor) bool
// Validate checks if the clause is consistent with the given options.
// `pt` can be 0 and `columns` can be -1 to skip checking the clause against
// the partition type or number of columns in the expression list.
Validate(pt PartitionType, columns int) error
}
type PartitionDefinitionClauseNone struct{}
func (*PartitionDefinitionClauseNone) restore(_ *format.RestoreCtx) error {
return nil
}
func (*PartitionDefinitionClauseNone) acceptInPlace(_ Visitor) bool {
return true
}
func (*PartitionDefinitionClauseNone) Validate(pt PartitionType, _ int) error {
switch pt {
case 0:
case PartitionTypeRange:
return ErrPartitionRequiresValues.GenWithStackByArgs("RANGE", "LESS THAN")
case PartitionTypeList:
return ErrPartitionRequiresValues.GenWithStackByArgs("LIST", "IN")
case PartitionTypeSystemTime:
return ErrSystemVersioningWrongPartitions
}
return nil
}
type PartitionDefinitionClauseLessThan struct {
Exprs []ExprNode
}
func (n *PartitionDefinitionClauseLessThan) restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord(" VALUES LESS THAN ")
ctx.WritePlain("(")
for i, expr := range n.Exprs {
if i != 0 {
ctx.WritePlain(", ")
}
if err := expr.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore PartitionDefinitionClauseLessThan.Exprs[%d]", i)
}
}
ctx.WritePlain(")")
return nil
}
func (n *PartitionDefinitionClauseLessThan) acceptInPlace(v Visitor) bool {
for i, expr := range n.Exprs {
newExpr, ok := expr.Accept(v)
if !ok {
return false
}
n.Exprs[i] = newExpr.(ExprNode)
}
return true
}
func (n *PartitionDefinitionClauseLessThan) Validate(pt PartitionType, columns int) error {
switch pt {
case PartitionTypeRange, 0:
default:
return ErrPartitionWrongValues.GenWithStackByArgs("RANGE", "LESS THAN")
}
switch {
case columns == 0 && len(n.Exprs) != 1:
return ErrTooManyValues.GenWithStackByArgs("RANGE")
case columns > 0 && len(n.Exprs) != columns:
return ErrPartitionColumnList
}
return nil
}
type PartitionDefinitionClauseIn struct {
Values [][]ExprNode
}
func (n *PartitionDefinitionClauseIn) restore(ctx *format.RestoreCtx) error {
// we special-case an empty list of values to mean MariaDB's "DEFAULT" clause.
if len(n.Values) == 0 {
ctx.WriteKeyWord(" DEFAULT")
return nil
}
if len(n.Values) == 1 && len(n.Values[0]) == 1 {
if _, ok := n.Values[0][0].(*DefaultExpr); ok {
ctx.WriteKeyWord(" DEFAULT")
return nil
}
}
ctx.WriteKeyWord(" VALUES IN ")
ctx.WritePlain("(")
for i, valList := range n.Values {
if i != 0 {
ctx.WritePlain(", ")
}
if len(valList) == 1 {
if err := valList[0].Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore PartitionDefinitionClauseIn.Values[%d][0]", i)
}
} else {
ctx.WritePlain("(")
for j, val := range valList {
if j != 0 {
ctx.WritePlain(", ")
}
if err := val.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore PartitionDefinitionClauseIn.Values[%d][%d]", i, j)
}
}
ctx.WritePlain(")")
}
}
ctx.WritePlain(")")
return nil
}
func (n *PartitionDefinitionClauseIn) acceptInPlace(v Visitor) bool {
for _, valList := range n.Values {
for j, val := range valList {
newVal, ok := val.Accept(v)
if !ok {
return false
}
valList[j] = newVal.(ExprNode)
}
}
return true
}
func (n *PartitionDefinitionClauseIn) Validate(pt PartitionType, columns int) error {
switch pt {
case PartitionTypeList, 0:
default:
return ErrPartitionWrongValues.GenWithStackByArgs("LIST", "IN")
}
if len(n.Values) == 0 {
return nil
}
nextIdx := 1
expectedColCount := len(n.Values[0])
// OK if one of the n.Values is DefaultExpr as only value
if expectedColCount == 1 {
if _, ok := n.Values[0][0].(*DefaultExpr); ok {
// Only DEFAULT in the partition definition, OK
if len(n.Values) > 1 {
expectedColCount = len(n.Values[1])
nextIdx++
}
}
}
for _, val := range n.Values[nextIdx:] {
if len(val) != expectedColCount {
if _, ok := val[0].(*DefaultExpr); ok && len(val) == 1 {
continue
}
return ErrPartitionColumnList
}
}
switch {
case columns == 0 && expectedColCount != 1:
return ErrRowSinglePartitionField
case columns > 0 && expectedColCount != columns:
if len(n.Values) == 1 && expectedColCount == 1 {
if _, ok := n.Values[0][0].(*DefaultExpr); ok {
// Only one value, which is DEFAULT, which is OK
return nil
}
}
return ErrPartitionColumnList
}
return nil
}
type PartitionDefinitionClauseHistory struct {
Current bool
}
func (n *PartitionDefinitionClauseHistory) restore(ctx *format.RestoreCtx) error {
if n.Current {
ctx.WriteKeyWord(" CURRENT")
} else {
ctx.WriteKeyWord(" HISTORY")
}
return nil
}
func (*PartitionDefinitionClauseHistory) acceptInPlace(_ Visitor) bool {
return true
}
func (*PartitionDefinitionClauseHistory) Validate(pt PartitionType, _ int) error {
switch pt {
case 0, PartitionTypeSystemTime:
default:
return ErrWrongPartitionTypeExpectedSystemTime
}
return nil
}
// PartitionDefinition defines a single partition.
type PartitionDefinition struct {
Name CIStr
Clause PartitionDefinitionClause
Options []*TableOption
Sub []*SubPartitionDefinition
}
// Comment returns the comment option given to this definition.
// The second return value indicates if the comment option exists.
func (n *PartitionDefinition) Comment() (string, bool) {
for _, opt := range n.Options {
if opt.Tp == TableOptionComment {
return opt.StrValue, true
}
}
return "", false
}
func (n *PartitionDefinition) acceptInPlace(v Visitor) bool {
return n.Clause.acceptInPlace(v)
}
// Restore implements Node interface.
func (n *PartitionDefinition) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("PARTITION ")
ctx.WriteName(n.Name.O)
if err := n.Clause.restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore PartitionDefinition.Clause")
}
for i, opt := range n.Options {
ctx.WritePlain(" ")
if err := opt.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore PartitionDefinition.Options[%d]", i)
}
}
if len(n.Sub) > 0 {
ctx.WritePlain(" (")
for i, spd := range n.Sub {
if i != 0 {
ctx.WritePlain(",")
}
if err := spd.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore PartitionDefinition.Sub[%d]", i)
}
}
ctx.WritePlain(")")
}
return nil
}
type PartitionIntervalExpr struct {
Expr ExprNode
// TimeUnitInvalid if not Time based INTERVAL!
TimeUnit TimeUnitType
}
type PartitionInterval struct {
// To be able to get original text and replace the syntactic sugar with generated
// partition definitions
node
IntervalExpr PartitionIntervalExpr
FirstRangeEnd *ExprNode
LastRangeEnd *ExprNode
MaxValPart bool
NullPart bool
}
// PartitionMethod describes how partitions or subpartitions are constructed.
type PartitionMethod struct {
// To be able to get original text and replace the syntactic sugar with generated
// partition definitions
node
// Tp is the type of the partition function
Tp PartitionType
// Linear is a modifier to the HASH and KEY type for choosing a different
// algorithm
Linear bool
// Expr is an expression used as argument of HASH, RANGE AND LIST types
Expr ExprNode
// ColumnNames is a list of column names used as argument of KEY,
// RANGE COLUMNS and LIST COLUMNS types
ColumnNames []*ColumnName
// Unit is a time unit used as argument of SYSTEM_TIME type
Unit TimeUnitType
// Limit is a row count used as argument of the SYSTEM_TIME type
Limit uint64
// Num is the number of (sub)partitions required by the method.
Num uint64
// KeyAlgorithm is the optional hash algorithm type for `PARTITION BY [LINEAR] KEY` syntax.
KeyAlgorithm *PartitionKeyAlgorithm
Interval *PartitionInterval
}
type PartitionKeyAlgorithm struct {
Type uint64
}
// Restore implements the Node interface
func (n *PartitionMethod) Restore(ctx *format.RestoreCtx) error {
if n.Linear {
ctx.WriteKeyWord("LINEAR ")
}
ctx.WriteKeyWord(n.Tp.String())
if n.KeyAlgorithm != nil {
ctx.WriteKeyWord(" ALGORITHM")
ctx.WritePlainf(" = %d", n.KeyAlgorithm.Type)
}
switch {
case n.Tp == PartitionTypeSystemTime:
if n.Expr != nil && n.Unit != TimeUnitInvalid {
ctx.WriteKeyWord(" INTERVAL ")
if err := n.Expr.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore PartitionMethod.Expr")
}
ctx.WritePlain(" ")
ctx.WriteKeyWord(n.Unit.String())
}
if n.Limit > 0 {
ctx.WriteKeyWord(" LIMIT ")
ctx.WritePlainf("%d", n.Limit)
}
case n.Expr != nil:
ctx.WritePlain(" (")
if err := n.Expr.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore PartitionMethod.Expr")
}
ctx.WritePlain(")")
default:
if n.Tp == PartitionTypeRange || n.Tp == PartitionTypeList {
ctx.WriteKeyWord(" COLUMNS")
}
ctx.WritePlain(" (")
for i, col := range n.ColumnNames {
if i > 0 {
ctx.WritePlain(",")
}
if err := col.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while splicing PartitionMethod.ColumnName[%d]", i)
}
}
ctx.WritePlain(")")
}
if n.Interval != nil {
ctx.WritePlain(" INTERVAL (")
n.Interval.IntervalExpr.Expr.Restore(ctx)
if n.Interval.IntervalExpr.TimeUnit != TimeUnitInvalid {
ctx.WritePlain(" ")
ctx.WriteKeyWord(n.Interval.IntervalExpr.TimeUnit.String())
}
ctx.WritePlain(")")
if n.Interval.FirstRangeEnd != nil {
ctx.WritePlain(" FIRST PARTITION LESS THAN (")
(*n.Interval.FirstRangeEnd).Restore(ctx)
ctx.WritePlain(")")
}
if n.Interval.LastRangeEnd != nil {
ctx.WritePlain(" LAST PARTITION LESS THAN (")
(*n.Interval.LastRangeEnd).Restore(ctx)
ctx.WritePlain(")")
}
if n.Interval.NullPart {
ctx.WritePlain(" NULL PARTITION")
}
if n.Interval.MaxValPart {
ctx.WritePlain(" MAXVALUE PARTITION")
}
}
return nil
}
// acceptInPlace is like Node.Accept but does not allow replacing the node itself.
func (n *PartitionMethod) acceptInPlace(v Visitor) bool {
if n.Expr != nil {
expr, ok := n.Expr.Accept(v)
if !ok {
return false
}
n.Expr = expr.(ExprNode)
}
for i, colName := range n.ColumnNames {
newColName, ok := colName.Accept(v)
if !ok {
return false
}
n.ColumnNames[i] = newColName.(*ColumnName)
}
return true
}
// PartitionOptions specifies the partition options.
type PartitionOptions struct {
PartitionMethod
Sub *PartitionMethod
Definitions []*PartitionDefinition
UpdateIndexes []*Constraint
}
// Validate checks if the partition is well-formed.
func (n *PartitionOptions) Validate() error {
// if both a partition list and the partition numbers are specified, their values must match
if n.Num != 0 && len(n.Definitions) != 0 && n.Num != uint64(len(n.Definitions)) {
return ErrPartitionWrongNoPart
}
// now check the subpartition count
if len(n.Definitions) > 0 {
// ensure the subpartition count for every partitions are the same
// then normalize n.Num and n.Sub.Num so equality comparison works.
n.Num = uint64(len(n.Definitions))
subDefCount := len(n.Definitions[0].Sub)
for _, pd := range n.Definitions[1:] {
if len(pd.Sub) != subDefCount {
return ErrPartitionWrongNoSubpart
}
}
if n.Sub != nil {
if n.Sub.Num != 0 && subDefCount != 0 && n.Sub.Num != uint64(subDefCount) {
return ErrPartitionWrongNoSubpart
}
if subDefCount != 0 {
n.Sub.Num = uint64(subDefCount)
}
} else if subDefCount != 0 {
return ErrSubpartition
}
}
switch n.Tp {
case PartitionTypeHash, PartitionTypeKey:
if n.Num == 0 {
n.Num = 1
}
case PartitionTypeRange, PartitionTypeList:
if n.Interval == nil && len(n.Definitions) == 0 {
return ErrPartitionsMustBeDefined.GenWithStackByArgs(n.Tp)
}
case PartitionTypeSystemTime:
if len(n.Definitions) < 2 {
return ErrSystemVersioningWrongPartitions
}
}
for _, pd := range n.Definitions {
// ensure the partition definition types match the methods,
// e.g. RANGE partitions only allows VALUES LESS THAN
if err := pd.Clause.Validate(n.Tp, len(n.ColumnNames)); err != nil {
return err
}
}
return nil
}
func (n *PartitionOptions) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("PARTITION BY ")
if err := n.PartitionMethod.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore PartitionOptions.PartitionMethod")
}
if n.Num > 0 && len(n.Definitions) == 0 {
ctx.WriteKeyWord(" PARTITIONS ")
ctx.WritePlainf("%d", n.Num)
}
if n.Sub != nil {
ctx.WriteKeyWord(" SUBPARTITION BY ")
if err := n.Sub.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore PartitionOptions.Sub")
}
if n.Sub.Num > 0 {
ctx.WriteKeyWord(" SUBPARTITIONS ")
ctx.WritePlainf("%d", n.Sub.Num)
}
}
if len(n.Definitions) > 0 {
ctx.WritePlain(" (")
for i, def := range n.Definitions {
if i > 0 {
ctx.WritePlain(",")
}
if err := def.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore PartitionOptions.Definitions[%d]", i)
}
}
ctx.WritePlain(")")
}
if len(n.UpdateIndexes) > 0 {
ctx.WritePlain(" UPDATE INDEXES (")
for i, update := range n.UpdateIndexes {
if i > 0 {
ctx.WritePlain(",")
}
ctx.WriteName(update.Name)
if update.Option != nil && update.Option.Global {
ctx.WritePlain(" GLOBAL")
} else {
ctx.WritePlain(" LOCAL")
}
}
ctx.WritePlain(")")
}
return nil
}
func (n *PartitionOptions) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*PartitionOptions)
if !n.PartitionMethod.acceptInPlace(v) {
return n, false
}
if n.Sub != nil && !n.Sub.acceptInPlace(v) {
return n, false
}
for _, def := range n.Definitions {
if !def.acceptInPlace(v) {
return n, false
}
}
return v.Leave(n)
}
// RecoverTableStmt is a statement to recover dropped table.
type RecoverTableStmt struct {
ddlNode
JobID int64
Table *TableName
JobNum int64
}
// Restore implements Node interface.
func (n *RecoverTableStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("RECOVER TABLE ")
if n.Table != nil {
if err := n.Table.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while splicing RecoverTableStmt Table")
}
if n.JobNum > 0 {
ctx.WritePlainf(" %d", n.JobNum)
}
} else {
ctx.WriteKeyWord("BY JOB ")
ctx.WritePlainf("%d", n.JobID)
}
return nil
}
// Accept implements Node Accept interface.
func (n *RecoverTableStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*RecoverTableStmt)
if n.Table != nil {
node, ok := n.Table.Accept(v)
if !ok {
return n, false
}
n.Table = node.(*TableName)
}
return v.Leave(n)
}
// FlashBackToTimestampStmt is a statement to restore the cluster to the specified timestamp
type FlashBackToTimestampStmt struct {
ddlNode
FlashbackTS ExprNode
FlashbackTSO uint64
Tables []*TableName
DBName CIStr
}
// Restore implements Node interface
func (n *FlashBackToTimestampStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("FLASHBACK ")
if len(n.Tables) != 0 {
ctx.WriteKeyWord("TABLE ")
for index, table := range n.Tables {
if index != 0 {
ctx.WritePlain(", ")
}
if err := table.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore DropTableStmt.Tables[%d]", index)
}
}
} else if n.DBName.O != "" {
ctx.WriteKeyWord("DATABASE ")
ctx.WriteName(n.DBName.O)
} else {
ctx.WriteKeyWord("CLUSTER")
}
if n.FlashbackTSO == 0 {
ctx.WriteKeyWord(" TO TIMESTAMP ")
if err := n.FlashbackTS.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while splicing FlashBackToTimestampStmt.FlashbackTS")
}
} else {
ctx.WriteKeyWord(" TO TSO ")
ctx.WritePlainf("%d", n.FlashbackTSO)
}
return nil
}
// Accept implements Node Accept interface.
func (n *FlashBackToTimestampStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*FlashBackToTimestampStmt)
if len(n.Tables) != 0 {
for i, val := range n.Tables {
node, ok := val.Accept(v)
if !ok {
return n, false
}
n.Tables[i] = node.(*TableName)
}
}
if n.FlashbackTSO == 0 {
node, ok := n.FlashbackTS.Accept(v)
if !ok {
return n, false
}
n.FlashbackTS = node.(ExprNode)
}
return v.Leave(n)
}
// FlashBackTableStmt is a statement to restore a dropped/truncate table.
type FlashBackTableStmt struct {
ddlNode
Table *TableName
NewName string
}
// Restore implements Node interface.
func (n *FlashBackTableStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("FLASHBACK TABLE ")
if err := n.Table.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while splicing RecoverTableStmt Table")
}
if len(n.NewName) > 0 {
ctx.WriteKeyWord(" TO ")
ctx.WriteName(n.NewName)
}
return nil
}
// Accept implements Node Accept interface.
func (n *FlashBackTableStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*FlashBackTableStmt)
if n.Table != nil {
node, ok := n.Table.Accept(v)
if !ok {
return n, false
}
n.Table = node.(*TableName)
}
return v.Leave(n)
}
type AttributesSpec struct {
node
Attributes string
Default bool
}
func (n *AttributesSpec) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("ATTRIBUTES")
ctx.WritePlain("=")
if n.Default {
ctx.WriteKeyWord("DEFAULT")
return nil
}
ctx.WriteString(n.Attributes)
return nil
}
func (n *AttributesSpec) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*AttributesSpec)
return v.Leave(n)
}
type StatsOptionsSpec struct {
node
StatsOptions string
Default bool
}
func (n *StatsOptionsSpec) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("STATS_OPTIONS")
ctx.WritePlain("=")
if n.Default {
ctx.WriteKeyWord("DEFAULT")
return nil
}
ctx.WriteString(n.StatsOptions)
return nil
}
func (n *StatsOptionsSpec) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*StatsOptionsSpec)
return v.Leave(n)
}
// AlterPlacementPolicyStmt is a statement to alter placement policy option.
type AlterPlacementPolicyStmt struct {
ddlNode
PolicyName CIStr
IfExists bool
PlacementOptions []*PlacementOption
}
func (n *AlterPlacementPolicyStmt) Restore(ctx *format.RestoreCtx) error {
if ctx.Flags.HasSkipPlacementRuleForRestoreFlag() {
return nil
}
if ctx.Flags.HasTiDBSpecialCommentFlag() {
return restorePlacementStmtInSpecialComment(ctx, n)
}
ctx.WriteKeyWord("ALTER PLACEMENT POLICY ")
if n.IfExists {
ctx.WriteKeyWord("IF EXISTS ")
}
ctx.WriteName(n.PolicyName.O)
for i, option := range n.PlacementOptions {
ctx.WritePlain(" ")
if err := option.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while splicing AlterPlacementPolicyStmt TableOption: [%v]", i)
}
}
return nil
}
func (n *AlterPlacementPolicyStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*AlterPlacementPolicyStmt)
return v.Leave(n)
}
func CheckAppend(ops []*ResourceGroupOption, newOp *ResourceGroupOption) bool {
for _, op := range ops {
if op.Tp == newOp.Tp {
return false
}
}
return true
}
func CheckRunawayAppend(ops []*ResourceGroupRunawayOption, newOp *ResourceGroupRunawayOption) bool {
for _, op := range ops {
if op.Tp == newOp.Tp {
// support multiple runaway rules.
if op.Tp == RunawayRule {
continue
}
return false
}
}
return true
}
func CheckBackgroundAppend(ops []*ResourceGroupBackgroundOption, newOp *ResourceGroupBackgroundOption) bool {
for _, op := range ops {
if op.Type == newOp.Type {
return false
}
}
return true
}
// AlterResourceGroupStmt is a statement to alter placement policy option.
type AlterResourceGroupStmt struct {
ddlNode
ResourceGroupName CIStr
IfExists bool
ResourceGroupOptionList []*ResourceGroupOption
}
func (n *AlterResourceGroupStmt) Restore(ctx *format.RestoreCtx) error {
if ctx.Flags.HasTiDBSpecialCommentFlag() {
return restoreStmtInSpecialComment(ctx, n, tidb.FeatureIDResourceGroup)
}
ctx.WriteKeyWord("ALTER RESOURCE GROUP ")
if n.IfExists {
ctx.WriteKeyWord("IF EXISTS ")
}
ctx.WriteName(n.ResourceGroupName.O)
for i, option := range n.ResourceGroupOptionList {
if i > 0 {
ctx.WritePlain(",")
}
ctx.WritePlain(" ")
if err := option.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while splicing AlterResourceGroupStmt Options: [%v]", i)
}
}
return nil
}
func (n *AlterResourceGroupStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*AlterResourceGroupStmt)
return v.Leave(n)
}
// AlterSequenceStmt is a statement to alter sequence option.
type AlterSequenceStmt struct {
ddlNode
// sequence name
Name *TableName
IfExists bool
SeqOptions []*SequenceOption
}
func (n *AlterSequenceStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("ALTER SEQUENCE ")
if n.IfExists {
ctx.WriteKeyWord("IF EXISTS ")
}
if err := n.Name.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore AlterSequenceStmt.Table")
}
for i, option := range n.SeqOptions {
ctx.WritePlain(" ")
if err := option.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while splicing AlterSequenceStmt SequenceOption: [%v]", i)
}
}
return nil
}
func (n *AlterSequenceStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*AlterSequenceStmt)
node, ok := n.Name.Accept(v)
if !ok {
return n, false
}
n.Name = node.(*TableName)
return v.Leave(n)
}
func restorePlacementStmtInSpecialComment(ctx *format.RestoreCtx, n DDLNode) error {
return restoreStmtInSpecialComment(ctx, n, tidb.FeatureIDPlacement)
}
func restoreStmtInSpecialComment(ctx *format.RestoreCtx, n DDLNode, feature string) error {
origFlags := ctx.Flags
defer func() {
ctx.Flags = origFlags
}()
ctx.Flags |= format.RestoreTiDBSpecialComment
return ctx.WriteWithSpecialComments(feature, func() error {
ctx.Flags &= ^format.RestoreTiDBSpecialComment
return n.Restore(ctx)
})
}
func tableOptionsWithRestoreTTLFlag(flags format.RestoreFlags, options []*TableOption) []*TableOption {
if !flags.HasRestoreWithTTLEnableOff() {
return options
}
newOptions := make([]*TableOption, 0, len(options))
for _, opt := range options {
if opt.Tp == TableOptionTTLEnable {
continue
}
newOptions = append(newOptions, opt)
if opt.Tp == TableOptionTTL {
newOptions = append(newOptions, &TableOption{
Tp: TableOptionTTLEnable,
BoolValue: false,
})
}
}
return newOptions
}
// Copyright 2015 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// See the License for the specific language governing permissions and
// limitations under the License.
package ast
import (
"reflect"
"strings"
"github.com/pingcap/errors"
"github.com/pingcap/tidb/pkg/parser/auth"
"github.com/pingcap/tidb/pkg/parser/format"
"github.com/pingcap/tidb/pkg/parser/mysql"
"github.com/pingcap/tidb/pkg/parser/util"
)
var (
_ DMLNode = &DeleteStmt{}
_ DMLNode = &DistributeTableStmt{}
_ DMLNode = &InsertStmt{}
_ DMLNode = &SetOprStmt{}
_ DMLNode = &UpdateStmt{}
_ DMLNode = &SelectStmt{}
_ DMLNode = &CallStmt{}
_ DMLNode = &ShowStmt{}
_ DMLNode = &LoadDataStmt{}
_ DMLNode = &ImportIntoStmt{}
_ DMLNode = &SplitRegionStmt{}
_ DMLNode = &NonTransactionalDMLStmt{}
_ Node = &Assignment{}
_ Node = &ByItem{}
_ Node = &FieldList{}
_ Node = &GroupByClause{}
_ Node = &HavingClause{}
_ Node = &AsOfClause{}
_ Node = &Join{}
_ Node = &Limit{}
_ Node = &OnCondition{}
_ Node = &OrderByClause{}
_ Node = &SelectField{}
_ Node = &TableName{}
_ Node = &TableRefsClause{}
_ Node = &TableSource{}
_ Node = &SetOprSelectList{}
_ Node = &WildCardField{}
_ Node = &WindowSpec{}
_ Node = &PartitionByClause{}
_ Node = &FrameClause{}
_ Node = &FrameBound{}
)
// JoinType is join type, including cross/left/right/full.
type JoinType int
const (
// CrossJoin is cross join type.
CrossJoin JoinType = iota + 1
// LeftJoin is left Join type.
LeftJoin
// RightJoin is right Join type.
RightJoin
)
// Join represents table join.
type Join struct {
node
// Left table can be TableSource or JoinNode.
Left ResultSetNode
// Right table can be TableSource or JoinNode or nil.
Right ResultSetNode
// Tp represents join type.
Tp JoinType
// On represents join on condition.
On *OnCondition
// Using represents join using clause.
Using []*ColumnName
// NaturalJoin represents join is natural join.
NaturalJoin bool
// StraightJoin represents a straight join.
StraightJoin bool
ExplicitParens bool
}
func (*Join) resultSet() {}
// NewCrossJoin builds a cross join without `on` or `using` clause.
// If the right child is a join tree, we need to handle it differently to make the precedence get right.
// Here is the example: t1 join t2 join t3
//
// JOIN ON t2.a = t3.a
// t1 join / \
// t2 t3
//
// (left) (right)
//
// We can not build it directly to:
//
// JOIN
// / \
// t1 JOIN ON t2.a = t3.a
// / \
// t2 t3
//
// The precedence would be t1 join (t2 join t3 on t2.a=t3.a), not (t1 join t2) join t3 on t2.a=t3.a
// We need to find the left-most child of the right child, and build a cross join of the left-hand side
// of the left child(t1), and the right hand side with the original left-most child of the right child(t2).
//
// JOIN t2.a = t3.a
// / \
// JOIN t3
// / \
// t1 t2
//
// Besides, if the right handle side join tree's join type is right join and has explicit parentheses, we need to rewrite it to left join.
// So t1 join t2 right join t3 would be rewrite to t1 join t3 left join t2.
// If not, t1 join (t2 right join t3) would be (t1 join t2) right join t3. After rewrite the right join to left join.
// We get (t1 join t3) left join t2, the semantics is correct.
func NewCrossJoin(left, right ResultSetNode) (n *Join) {
rj, ok := right.(*Join)
// don't break the explicit parents name scope constraints.
// this kind of join re-order can be done in logical-phase after the name resolution.
if !ok || rj.Right == nil || rj.ExplicitParens {
return &Join{Left: left, Right: right, Tp: CrossJoin}
}
var leftMostLeafFatherOfRight = rj
// Walk down the right hand side.
for {
if leftMostLeafFatherOfRight.Tp == RightJoin && leftMostLeafFatherOfRight.ExplicitParens {
// Rewrite right join to left join.
tmpChild := leftMostLeafFatherOfRight.Right
leftMostLeafFatherOfRight.Right = leftMostLeafFatherOfRight.Left
leftMostLeafFatherOfRight.Left = tmpChild
leftMostLeafFatherOfRight.Tp = LeftJoin
}
leftChild := leftMostLeafFatherOfRight.Left
join, ok := leftChild.(*Join)
if !(ok && join.Right != nil) {
break
}
leftMostLeafFatherOfRight = join
}
newCrossJoin := &Join{Left: left, Right: leftMostLeafFatherOfRight.Left, Tp: CrossJoin}
leftMostLeafFatherOfRight.Left = newCrossJoin
return rj
}
// Restore implements Node interface.
func (n *Join) Restore(ctx *format.RestoreCtx) error {
useCommaJoin := false
_, leftIsJoin := n.Left.(*Join)
if leftIsJoin && n.Left.(*Join).Right == nil {
if ts, ok := n.Left.(*Join).Left.(*TableSource); ok {
switch ts.Source.(type) {
case *SelectStmt, *SetOprStmt:
useCommaJoin = true
}
}
}
if leftIsJoin && !useCommaJoin {
ctx.WritePlain("(")
}
if err := n.Left.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore Join.Left")
}
if leftIsJoin && !useCommaJoin {
ctx.WritePlain(")")
}
if n.Right == nil {
return nil
}
if n.NaturalJoin {
ctx.WriteKeyWord(" NATURAL")
}
switch n.Tp {
case LeftJoin:
ctx.WriteKeyWord(" LEFT")
case RightJoin:
ctx.WriteKeyWord(" RIGHT")
}
if n.StraightJoin {
ctx.WriteKeyWord(" STRAIGHT_JOIN ")
} else {
if useCommaJoin {
ctx.WritePlain(", ")
} else {
ctx.WriteKeyWord(" JOIN ")
}
}
_, rightIsJoin := n.Right.(*Join)
if rightIsJoin {
ctx.WritePlain("(")
}
if err := n.Right.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore Join.Right")
}
if rightIsJoin {
ctx.WritePlain(")")
}
if n.On != nil {
ctx.WritePlain(" ")
if err := n.On.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore Join.On")
}
}
if len(n.Using) != 0 {
ctx.WriteKeyWord(" USING ")
ctx.WritePlain("(")
for i, v := range n.Using {
if i != 0 {
ctx.WritePlain(",")
}
if err := v.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore Join.Using")
}
}
ctx.WritePlain(")")
}
return nil
}
// Accept implements Node Accept interface.
func (n *Join) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*Join)
node, ok := n.Left.Accept(v)
if !ok {
return n, false
}
n.Left = node.(ResultSetNode)
if n.Right != nil {
node, ok = n.Right.Accept(v)
if !ok {
return n, false
}
n.Right = node.(ResultSetNode)
}
if n.On != nil {
node, ok = n.On.Accept(v)
if !ok {
return n, false
}
n.On = node.(*OnCondition)
}
for i, col := range n.Using {
node, ok = col.Accept(v)
if !ok {
return n, false
}
n.Using[i] = node.(*ColumnName)
}
return v.Leave(n)
}
// TableName represents a table name.
type TableName struct {
node
Schema CIStr
Name CIStr
IndexHints []*IndexHint
PartitionNames []CIStr
TableSample *TableSample
// AS OF is used to see the data as it was at a specific point in time.
AsOf *AsOfClause
// IsAlias is true if this table name is an alias.
// sometime, we need to distinguish the table name is an alias or not.
// for example ```delete tt1 from t1 tt1,(select max(id) id from t2)tt2 where tt1.id<=tt2.id```
// ```tt1``` is a alias name. so we need to set IsAlias to true and restore the table name without database name.
IsAlias bool
}
func (*TableName) resultSet() {}
// Restore implements Node interface.
func (n *TableName) restoreName(ctx *format.RestoreCtx) {
if !ctx.Flags.HasWithoutSchemaNameFlag() {
// restore db name
if n.Schema.String() != "" {
ctx.WriteName(n.Schema.String())
ctx.WritePlain(".")
} else if ctx.DefaultDB != "" && !n.IsAlias {
// Try CTE, for a CTE table name, we shouldn't write the database name.
if !ctx.IsCTETableName(n.Name.L) {
ctx.WriteName(ctx.DefaultDB)
ctx.WritePlain(".")
}
}
}
// restore table name
ctx.WriteName(n.Name.String())
}
func (n *TableName) restorePartitions(ctx *format.RestoreCtx) {
if len(n.PartitionNames) > 0 {
ctx.WriteKeyWord(" PARTITION")
ctx.WritePlain("(")
for i, v := range n.PartitionNames {
if i != 0 {
ctx.WritePlain(", ")
}
ctx.WriteName(v.String())
}
ctx.WritePlain(")")
}
}
func (n *TableName) restoreIndexHints(ctx *format.RestoreCtx) error {
for _, value := range n.IndexHints {
ctx.WritePlain(" ")
if err := value.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while splicing IndexHints")
}
}
return nil
}
func (n *TableName) Restore(ctx *format.RestoreCtx) error {
n.restoreName(ctx)
n.restorePartitions(ctx)
if err := n.restoreIndexHints(ctx); err != nil {
return err
}
if n.AsOf != nil {
ctx.WritePlain(" ")
if err := n.AsOf.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while splicing TableName.Asof")
}
}
if n.TableSample != nil {
ctx.WritePlain(" ")
if err := n.TableSample.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while splicing TableName.TableSample")
}
}
return nil
}
// IndexHintType is the type for index hint use, ignore or force.
type IndexHintType int
// IndexHintUseType values.
const (
HintUse IndexHintType = iota + 1
HintIgnore
HintForce
HintOrderIndex
HintNoOrderIndex
)
// IndexHintScope is the type for index hint for join, order by or group by.
type IndexHintScope int
// Index hint scopes.
const (
HintForScan IndexHintScope = iota + 1
HintForJoin
HintForOrderBy
HintForGroupBy
)
// IndexHint represents a hint for optimizer to use/ignore/force for join/order by/group by.
type IndexHint struct {
IndexNames []CIStr
HintType IndexHintType
HintScope IndexHintScope
}
// IndexHint Restore (The const field uses switch to facilitate understanding)
func (n *IndexHint) Restore(ctx *format.RestoreCtx) error {
indexHintType := ""
switch n.HintType {
case HintUse:
indexHintType = "USE INDEX"
case HintIgnore:
indexHintType = "IGNORE INDEX"
case HintForce:
indexHintType = "FORCE INDEX"
case HintOrderIndex:
indexHintType = "ORDER INDEX"
case HintNoOrderIndex:
indexHintType = "NO ORDER INDEX"
default: // Prevent accidents
return errors.New("IndexHintType has an error while matching")
}
indexHintScope := ""
switch n.HintScope {
case HintForScan:
indexHintScope = ""
case HintForJoin:
indexHintScope = " FOR JOIN"
case HintForOrderBy:
indexHintScope = " FOR ORDER BY"
case HintForGroupBy:
indexHintScope = " FOR GROUP BY"
default: // Prevent accidents
return errors.New("IndexHintScope has an error while matching")
}
ctx.WriteKeyWord(indexHintType)
ctx.WriteKeyWord(indexHintScope)
ctx.WritePlain(" (")
for i, value := range n.IndexNames {
if i > 0 {
ctx.WritePlain(", ")
}
ctx.WriteName(value.O)
}
ctx.WritePlain(")")
return nil
}
// Accept implements Node Accept interface.
func (n *TableName) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*TableName)
if n.TableSample != nil {
newTs, ok := n.TableSample.Accept(v)
if !ok {
return n, false
}
n.TableSample = newTs.(*TableSample)
}
if n.AsOf != nil {
newNode, skipChildren := n.AsOf.Accept(v)
if skipChildren {
return v.Leave(n)
}
n.AsOf = newNode.(*AsOfClause)
}
return v.Leave(n)
}
// DeleteTableList is the tablelist used in delete statement multi-table mode.
type DeleteTableList struct {
node
Tables []*TableName
}
// Restore implements Node interface.
func (n *DeleteTableList) Restore(ctx *format.RestoreCtx) error {
for i, t := range n.Tables {
if i != 0 {
ctx.WritePlain(",")
}
if err := t.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore DeleteTableList.Tables[%v]", i)
}
}
return nil
}
// Accept implements Node Accept interface.
func (n *DeleteTableList) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*DeleteTableList)
if n != nil {
for i, t := range n.Tables {
node, ok := t.Accept(v)
if !ok {
return n, false
}
n.Tables[i] = node.(*TableName)
}
}
return v.Leave(n)
}
// OnCondition represents JOIN on condition.
type OnCondition struct {
node
Expr ExprNode
}
// Restore implements Node interface.
func (n *OnCondition) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("ON ")
if err := n.Expr.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore OnCondition.Expr")
}
return nil
}
// Accept implements Node Accept interface.
func (n *OnCondition) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*OnCondition)
node, ok := n.Expr.Accept(v)
if !ok {
return n, false
}
n.Expr = node.(ExprNode)
return v.Leave(n)
}
// TableSource represents table source with a name.
type TableSource struct {
node
// Source is the source of the data, can be a TableName,
// a SelectStmt, a SetOprStmt, or a JoinNode.
Source ResultSetNode
// AsName is the alias name of the table source.
AsName CIStr
}
func (*TableSource) resultSet() {}
// Restore implements Node interface.
func (n *TableSource) Restore(ctx *format.RestoreCtx) error {
needParen := false
switch n.Source.(type) {
case *SelectStmt, *SetOprStmt:
needParen = true
}
if tn, tnCase := n.Source.(*TableName); tnCase {
if needParen {
ctx.WritePlain("(")
}
tn.restoreName(ctx)
tn.restorePartitions(ctx)
if asName := n.AsName.String(); asName != "" {
ctx.WriteKeyWord(" AS ")
ctx.WriteName(asName)
}
if tn.AsOf != nil {
ctx.WritePlain(" ")
if err := tn.AsOf.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore TableSource.AsOf")
}
}
if err := tn.restoreIndexHints(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore TableSource.Source.(*TableName).IndexHints")
}
if tn.TableSample != nil {
ctx.WritePlain(" ")
if err := tn.TableSample.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while splicing TableName.TableSample")
}
}
if needParen {
ctx.WritePlain(")")
}
} else {
if needParen {
ctx.WritePlain("(")
}
if err := n.Source.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore TableSource.Source")
}
if needParen {
ctx.WritePlain(")")
}
if asName := n.AsName.String(); asName != "" {
ctx.WriteKeyWord(" AS ")
ctx.WriteName(asName)
}
}
return nil
}
// Accept implements Node Accept interface.
func (n *TableSource) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*TableSource)
node, ok := n.Source.Accept(v)
if !ok {
return n, false
}
n.Source = node.(ResultSetNode)
return v.Leave(n)
}
// SelectLockType is the lock type for SelectStmt.
type SelectLockType int
// Select lock types.
const (
SelectLockNone SelectLockType = iota
SelectLockForUpdate
SelectLockForShare
SelectLockForUpdateNoWait
SelectLockForUpdateWaitN
SelectLockForShareNoWait
SelectLockForUpdateSkipLocked
SelectLockForShareSkipLocked
)
type SelectLockInfo struct {
LockType SelectLockType
WaitSec uint64
Tables []*TableName
}
// Hash64 implements the cascades/base.Hasher.<0th> interface.
func (n *SelectLockInfo) Hash64(h util.IHasher) {
h.HashInt(int(n.LockType))
h.HashUint64(n.WaitSec)
h.HashInt(len(n.Tables))
for _, one := range n.Tables {
// to make it simple, we just use lockInfo's addr.
h.HashUint64(uint64(reflect.ValueOf(one).Pointer()))
}
}
// Equals implements the cascades/base.Hasher.<1th> interface.
func (n *SelectLockInfo) Equals(other any) bool {
n2, ok := other.(*SelectLockInfo)
if !ok {
return false
}
if n == nil {
return n2 == nil
}
if other == nil {
return false
}
ok = n.LockType == n2.LockType &&
n.WaitSec == n2.WaitSec
if !ok {
return false
}
if len(n.Tables) != len(n2.Tables) {
return false
}
for i, one := range n.Tables {
if one != n2.Tables[i] {
return false
}
}
return true
}
// String implements fmt.Stringer.
func (n SelectLockType) String() string {
switch n {
case SelectLockNone:
return "none"
case SelectLockForUpdate:
return "for update"
case SelectLockForShare:
return "for share"
case SelectLockForUpdateNoWait:
return "for update nowait"
case SelectLockForUpdateWaitN:
return "for update wait"
case SelectLockForShareNoWait:
return "for share nowait"
case SelectLockForUpdateSkipLocked:
return "for update skip locked"
case SelectLockForShareSkipLocked:
return "for share skip locked"
}
return "unsupported select lock type"
}
// WildCardField is a special type of select field content.
type WildCardField struct {
node
Table CIStr
Schema CIStr
}
// Restore implements Node interface.
func (n *WildCardField) Restore(ctx *format.RestoreCtx) error {
if schema := n.Schema.String(); schema != "" {
ctx.WriteName(schema)
ctx.WritePlain(".")
}
if table := n.Table.String(); table != "" {
ctx.WriteName(table)
ctx.WritePlain(".")
}
ctx.WritePlain("*")
return nil
}
// Accept implements Node Accept interface.
func (n *WildCardField) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*WildCardField)
return v.Leave(n)
}
// SelectField represents fields in select statement.
// There are two type of select field: wildcard
// and expression with optional alias name.
type SelectField struct {
node
// Offset is used to get original text.
Offset int
// WildCard is not nil, Expr will be nil.
WildCard *WildCardField
// Expr is not nil, WildCard will be nil.
Expr ExprNode
// AsName is alias name for Expr.
AsName CIStr
// Auxiliary stands for if this field is auxiliary.
// When we add a Field into SelectField list which is used for having/orderby clause but the field is not in select clause,
// we should set its Auxiliary to true. Then the TrimExec will trim the field.
Auxiliary bool
AuxiliaryColInAgg bool
AuxiliaryColInOrderBy bool
}
// Restore implements Node interface.
func (n *SelectField) Restore(ctx *format.RestoreCtx) error {
if n.WildCard != nil {
if err := n.WildCard.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore SelectField.WildCard")
}
}
if n.Expr != nil {
if err := n.Expr.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore SelectField.Expr")
}
}
if asName := n.AsName.String(); asName != "" {
ctx.WriteKeyWord(" AS ")
ctx.WriteName(asName)
}
return nil
}
// Accept implements Node Accept interface.
func (n *SelectField) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*SelectField)
if n.Expr != nil {
node, ok := n.Expr.Accept(v)
if !ok {
return n, false
}
n.Expr = node.(ExprNode)
}
return v.Leave(n)
}
func (n *SelectField) Match(col *ColumnNameExpr, ignoreAsName bool) bool {
// if col specify a table name, resolve from table source directly.
if col.Name.Table.L == "" {
if n.AsName.L == "" || ignoreAsName {
if curCol, isCol := n.Expr.(*ColumnNameExpr); isCol {
return curCol.Name.Name.L == col.Name.Name.L
} else if _, isFunc := n.Expr.(*FuncCallExpr); isFunc {
// Fix issue 7331
// If there are some function calls in SelectField, we check if
// ColumnNameExpr in GroupByClause matches one of these function calls.
// Example: select concat(k1,k2) from t group by `concat(k1,k2)`,
// `concat(k1,k2)` matches with function call concat(k1, k2).
return strings.ToLower(n.Text()) == col.Name.Name.L
}
// a expression without as name can't be matched.
return false
}
return n.AsName.L == col.Name.Name.L
}
return false
}
// FieldList represents field list in select statement.
type FieldList struct {
node
Fields []*SelectField
}
// Restore implements Node interface.
func (n *FieldList) Restore(ctx *format.RestoreCtx) error {
for i, v := range n.Fields {
if i != 0 {
ctx.WritePlain(", ")
}
if err := v.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore FieldList.Fields[%d]", i)
}
}
return nil
}
// Accept implements Node Accept interface.
func (n *FieldList) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*FieldList)
for i, val := range n.Fields {
node, ok := val.Accept(v)
if !ok {
return n, false
}
n.Fields[i] = node.(*SelectField)
}
return v.Leave(n)
}
// TableRefsClause represents table references clause in dml statement.
type TableRefsClause struct {
node
TableRefs *Join
}
// Restore implements Node interface.
func (n *TableRefsClause) Restore(ctx *format.RestoreCtx) error {
if err := n.TableRefs.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore TableRefsClause.TableRefs")
}
return nil
}
// Accept implements Node Accept interface.
func (n *TableRefsClause) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*TableRefsClause)
node, ok := n.TableRefs.Accept(v)
if !ok {
return n, false
}
n.TableRefs = node.(*Join)
return v.Leave(n)
}
// ByItem represents an item in order by or group by.
type ByItem struct {
node
Expr ExprNode
Desc bool
NullOrder bool
}
// Restore implements Node interface.
func (n *ByItem) Restore(ctx *format.RestoreCtx) error {
if err := n.Expr.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore ByItem.Expr")
}
if n.Desc {
ctx.WriteKeyWord(" DESC")
}
return nil
}
// Accept implements Node Accept interface.
func (n *ByItem) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*ByItem)
node, ok := n.Expr.Accept(v)
if !ok {
return n, false
}
n.Expr = node.(ExprNode)
return v.Leave(n)
}
// GroupByClause represents group by clause.
type GroupByClause struct {
node
Items []*ByItem
Rollup bool
}
// Restore implements Node interface.
func (n *GroupByClause) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("GROUP BY ")
for i, v := range n.Items {
if i != 0 {
ctx.WritePlain(",")
}
if err := v.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore GroupByClause.Items[%d]", i)
}
}
if n.Rollup {
ctx.WriteKeyWord(" WITH ROLLUP")
}
return nil
}
// Accept implements Node Accept interface.
func (n *GroupByClause) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*GroupByClause)
for i, val := range n.Items {
node, ok := val.Accept(v)
if !ok {
return n, false
}
n.Items[i] = node.(*ByItem)
}
return v.Leave(n)
}
// HavingClause represents having clause.
type HavingClause struct {
node
Expr ExprNode
}
// Restore implements Node interface.
func (n *HavingClause) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("HAVING ")
if err := n.Expr.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore HavingClause.Expr")
}
return nil
}
// Accept implements Node Accept interface.
func (n *HavingClause) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*HavingClause)
node, ok := n.Expr.Accept(v)
if !ok {
return n, false
}
n.Expr = node.(ExprNode)
return v.Leave(n)
}
// OrderByClause represents order by clause.
type OrderByClause struct {
node
Items []*ByItem
ForUnion bool
}
// Restore implements Node interface.
func (n *OrderByClause) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("ORDER BY ")
for i, item := range n.Items {
if i != 0 {
ctx.WritePlain(",")
}
if err := item.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore OrderByClause.Items[%d]", i)
}
}
return nil
}
// Accept implements Node Accept interface.
func (n *OrderByClause) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*OrderByClause)
for i, val := range n.Items {
node, ok := val.Accept(v)
if !ok {
return n, false
}
n.Items[i] = node.(*ByItem)
}
return v.Leave(n)
}
type SampleMethodType int8
const (
SampleMethodTypeNone SampleMethodType = iota
SampleMethodTypeSystem
SampleMethodTypeBernoulli
SampleMethodTypeTiDBRegion
)
type SampleClauseUnitType int8
const (
SampleClauseUnitTypeDefault SampleClauseUnitType = iota
SampleClauseUnitTypeRow
SampleClauseUnitTypePercent
)
type TableSample struct {
node
SampleMethod SampleMethodType
Expr ExprNode
SampleClauseUnit SampleClauseUnitType
RepeatableSeed ExprNode
}
func (s *TableSample) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("TABLESAMPLE ")
switch s.SampleMethod {
case SampleMethodTypeBernoulli:
ctx.WriteKeyWord("BERNOULLI ")
case SampleMethodTypeSystem:
ctx.WriteKeyWord("SYSTEM ")
case SampleMethodTypeTiDBRegion:
ctx.WriteKeyWord("REGION ")
}
ctx.WritePlain("(")
if s.Expr != nil {
if err := s.Expr.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore TableSample.Expr")
}
}
switch s.SampleClauseUnit {
case SampleClauseUnitTypeDefault:
case SampleClauseUnitTypePercent:
ctx.WriteKeyWord(" PERCENT")
case SampleClauseUnitTypeRow:
ctx.WriteKeyWord(" ROWS")
}
ctx.WritePlain(")")
if s.RepeatableSeed != nil {
ctx.WriteKeyWord(" REPEATABLE")
ctx.WritePlain("(")
if err := s.RepeatableSeed.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore TableSample.Expr")
}
ctx.WritePlain(")")
}
return nil
}
func (s *TableSample) Accept(v Visitor) (node Node, ok bool) {
newNode, skipChildren := v.Enter(s)
if skipChildren {
return v.Leave(newNode)
}
s = newNode.(*TableSample)
if s.Expr != nil {
node, ok = s.Expr.Accept(v)
if !ok {
return s, false
}
s.Expr = node.(ExprNode)
}
if s.RepeatableSeed != nil {
node, ok = s.RepeatableSeed.Accept(v)
if !ok {
return s, false
}
s.RepeatableSeed = node.(ExprNode)
}
return v.Leave(s)
}
type SelectStmtKind uint8
const (
SelectStmtKindSelect SelectStmtKind = iota
SelectStmtKindTable
SelectStmtKindValues
)
func (s *SelectStmtKind) String() string {
switch *s {
case SelectStmtKindSelect:
return "SELECT"
case SelectStmtKindTable:
return "TABLE"
case SelectStmtKindValues:
return "VALUES"
}
return ""
}
type CommonTableExpression struct {
node
Name CIStr
Query *SubqueryExpr
ColNameList []CIStr
IsRecursive bool
// Record how many consumers the current cte has
ConsumerCount int
}
// Restore implements Node interface
func (c *CommonTableExpression) Restore(ctx *format.RestoreCtx) error {
ctx.WriteName(c.Name.String())
if c.IsRecursive {
// If the CTE is recursive, we should make it visible for the CTE's query.
// Otherwise, we should put it to stack after building the CTE's query.
ctx.RecordCTEName(c.Name.L)
}
if len(c.ColNameList) > 0 {
ctx.WritePlain(" (")
for j, name := range c.ColNameList {
if j != 0 {
ctx.WritePlain(", ")
}
ctx.WriteName(name.String())
}
ctx.WritePlain(")")
}
ctx.WriteKeyWord(" AS ")
err := c.Query.Restore(ctx)
if err != nil {
return err
}
if !c.IsRecursive {
ctx.RecordCTEName(c.Name.L)
}
return nil
}
// Accept implements Node interface
func (c *CommonTableExpression) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(c)
if skipChildren {
return v.Leave(newNode)
}
node, ok := c.Query.Accept(v)
if !ok {
return c, false
}
c.Query = node.(*SubqueryExpr)
return v.Leave(c)
}
type WithClause struct {
node
IsRecursive bool
CTEs []*CommonTableExpression
}
// SelectStmt represents the select query node.
// See https://dev.mysql.com/doc/refman/5.7/en/select.html
type SelectStmt struct {
dmlNode
// SelectStmtOpts wraps around select hints and switches.
*SelectStmtOpts
// Distinct represents whether the select has distinct option.
Distinct bool
// From is the from clause of the query.
From *TableRefsClause
// Where is the where clause in select statement.
Where ExprNode
// Fields is the select expression list.
Fields *FieldList
// GroupBy is the group by expression list.
GroupBy *GroupByClause
// Having is the having condition.
Having *HavingClause
// WindowSpecs is the window specification list.
WindowSpecs []WindowSpec
// OrderBy is the ordering expression list.
OrderBy *OrderByClause
// Limit is the limit clause.
Limit *Limit
// LockInfo is the lock type
LockInfo *SelectLockInfo
// TableHints represents the table level Optimizer Hint for join type
TableHints []*TableOptimizerHint
// IsInBraces indicates whether it's a stmt in brace.
IsInBraces bool
// WithBeforeBraces indicates whether stmt's with clause is before the brace.
// It's used to distinguish (with xxx select xxx) and with xxx (select xxx)
WithBeforeBraces bool
// QueryBlockOffset indicates the order of this SelectStmt if counted from left to right in the sql text.
QueryBlockOffset int
// SelectIntoOpt is the select-into option.
SelectIntoOpt *SelectIntoOption
// AfterSetOperator indicates the SelectStmt after which type of set operator
AfterSetOperator *SetOprType
// Kind refer to three kind of statement: SelectStmt, TableStmt and ValuesStmt
Kind SelectStmtKind
// Lists is filled only when Kind == SelectStmtKindValues
Lists []*RowExpr
With *WithClause
// AsViewSchema indicates if this stmt provides the schema for the view. It is only used when creating the view
AsViewSchema bool
}
func (*SelectStmt) resultSet() {}
func (n *WithClause) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("WITH ")
if n.IsRecursive {
ctx.WriteKeyWord("RECURSIVE ")
}
for i, cte := range n.CTEs {
if i != 0 {
ctx.WritePlain(", ")
}
if err := cte.Restore(ctx); err != nil {
return err
}
}
ctx.WritePlain(" ")
return nil
}
func (n *WithClause) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
for _, cte := range n.CTEs {
if _, ok := cte.Accept(v); !ok {
return n, false
}
}
return v.Leave(n)
}
// Restore implements Node interface.
func (n *SelectStmt) Restore(ctx *format.RestoreCtx) error {
if n.WithBeforeBraces {
defer ctx.RestoreCTEFunc()() //nolint: all_revive
err := n.With.Restore(ctx)
if err != nil {
return err
}
}
if n.IsInBraces {
ctx.WritePlain("(")
defer func() {
ctx.WritePlain(")")
}()
}
if !n.WithBeforeBraces && n.With != nil {
defer ctx.RestoreCTEFunc()() //nolint: all_revive
err := n.With.Restore(ctx)
if err != nil {
return err
}
}
ctx.WriteKeyWord(n.Kind.String())
ctx.WritePlain(" ")
switch n.Kind {
case SelectStmtKindSelect:
if n.SelectStmtOpts.Priority > 0 {
ctx.WriteKeyWord(mysql.Priority2Str[n.SelectStmtOpts.Priority])
ctx.WritePlain(" ")
}
if n.SelectStmtOpts.SQLSmallResult {
ctx.WriteKeyWord("SQL_SMALL_RESULT ")
}
if n.SelectStmtOpts.SQLBigResult {
ctx.WriteKeyWord("SQL_BIG_RESULT ")
}
if n.SelectStmtOpts.SQLBufferResult {
ctx.WriteKeyWord("SQL_BUFFER_RESULT ")
}
if !n.SelectStmtOpts.SQLCache {
ctx.WriteKeyWord("SQL_NO_CACHE ")
}
if n.SelectStmtOpts.CalcFoundRows {
ctx.WriteKeyWord("SQL_CALC_FOUND_ROWS ")
}
if len(n.TableHints) != 0 {
ctx.WritePlain("/*+ ")
for i, tableHint := range n.TableHints {
if i != 0 {
ctx.WritePlain(" ")
}
if err := tableHint.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore SelectStmt.TableHints[%d]", i)
}
}
ctx.WritePlain("*/ ")
}
if n.Distinct {
ctx.WriteKeyWord("DISTINCT ")
} else if n.SelectStmtOpts.ExplicitAll {
ctx.WriteKeyWord("ALL ")
}
if n.SelectStmtOpts.StraightJoin {
ctx.WriteKeyWord("STRAIGHT_JOIN ")
}
if n.Fields != nil {
for i, field := range n.Fields.Fields {
if i != 0 {
ctx.WritePlain(",")
}
if ctx.Flags.HasRestoreForNonPrepPlanCache() && len(field.OriginalText()) > 0 {
ctx.WritePlain(field.OriginalText())
} else {
if err := field.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore SelectStmt.Fields[%d]", i)
}
}
}
}
if n.From != nil {
ctx.WriteKeyWord(" FROM ")
if ctx.Flags.HasRestoreForNonPrepPlanCache() && len(n.From.OriginalText()) > 0 {
ctx.WritePlain(n.From.OriginalText())
} else {
if err := n.From.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore SelectStmt.From")
}
}
}
if n.From == nil && n.Where != nil {
ctx.WriteKeyWord(" FROM DUAL")
}
if n.Where != nil {
ctx.WriteKeyWord(" WHERE ")
if err := n.Where.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore SelectStmt.Where")
}
}
if n.GroupBy != nil {
ctx.WritePlain(" ")
if err := n.GroupBy.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore SelectStmt.GroupBy")
}
}
if n.Having != nil {
ctx.WritePlain(" ")
if err := n.Having.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore SelectStmt.Having")
}
}
if n.WindowSpecs != nil {
ctx.WriteKeyWord(" WINDOW ")
for i, windowsSpec := range n.WindowSpecs {
if i != 0 {
ctx.WritePlain(",")
}
if err := windowsSpec.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore SelectStmt.WindowSpec[%d]", i)
}
}
}
case SelectStmtKindTable:
if err := n.From.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore SelectStmt.From")
}
case SelectStmtKindValues:
for i, v := range n.Lists {
if err := v.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore SelectStmt.Lists[%d]", i)
}
if i != len(n.Lists)-1 {
ctx.WritePlain(", ")
}
}
}
if n.OrderBy != nil {
ctx.WritePlain(" ")
if err := n.OrderBy.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore SelectStmt.OrderBy")
}
}
if n.Limit != nil {
ctx.WritePlain(" ")
if err := n.Limit.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore SelectStmt.Limit")
}
}
if n.LockInfo != nil {
ctx.WritePlain(" ")
switch n.LockInfo.LockType {
case SelectLockNone:
case SelectLockForUpdateNoWait:
ctx.WriteKeyWord("for update")
if len(n.LockInfo.Tables) != 0 {
ctx.WriteKeyWord(" OF ")
restoreTables(ctx, n.LockInfo.Tables)
}
ctx.WriteKeyWord(" nowait")
case SelectLockForUpdateWaitN:
ctx.WriteKeyWord("for update")
if len(n.LockInfo.Tables) != 0 {
ctx.WriteKeyWord(" OF ")
restoreTables(ctx, n.LockInfo.Tables)
}
ctx.WriteKeyWord(" wait")
ctx.WritePlainf(" %d", n.LockInfo.WaitSec)
case SelectLockForShareNoWait:
ctx.WriteKeyWord("for share")
if len(n.LockInfo.Tables) != 0 {
ctx.WriteKeyWord(" OF ")
restoreTables(ctx, n.LockInfo.Tables)
}
ctx.WriteKeyWord(" nowait")
case SelectLockForUpdateSkipLocked:
ctx.WriteKeyWord("for update")
if len(n.LockInfo.Tables) != 0 {
ctx.WriteKeyWord(" OF ")
restoreTables(ctx, n.LockInfo.Tables)
}
ctx.WriteKeyWord(" skip locked")
case SelectLockForShareSkipLocked:
ctx.WriteKeyWord("for share")
if len(n.LockInfo.Tables) != 0 {
ctx.WriteKeyWord(" OF ")
restoreTables(ctx, n.LockInfo.Tables)
}
ctx.WriteKeyWord(" skip locked")
default:
ctx.WriteKeyWord(n.LockInfo.LockType.String())
if len(n.LockInfo.Tables) != 0 {
ctx.WriteKeyWord(" OF ")
restoreTables(ctx, n.LockInfo.Tables)
}
}
}
if n.SelectIntoOpt != nil {
ctx.WritePlain(" ")
if err := n.SelectIntoOpt.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore SelectStmt.SelectIntoOpt")
}
}
return nil
}
func restoreTables(ctx *format.RestoreCtx, ts []*TableName) error {
for i, v := range ts {
if err := v.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore SelectStmt.LockInfo")
}
if i != len(ts)-1 {
ctx.WritePlain(", ")
}
}
return nil
}
// Accept implements Node Accept interface.
func (n *SelectStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*SelectStmt)
if n.With != nil {
node, ok := n.With.Accept(v)
if !ok {
return n, false
}
n.With = node.(*WithClause)
}
if len(n.TableHints) != 0 {
newHints := make([]*TableOptimizerHint, len(n.TableHints))
for i, hint := range n.TableHints {
node, ok := hint.Accept(v)
if !ok {
return n, false
}
newHints[i] = node.(*TableOptimizerHint)
}
n.TableHints = newHints
}
if n.Fields != nil {
node, ok := n.Fields.Accept(v)
if !ok {
return n, false
}
n.Fields = node.(*FieldList)
}
if n.From != nil {
node, ok := n.From.Accept(v)
if !ok {
return n, false
}
n.From = node.(*TableRefsClause)
}
if n.Where != nil {
node, ok := n.Where.Accept(v)
if !ok {
return n, false
}
n.Where = node.(ExprNode)
}
if n.GroupBy != nil {
node, ok := n.GroupBy.Accept(v)
if !ok {
return n, false
}
n.GroupBy = node.(*GroupByClause)
}
if n.Having != nil {
node, ok := n.Having.Accept(v)
if !ok {
return n, false
}
n.Having = node.(*HavingClause)
}
for i, list := range n.Lists {
node, ok := list.Accept(v)
if !ok {
return n, false
}
n.Lists[i] = node.(*RowExpr)
}
for i, spec := range n.WindowSpecs {
node, ok := spec.Accept(v)
if !ok {
return n, false
}
n.WindowSpecs[i] = *node.(*WindowSpec)
}
if n.OrderBy != nil {
node, ok := n.OrderBy.Accept(v)
if !ok {
return n, false
}
n.OrderBy = node.(*OrderByClause)
}
if n.Limit != nil {
node, ok := n.Limit.Accept(v)
if !ok {
return n, false
}
n.Limit = node.(*Limit)
}
if n.LockInfo != nil {
for i, t := range n.LockInfo.Tables {
node, ok := t.Accept(v)
if !ok {
return n, false
}
n.LockInfo.Tables[i] = node.(*TableName)
}
}
return v.Leave(n)
}
// SetOprSelectList represents the SelectStmt/TableStmt/ValuesStmt list in a union statement.
type SetOprSelectList struct {
node
With *WithClause
AfterSetOperator *SetOprType
Selects []Node
Limit *Limit
OrderBy *OrderByClause
}
// Restore implements Node interface.
func (n *SetOprSelectList) Restore(ctx *format.RestoreCtx) error {
if n.With != nil {
defer ctx.RestoreCTEFunc()() //nolint: all_revive
if err := n.With.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore SetOprSelectList.With")
}
}
for i, stmt := range n.Selects {
switch selectStmt := stmt.(type) {
case *SelectStmt:
if i != 0 {
ctx.WriteKeyWord(" " + selectStmt.AfterSetOperator.String() + " ")
}
if err := selectStmt.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore SetOprSelectList.SelectStmt")
}
case *SetOprSelectList:
if i != 0 {
ctx.WriteKeyWord(" " + selectStmt.AfterSetOperator.String() + " ")
}
ctx.WritePlain("(")
err := selectStmt.Restore(ctx)
if err != nil {
return err
}
ctx.WritePlain(")")
}
}
if n.OrderBy != nil {
ctx.WritePlain(" ")
if err := n.OrderBy.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore SetOprSelectList.OrderBy")
}
}
if n.Limit != nil {
ctx.WritePlain(" ")
if err := n.Limit.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore SetOprSelectList.Limit")
}
}
return nil
}
// Accept implements Node Accept interface.
func (n *SetOprSelectList) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*SetOprSelectList)
if n.With != nil {
node, ok := n.With.Accept(v)
if !ok {
return n, false
}
n.With = node.(*WithClause)
}
for i, sel := range n.Selects {
node, ok := sel.Accept(v)
if !ok {
return n, false
}
n.Selects[i] = node
}
if n.OrderBy != nil {
node, ok := n.OrderBy.Accept(v)
if !ok {
return n, false
}
n.OrderBy = node.(*OrderByClause)
}
if n.Limit != nil {
node, ok := n.Limit.Accept(v)
if !ok {
return n, false
}
n.Limit = node.(*Limit)
}
return v.Leave(n)
}
type SetOprType uint8
const (
Union SetOprType = iota
UnionAll
Except
ExceptAll
Intersect
IntersectAll
)
func (s *SetOprType) String() string {
switch *s {
case Union:
return "UNION"
case UnionAll:
return "UNION ALL"
case Except:
return "EXCEPT"
case ExceptAll:
return "EXCEPT ALL"
case Intersect:
return "INTERSECT"
case IntersectAll:
return "INTERSECT ALL"
}
return ""
}
// SetOprStmt represents "union/except/intersect statement"
// See https://dev.mysql.com/doc/refman/5.7/en/union.html
// See https://mariadb.com/kb/en/intersect/
// See https://mariadb.com/kb/en/except/
type SetOprStmt struct {
dmlNode
IsInBraces bool
SelectList *SetOprSelectList
OrderBy *OrderByClause
Limit *Limit
With *WithClause
}
func (*SetOprStmt) resultSet() {}
// Restore implements Node interface.
func (n *SetOprStmt) Restore(ctx *format.RestoreCtx) error {
if n.With != nil {
defer ctx.RestoreCTEFunc()() //nolint: all_revive
if err := n.With.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore SetOprStmt.With")
}
}
if n.IsInBraces {
ctx.WritePlain("(")
defer func() {
ctx.WritePlain(")")
}()
}
if err := n.SelectList.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore SetOprStmt.SelectList")
}
if n.OrderBy != nil {
ctx.WritePlain(" ")
if err := n.OrderBy.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore SetOprStmt.OrderBy")
}
}
if n.Limit != nil {
ctx.WritePlain(" ")
if err := n.Limit.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore SetOprStmt.Limit")
}
}
return nil
}
// Accept implements Node Accept interface.
func (n *SetOprStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
if n.With != nil {
node, ok := n.With.Accept(v)
if !ok {
return n, false
}
n.With = node.(*WithClause)
}
if n.SelectList != nil {
node, ok := n.SelectList.Accept(v)
if !ok {
return n, false
}
n.SelectList = node.(*SetOprSelectList)
}
if n.OrderBy != nil {
node, ok := n.OrderBy.Accept(v)
if !ok {
return n, false
}
n.OrderBy = node.(*OrderByClause)
}
if n.Limit != nil {
node, ok := n.Limit.Accept(v)
if !ok {
return n, false
}
n.Limit = node.(*Limit)
}
return v.Leave(n)
}
// Assignment is the expression for assignment, like a = 1.
type Assignment struct {
node
// Column is the column name to be assigned.
Column *ColumnName
// Expr is the expression assigning to ColName.
Expr ExprNode
}
// Restore implements Node interface.
func (n *Assignment) Restore(ctx *format.RestoreCtx) error {
if err := n.Column.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore Assignment.Column")
}
ctx.WritePlain("=")
if err := n.Expr.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore Assignment.Expr")
}
return nil
}
// Accept implements Node Accept interface.
func (n *Assignment) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*Assignment)
node, ok := n.Column.Accept(v)
if !ok {
return n, false
}
n.Column = node.(*ColumnName)
node, ok = n.Expr.Accept(v)
if !ok {
return n, false
}
n.Expr = node.(ExprNode)
return v.Leave(n)
}
type ColumnNameOrUserVar struct {
node
ColumnName *ColumnName
UserVar *VariableExpr
}
func (n *ColumnNameOrUserVar) Restore(ctx *format.RestoreCtx) error {
if n.ColumnName != nil {
if err := n.ColumnName.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore ColumnNameOrUserVar.ColumnName")
}
}
if n.UserVar != nil {
if err := n.UserVar.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore ColumnNameOrUserVar.UserVar")
}
}
return nil
}
func (n *ColumnNameOrUserVar) Accept(v Visitor) (node Node, ok bool) {
newNode, skipChild := v.Enter(n)
if skipChild {
return v.Leave(newNode)
}
n = newNode.(*ColumnNameOrUserVar)
if n.ColumnName != nil {
node, ok = n.ColumnName.Accept(v)
if !ok {
return node, false
}
n.ColumnName = node.(*ColumnName)
}
if n.UserVar != nil {
node, ok = n.UserVar.Accept(v)
if !ok {
return node, false
}
n.UserVar = node.(*VariableExpr)
}
return v.Leave(n)
}
type FileLocRefTp int
const (
// FileLocServerOrRemote is used when there's no keywords in SQL, which means the data file should be located on the
// tidb-server or on remote storage (S3 for example).
FileLocServerOrRemote FileLocRefTp = iota
// FileLocClient is used when there's LOCAL keyword in SQL, which means the data file should be located on the MySQL
// client.
FileLocClient
)
// LoadDataStmt is a statement to load data from a specified file, then insert this rows into an existing table.
// See https://dev.mysql.com/doc/refman/5.7/en/load-data.html
// in TiDB we extend the syntax to use LOAD DATA as a more general way to import data, see
// https://github.com/pingcap/tidb/issues/40499
type LoadDataStmt struct {
dmlNode
LowPriority bool
FileLocRef FileLocRefTp
Path string
Format *string
OnDuplicate OnDuplicateKeyHandlingType
Table *TableName
Charset *string
Columns []*ColumnName
FieldsInfo *FieldsClause
LinesInfo *LinesClause
IgnoreLines *uint64
ColumnAssignments []*Assignment
Options []*LoadDataOpt
ColumnsAndUserVars []*ColumnNameOrUserVar
}
// Restore implements Node interface.
func (n *LoadDataStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("LOAD DATA ")
if n.LowPriority {
ctx.WriteKeyWord("LOW_PRIORITY ")
}
switch n.FileLocRef {
case FileLocServerOrRemote:
case FileLocClient:
ctx.WriteKeyWord("LOCAL ")
}
ctx.WriteKeyWord("INFILE ")
ctx.WriteString(n.Path)
if n.Format != nil {
ctx.WriteKeyWord(" FORMAT ")
ctx.WriteString(*n.Format)
}
if n.OnDuplicate == OnDuplicateKeyHandlingReplace {
ctx.WriteKeyWord(" REPLACE")
} else if n.OnDuplicate == OnDuplicateKeyHandlingIgnore {
ctx.WriteKeyWord(" IGNORE")
}
ctx.WriteKeyWord(" INTO TABLE ")
if err := n.Table.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore LoadDataStmt.Table")
}
if n.Charset != nil {
ctx.WriteKeyWord(" CHARACTER SET ")
ctx.WritePlain(*n.Charset)
}
if n.FieldsInfo != nil {
n.FieldsInfo.Restore(ctx)
}
if n.LinesInfo != nil {
n.LinesInfo.Restore(ctx)
}
if n.IgnoreLines != nil {
ctx.WriteKeyWord(" IGNORE ")
ctx.WritePlainf("%d", *n.IgnoreLines)
ctx.WriteKeyWord(" LINES")
}
if len(n.ColumnsAndUserVars) != 0 {
ctx.WritePlain(" (")
for i, c := range n.ColumnsAndUserVars {
if i != 0 {
ctx.WritePlain(",")
}
if err := c.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore LoadDataStmt.ColumnsAndUserVars")
}
}
ctx.WritePlain(")")
}
if n.ColumnAssignments != nil {
ctx.WriteKeyWord(" SET")
for i, assign := range n.ColumnAssignments {
if i != 0 {
ctx.WritePlain(",")
}
ctx.WritePlain(" ")
if err := assign.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore LoadDataStmt.ColumnAssignments")
}
}
}
if len(n.Options) > 0 {
ctx.WriteKeyWord(" WITH")
for i, option := range n.Options {
if i != 0 {
ctx.WritePlain(",")
}
ctx.WritePlain(" ")
if err := option.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore LoadDataStmt.Options")
}
}
}
return nil
}
// Accept implements Node Accept interface.
func (n *LoadDataStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*LoadDataStmt)
if n.Table != nil {
node, ok := n.Table.Accept(v)
if !ok {
return n, false
}
n.Table = node.(*TableName)
}
for i, val := range n.Columns {
node, ok := val.Accept(v)
if !ok {
return n, false
}
n.Columns[i] = node.(*ColumnName)
}
for i, assignment := range n.ColumnAssignments {
node, ok := assignment.Accept(v)
if !ok {
return n, false
}
n.ColumnAssignments[i] = node.(*Assignment)
}
for i, cuVars := range n.ColumnsAndUserVars {
node, ok := cuVars.Accept(v)
if !ok {
return n, false
}
n.ColumnsAndUserVars[i] = node.(*ColumnNameOrUserVar)
}
return v.Leave(n)
}
type LoadDataOpt struct {
// Name is the name of the option, will be converted to lower case during parse.
Name string
// only literal is allowed, we use ExprNode to support negative number
Value ExprNode
}
func (l *LoadDataOpt) Restore(ctx *format.RestoreCtx) error {
if l.Value == nil {
ctx.WritePlain(l.Name)
} else {
ctx.WritePlain(l.Name + "=")
if err := l.Value.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore LoadDataOpt")
}
}
return nil
}
const (
Terminated = iota
Enclosed
Escaped
DefinedNullBy
)
type FieldItem struct {
Type int
Value string
OptEnclosed bool
}
// FieldsClause represents fields references clause in load data statement.
type FieldsClause struct {
Terminated *string
Enclosed *string // length always <= 1 if not nil, see parser.y
Escaped *string // length always <= 1 if not nil, see parser.y
OptEnclosed bool
DefinedNullBy *string
NullValueOptEnclosed bool
}
// Restore for FieldsClause
func (n *FieldsClause) Restore(ctx *format.RestoreCtx) error {
if n.Terminated == nil && n.Enclosed == nil && n.Escaped == nil && n.DefinedNullBy == nil {
return nil
}
ctx.WriteKeyWord(" FIELDS")
if n.Terminated != nil {
ctx.WriteKeyWord(" TERMINATED BY ")
ctx.WriteString(*n.Terminated)
}
if n.Enclosed != nil {
if n.OptEnclosed {
ctx.WriteKeyWord(" OPTIONALLY")
}
ctx.WriteKeyWord(" ENCLOSED BY ")
ctx.WriteString(*n.Enclosed)
}
if n.Escaped != nil {
ctx.WriteKeyWord(" ESCAPED BY ")
ctx.WriteString(*n.Escaped)
}
if n.DefinedNullBy != nil {
ctx.WriteKeyWord(" DEFINED NULL BY ")
ctx.WriteString(*n.DefinedNullBy)
if n.NullValueOptEnclosed {
ctx.WriteKeyWord(" OPTIONALLY ENCLOSED")
}
}
return nil
}
// LinesClause represents lines references clause in load data statement.
type LinesClause struct {
Starting *string
Terminated *string
}
// Restore for LinesClause
func (n *LinesClause) Restore(ctx *format.RestoreCtx) error {
if n.Starting == nil && n.Terminated == nil {
return nil
}
ctx.WriteKeyWord(" LINES")
if n.Starting != nil {
ctx.WriteKeyWord(" STARTING BY ")
ctx.WriteString(*n.Starting)
}
if n.Terminated != nil {
ctx.WriteKeyWord(" TERMINATED BY ")
ctx.WriteString(*n.Terminated)
}
return nil
}
// ImportIntoStmt represents a IMPORT INTO statement node.
// this statement is used to import data into TiDB using lightning local mode.
// see https://github.com/pingcap/tidb/issues/42930
type ImportIntoStmt struct {
dmlNode
Table *TableName
ColumnsAndUserVars []*ColumnNameOrUserVar
ColumnAssignments []*Assignment
Path string
Format *string
Options []*LoadDataOpt
Select ResultSetNode
}
var _ SensitiveStmtNode = &ImportIntoStmt{}
// Restore implements Node interface.
func (n *ImportIntoStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("IMPORT INTO ")
if err := n.Table.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore ImportIntoStmt.Table")
}
if len(n.ColumnsAndUserVars) != 0 {
ctx.WritePlain(" (")
for i, c := range n.ColumnsAndUserVars {
if i != 0 {
ctx.WritePlain(",")
}
if err := c.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore ImportIntoStmt.ColumnsAndUserVars")
}
}
ctx.WritePlain(")")
}
if n.ColumnAssignments != nil {
ctx.WriteKeyWord(" SET")
for i, assign := range n.ColumnAssignments {
if i != 0 {
ctx.WritePlain(",")
}
ctx.WritePlain(" ")
if err := assign.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore ImportIntoStmt.ColumnAssignments")
}
}
}
ctx.WriteKeyWord(" FROM ")
if n.Select != nil {
if err := n.Select.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore ImportIntoStmt.Select")
}
} else {
ctx.WriteString(n.Path)
if n.Format != nil {
ctx.WriteKeyWord(" FORMAT ")
ctx.WriteString(*n.Format)
}
}
if len(n.Options) > 0 {
ctx.WriteKeyWord(" WITH")
for i, option := range n.Options {
if i != 0 {
ctx.WritePlain(",")
}
ctx.WritePlain(" ")
if err := option.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore ImportIntoStmt.Options")
}
}
}
return nil
}
// Accept implements Node Accept interface.
func (n *ImportIntoStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*ImportIntoStmt)
if n.Table != nil {
node, ok := n.Table.Accept(v)
if !ok {
return n, false
}
n.Table = node.(*TableName)
}
for i, cuVars := range n.ColumnsAndUserVars {
node, ok := cuVars.Accept(v)
if !ok {
return n, false
}
n.ColumnsAndUserVars[i] = node.(*ColumnNameOrUserVar)
}
for i, assignment := range n.ColumnAssignments {
node, ok := assignment.Accept(v)
if !ok {
return n, false
}
n.ColumnAssignments[i] = node.(*Assignment)
}
if n.Select != nil {
node, ok := n.Select.Accept(v)
if !ok {
return n, false
}
n.Select = node.(ResultSetNode)
}
return v.Leave(n)
}
func (n *ImportIntoStmt) SecureText() string {
redactedStmt := *n
redactedStmt.Path = RedactURL(n.Path)
redactedStmt.Options = make([]*LoadDataOpt, 0, len(n.Options))
for _, opt := range n.Options {
outOpt := opt
ln := strings.ToLower(opt.Name)
if ln == CloudStorageURI {
redactedStr := RedactURL(opt.Value.(ValueExpr).GetString())
outOpt = &LoadDataOpt{
Name: opt.Name,
Value: NewValueExpr(redactedStr, "", ""),
}
}
redactedStmt.Options = append(redactedStmt.Options, outOpt)
}
var sb strings.Builder
_ = redactedStmt.Restore(format.NewRestoreCtx(format.DefaultRestoreFlags, &sb))
return sb.String()
}
// CallStmt represents a call procedure query node.
// See https://dev.mysql.com/doc/refman/5.7/en/call.html
type CallStmt struct {
dmlNode
Procedure *FuncCallExpr
}
// Restore implements Node interface.
func (n *CallStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("CALL ")
if err := n.Procedure.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore CallStmt.Procedure")
}
return nil
}
// Accept implements Node Accept interface.
func (n *CallStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*CallStmt)
if n.Procedure != nil {
node, ok := n.Procedure.Accept(v)
if !ok {
return n, false
}
n.Procedure = node.(*FuncCallExpr)
}
return v.Leave(n)
}
// InsertStmt is a statement to insert new rows into an existing table.
// See https://dev.mysql.com/doc/refman/5.7/en/insert.html
type InsertStmt struct {
dmlNode
IsReplace bool
IgnoreErr bool
Table *TableRefsClause
Columns []*ColumnName
Lists [][]ExprNode
Setlist bool
Priority mysql.PriorityEnum
OnDuplicate []*Assignment
Select ResultSetNode
// TableHints represents the table level Optimizer Hint for join type.
TableHints []*TableOptimizerHint
PartitionNames []CIStr
}
// Restore implements Node interface.
func (n *InsertStmt) Restore(ctx *format.RestoreCtx) error {
if n.IsReplace {
ctx.WriteKeyWord("REPLACE ")
} else {
ctx.WriteKeyWord("INSERT ")
}
if len(n.TableHints) != 0 {
ctx.WritePlain("/*+ ")
for i, tableHint := range n.TableHints {
if i != 0 {
ctx.WritePlain(" ")
}
if err := tableHint.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore InsertStmt.TableHints[%d]", i)
}
}
ctx.WritePlain("*/ ")
}
if err := n.Priority.Restore(ctx); err != nil {
return errors.Trace(err)
}
if n.Priority != mysql.NoPriority {
ctx.WritePlain(" ")
}
if n.IgnoreErr {
ctx.WriteKeyWord("IGNORE ")
}
ctx.WriteKeyWord("INTO ")
if err := n.Table.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore InsertStmt.Table")
}
if len(n.PartitionNames) != 0 {
ctx.WriteKeyWord(" PARTITION")
ctx.WritePlain("(")
for i := range n.PartitionNames {
if i != 0 {
ctx.WritePlain(", ")
}
ctx.WriteName(n.PartitionNames[i].String())
}
ctx.WritePlain(")")
}
if n.Setlist {
if len(n.Lists) != 1 {
return errors.Errorf("Expect len(InsertStmt.Lists)[%d] == 1 for SET x=y", len(n.Lists))
}
if len(n.Lists[0]) != len(n.Columns) {
return errors.Errorf("Expect len(InsertStmt.Columns)[%d] == len(InsertStmt.Lists[0])[%d] for SET x=y", len(n.Columns), len(n.Lists[0]))
}
ctx.WriteKeyWord(" SET ")
for i, v := range n.Lists[0] {
if i != 0 {
ctx.WritePlain(",")
}
v := &Assignment{
Column: n.Columns[i],
Expr: v,
}
if err := v.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore InsertStmt.Set (Columns = Expr)[%d]", i)
}
}
} else {
if n.Columns != nil {
ctx.WritePlain(" (")
for i, v := range n.Columns {
if i != 0 {
ctx.WritePlain(",")
}
if ctx.Flags.HasRestoreForNonPrepPlanCache() && len(v.OriginalText()) > 0 {
ctx.WritePlain(v.OriginalText())
} else {
if err := v.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore InsertStmt.Columns[%d]", i)
}
}
}
ctx.WritePlain(")")
}
if n.Lists != nil {
ctx.WriteKeyWord(" VALUES ")
for i, row := range n.Lists {
if i != 0 {
ctx.WritePlain(",")
}
ctx.WritePlain("(")
for j, v := range row {
if j != 0 {
ctx.WritePlain(",")
}
if err := v.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore InsertStmt.Lists[%d][%d]", i, j)
}
}
ctx.WritePlain(")")
}
}
}
if n.Select != nil {
ctx.WritePlain(" ")
switch v := n.Select.(type) {
case *SelectStmt, *SetOprStmt:
if err := v.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore InsertStmt.Select")
}
default:
return errors.Errorf("Incorrect type for InsertStmt.Select: %T", v)
}
}
if n.OnDuplicate != nil {
ctx.WriteKeyWord(" ON DUPLICATE KEY UPDATE ")
for i, v := range n.OnDuplicate {
if i != 0 {
ctx.WritePlain(",")
}
if err := v.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore InsertStmt.OnDuplicate[%d]", i)
}
}
}
return nil
}
// Accept implements Node Accept interface.
func (n *InsertStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*InsertStmt)
if n.Select != nil {
node, ok := n.Select.Accept(v)
if !ok {
return n, false
}
n.Select = node.(ResultSetNode)
}
node, ok := n.Table.Accept(v)
if !ok {
return n, false
}
n.Table = node.(*TableRefsClause)
for i, val := range n.Columns {
node, ok := val.Accept(v)
if !ok {
return n, false
}
n.Columns[i] = node.(*ColumnName)
}
for i, list := range n.Lists {
for j, val := range list {
node, ok := val.Accept(v)
if !ok {
return n, false
}
n.Lists[i][j] = node.(ExprNode)
}
}
for i, val := range n.OnDuplicate {
node, ok := val.Accept(v)
if !ok {
return n, false
}
n.OnDuplicate[i] = node.(*Assignment)
}
return v.Leave(n)
}
// WhereExpr implements ShardableDMLStmt interface.
func (n *InsertStmt) WhereExpr() ExprNode {
if n.Select == nil {
return nil
}
s, ok := n.Select.(*SelectStmt)
if !ok {
return nil
}
return s.Where
}
// SetWhereExpr implements ShardableDMLStmt interface.
func (n *InsertStmt) SetWhereExpr(e ExprNode) {
if n.Select == nil {
return
}
s, ok := n.Select.(*SelectStmt)
if !ok {
return
}
s.Where = e
}
// TableRefsJoin implements ShardableDMLStmt interface.
func (n *InsertStmt) TableRefsJoin() (*Join, bool) {
if n.Select == nil {
return nil, false
}
s, ok := n.Select.(*SelectStmt)
if !ok {
return nil, false
}
return s.From.TableRefs, true
}
// DeleteStmt is a statement to delete rows from table.
// See https://dev.mysql.com/doc/refman/5.7/en/delete.html
type DeleteStmt struct {
dmlNode
// TableRefs is used in both single table and multiple table delete statement.
TableRefs *TableRefsClause
// Tables is only used in multiple table delete statement.
Tables *DeleteTableList
Where ExprNode
Order *OrderByClause
Limit *Limit
Priority mysql.PriorityEnum
IgnoreErr bool
Quick bool
IsMultiTable bool
BeforeFrom bool
// TableHints represents the table level Optimizer Hint for join type.
TableHints []*TableOptimizerHint
With *WithClause
}
// Restore implements Node interface.
func (n *DeleteStmt) Restore(ctx *format.RestoreCtx) error {
if n.With != nil {
defer ctx.RestoreCTEFunc()() //nolint: all_revive
err := n.With.Restore(ctx)
if err != nil {
return err
}
}
ctx.WriteKeyWord("DELETE ")
if len(n.TableHints) != 0 {
ctx.WritePlain("/*+ ")
for i, tableHint := range n.TableHints {
if i != 0 {
ctx.WritePlain(" ")
}
if err := tableHint.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore UpdateStmt.TableHints[%d]", i)
}
}
ctx.WritePlain("*/ ")
}
if err := n.Priority.Restore(ctx); err != nil {
return errors.Trace(err)
}
if n.Priority != mysql.NoPriority {
ctx.WritePlain(" ")
}
if n.Quick {
ctx.WriteKeyWord("QUICK ")
}
if n.IgnoreErr {
ctx.WriteKeyWord("IGNORE ")
}
if n.IsMultiTable { // Multiple-Table Syntax
if n.BeforeFrom {
if err := n.Tables.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore DeleteStmt.Tables")
}
ctx.WriteKeyWord(" FROM ")
if err := n.TableRefs.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore DeleteStmt.TableRefs")
}
} else {
ctx.WriteKeyWord("FROM ")
if err := n.Tables.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore DeleteStmt.Tables")
}
ctx.WriteKeyWord(" USING ")
if err := n.TableRefs.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore DeleteStmt.TableRefs")
}
}
} else { // Single-Table Syntax
ctx.WriteKeyWord("FROM ")
if err := n.TableRefs.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore DeleteStmt.TableRefs")
}
}
if n.Where != nil {
ctx.WriteKeyWord(" WHERE ")
if err := n.Where.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore DeleteStmt.Where")
}
}
if n.Order != nil {
ctx.WritePlain(" ")
if err := n.Order.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore DeleteStmt.Order")
}
}
if n.Limit != nil {
ctx.WritePlain(" ")
if err := n.Limit.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore DeleteStmt.Limit")
}
}
return nil
}
// Accept implements Node Accept interface.
func (n *DeleteStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*DeleteStmt)
if n.With != nil {
node, ok := n.With.Accept(v)
if !ok {
return n, false
}
n.With = node.(*WithClause)
}
node, ok := n.TableRefs.Accept(v)
if !ok {
return n, false
}
n.TableRefs = node.(*TableRefsClause)
if n.Tables != nil {
node, ok = n.Tables.Accept(v)
if !ok {
return n, false
}
n.Tables = node.(*DeleteTableList)
}
if n.Where != nil {
node, ok = n.Where.Accept(v)
if !ok {
return n, false
}
n.Where = node.(ExprNode)
}
if n.Order != nil {
node, ok = n.Order.Accept(v)
if !ok {
return n, false
}
n.Order = node.(*OrderByClause)
}
if n.Limit != nil {
node, ok = n.Limit.Accept(v)
if !ok {
return n, false
}
n.Limit = node.(*Limit)
}
return v.Leave(n)
}
// WhereExpr implements ShardableDMLStmt interface.
func (n *DeleteStmt) WhereExpr() ExprNode {
return n.Where
}
// SetWhereExpr implements ShardableDMLStmt interface.
func (n *DeleteStmt) SetWhereExpr(e ExprNode) {
n.Where = e
}
// TableRefsJoin implements ShardableDMLStmt interface.
func (n *DeleteStmt) TableRefsJoin() (*Join, bool) {
return n.TableRefs.TableRefs, true
}
const (
NoDryRun = iota
DryRunQuery
DryRunSplitDml
)
type ShardableDMLStmt = interface {
StmtNode
WhereExpr() ExprNode
SetWhereExpr(ExprNode)
// TableRefsJoin returns the table refs in the statement.
TableRefsJoin() (refs *Join, ok bool)
}
var _ ShardableDMLStmt = &DeleteStmt{}
var _ ShardableDMLStmt = &UpdateStmt{}
var _ ShardableDMLStmt = &InsertStmt{}
type NonTransactionalDMLStmt struct {
dmlNode
DryRun int // 0: no dry run, 1: dry run the query, 2: dry run split DMLs
ShardColumn *ColumnName // if it's nil, the handle column is automatically chosen for it
Limit uint64
DMLStmt ShardableDMLStmt
}
// Restore implements Node interface.
func (n *NonTransactionalDMLStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("BATCH ")
if n.ShardColumn != nil {
ctx.WriteKeyWord("ON ")
if err := n.ShardColumn.Restore(ctx); err != nil {
return errors.Trace(err)
}
ctx.WritePlain(" ")
}
ctx.WriteKeyWord("LIMIT ")
ctx.WritePlainf("%d ", n.Limit)
if n.DryRun == DryRunSplitDml {
ctx.WriteKeyWord("DRY RUN ")
}
if n.DryRun == DryRunQuery {
ctx.WriteKeyWord("DRY RUN QUERY ")
}
if err := n.DMLStmt.Restore(ctx); err != nil {
return errors.Trace(err)
}
return nil
}
// Accept implements Node Accept interface.
func (n *NonTransactionalDMLStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*NonTransactionalDMLStmt)
if n.ShardColumn != nil {
node, ok := n.ShardColumn.Accept(v)
if !ok {
return n, false
}
n.ShardColumn = node.(*ColumnName)
}
if n.DMLStmt != nil {
node, ok := n.DMLStmt.Accept(v)
if !ok {
return n, false
}
n.DMLStmt = node.(ShardableDMLStmt)
}
return v.Leave(n)
}
// UpdateStmt is a statement to update columns of existing rows in tables with new values.
// See https://dev.mysql.com/doc/refman/5.7/en/update.html
type UpdateStmt struct {
dmlNode
TableRefs *TableRefsClause
List []*Assignment
Where ExprNode
Order *OrderByClause
Limit *Limit
Priority mysql.PriorityEnum
IgnoreErr bool
MultipleTable bool
TableHints []*TableOptimizerHint
With *WithClause
}
// Restore implements Node interface.
func (n *UpdateStmt) Restore(ctx *format.RestoreCtx) error {
if n.With != nil {
defer ctx.RestoreCTEFunc()() //nolint: all_revive
err := n.With.Restore(ctx)
if err != nil {
return err
}
}
ctx.WriteKeyWord("UPDATE ")
if len(n.TableHints) != 0 {
ctx.WritePlain("/*+ ")
for i, tableHint := range n.TableHints {
if i != 0 {
ctx.WritePlain(" ")
}
if err := tableHint.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore UpdateStmt.TableHints[%d]", i)
}
}
ctx.WritePlain("*/ ")
}
if err := n.Priority.Restore(ctx); err != nil {
return errors.Trace(err)
}
if n.Priority != mysql.NoPriority {
ctx.WritePlain(" ")
}
if n.IgnoreErr {
ctx.WriteKeyWord("IGNORE ")
}
if err := n.TableRefs.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occur while restore UpdateStmt.TableRefs")
}
ctx.WriteKeyWord(" SET ")
for i, assignment := range n.List {
if i != 0 {
ctx.WritePlain(", ")
}
if err := assignment.Column.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occur while restore UpdateStmt.List[%d].Column", i)
}
ctx.WritePlain("=")
if err := assignment.Expr.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occur while restore UpdateStmt.List[%d].Expr", i)
}
}
if n.Where != nil {
ctx.WriteKeyWord(" WHERE ")
if err := n.Where.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occur while restore UpdateStmt.Where")
}
}
if n.Order != nil {
ctx.WritePlain(" ")
if err := n.Order.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occur while restore UpdateStmt.Order")
}
}
if n.Limit != nil {
ctx.WritePlain(" ")
if err := n.Limit.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occur while restore UpdateStmt.Limit")
}
}
return nil
}
// Accept implements Node Accept interface.
func (n *UpdateStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*UpdateStmt)
if n.With != nil {
node, ok := n.With.Accept(v)
if !ok {
return n, false
}
n.With = node.(*WithClause)
}
node, ok := n.TableRefs.Accept(v)
if !ok {
return n, false
}
n.TableRefs = node.(*TableRefsClause)
for i, val := range n.List {
node, ok = val.Accept(v)
if !ok {
return n, false
}
n.List[i] = node.(*Assignment)
}
if n.Where != nil {
node, ok = n.Where.Accept(v)
if !ok {
return n, false
}
n.Where = node.(ExprNode)
}
if n.Order != nil {
node, ok = n.Order.Accept(v)
if !ok {
return n, false
}
n.Order = node.(*OrderByClause)
}
if n.Limit != nil {
node, ok = n.Limit.Accept(v)
if !ok {
return n, false
}
n.Limit = node.(*Limit)
}
return v.Leave(n)
}
// WhereExpr implements ShardableDMLStmt interface.
func (n *UpdateStmt) WhereExpr() ExprNode {
return n.Where
}
// SetWhereExpr implements ShardableDMLStmt interface.
func (n *UpdateStmt) SetWhereExpr(e ExprNode) {
n.Where = e
}
// TableRefsJoin implements ShardableDMLStmt interface.
func (n *UpdateStmt) TableRefsJoin() (*Join, bool) {
return n.TableRefs.TableRefs, true
}
// Limit is the limit clause.
type Limit struct {
node
Count ExprNode
Offset ExprNode
}
// Restore implements Node interface.
func (n *Limit) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("LIMIT ")
if n.Offset != nil {
if err := n.Offset.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore Limit.Offset")
}
ctx.WritePlain(",")
}
if err := n.Count.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore Limit.Count")
}
return nil
}
// Accept implements Node Accept interface.
func (n *Limit) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
if n.Count != nil {
node, ok := n.Count.Accept(v)
if !ok {
return n, false
}
n.Count = node.(ExprNode)
}
if n.Offset != nil {
node, ok := n.Offset.Accept(v)
if !ok {
return n, false
}
n.Offset = node.(ExprNode)
}
n = newNode.(*Limit)
return v.Leave(n)
}
// ShowStmtType is the type for SHOW statement.
type ShowStmtType int
// Show statement types.
const (
ShowNone = iota
ShowEngines
ShowDatabases
ShowTables
ShowTableStatus
ShowColumns
ShowWarnings
ShowCharset
ShowVariables
ShowStatus
ShowCollation
ShowCreateTable
ShowCreateView
ShowCreateUser
ShowCreateSequence
ShowCreatePlacementPolicy
ShowGrants
ShowTriggers
ShowProcedureStatus
ShowFunctionStatus
ShowIndex
ShowProcessList
ShowCreateDatabase
ShowConfig
ShowEvents
ShowStatsExtended
ShowStatsMeta
ShowStatsHistograms
ShowStatsTopN
ShowStatsBuckets
ShowStatsHealthy
ShowStatsLocked
ShowHistogramsInFlight
ShowColumnStatsUsage
ShowPlugins
ShowProfile
ShowProfiles
ShowMasterStatus
ShowPrivileges
ShowErrors
ShowBindings
ShowBindingCacheStatus
ShowOpenTables
ShowAnalyzeStatus
ShowRegions
ShowBuiltins
ShowTableNextRowId
ShowBackups
ShowRestores
ShowImports
ShowCreateImport
ShowPlacement
ShowPlacementForDatabase
ShowPlacementForTable
ShowPlacementForPartition
ShowPlacementLabels
ShowSessionStates
ShowCreateResourceGroup
ShowImportJobs
ShowImportGroups
ShowCreateProcedure
ShowBinlogStatus
ShowReplicaStatus
ShowDistributions
ShowDistributionJobs
// showTpCount is the count of all kinds of `SHOW` statements.
showTpCount
)
const (
ProfileTypeInvalid = iota
ProfileTypeCPU
ProfileTypeMemory
ProfileTypeBlockIo
ProfileTypeContextSwitch
ProfileTypePageFaults
ProfileTypeIpc
ProfileTypeSwaps
ProfileTypeSource
ProfileTypeAll
)
// ShowStmt is a statement to provide information about databases, tables, columns and so on.
// See https://dev.mysql.com/doc/refman/5.7/en/show.html
type ShowStmt struct {
dmlNode
Tp ShowStmtType // Databases/Tables/Columns/....
DBName string
Table *TableName // Used for showing columns.
// Procedure's naming method is consistent with the table name
Procedure *TableName
Partition CIStr // Used for showing partition.
Column *ColumnName // Used for `desc table column`.
IndexName CIStr
ResourceGroupName string // used for showing resource group
Flag int // Some flag parsed from sql, such as FULL.
Full bool
User *auth.UserIdentity // Used for show grants/create user.
Roles []*auth.RoleIdentity // Used for show grants .. using
IfNotExists bool // Used for `show create database if not exists`
Extended bool // Used for `show extended columns from ...`
Limit *Limit // Used for partial Show STMTs to limit Result Set row numbers.
CountWarningsOrErrors bool // Used for showing count(*) warnings | errors
// GlobalScope is used by `show variables` and `show bindings`
GlobalScope bool
Pattern *PatternLikeOrIlikeExpr
Where ExprNode
ShowProfileTypes []int // Used for `SHOW PROFILE` syntax
ShowProfileArgs *int64 // Used for `SHOW PROFILE` syntax
ShowProfileLimit *Limit // Used for `SHOW PROFILE` syntax
ShowGroupKey string // Used for `SHOW IMPORT GROUP <GROUP_KEY>` syntax
ImportJobID *int64 // Used for `SHOW IMPORT JOB <ID>` syntax
DistributionJobID *int64 // Used for `SHOW DISTRIBUTION JOB <ID>` syntax
}
// Restore implements Node interface.
func (n *ShowStmt) Restore(ctx *format.RestoreCtx) error {
restoreOptFull := func() {
if n.Full {
ctx.WriteKeyWord("FULL ")
}
}
restoreShowDatabaseNameOpt := func() {
if n.DBName != "" {
// FROM OR IN
ctx.WriteKeyWord(" IN ")
ctx.WriteName(n.DBName)
}
}
restoreGlobalScope := func() {
if n.GlobalScope {
ctx.WriteKeyWord("GLOBAL ")
} else {
ctx.WriteKeyWord("SESSION ")
}
}
restoreShowLikeOrWhereOpt := func() error {
if n.Pattern != nil && n.Pattern.Pattern != nil {
ctx.WriteKeyWord(" LIKE ")
if err := n.Pattern.Pattern.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore ShowStmt.Pattern")
}
} else if n.Where != nil {
ctx.WriteKeyWord(" WHERE ")
if err := n.Where.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore ShowStmt.Where")
}
}
return nil
}
ctx.WriteKeyWord("SHOW ")
switch n.Tp {
case ShowBinlogStatus:
ctx.WriteKeyWord("BINARY LOG STATUS")
case ShowCreateTable:
ctx.WriteKeyWord("CREATE TABLE ")
if err := n.Table.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore ShowStmt.Table")
}
case ShowCreateProcedure:
ctx.WriteKeyWord("CREATE PROCEDURE ")
if err := n.Procedure.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore ShowStmt.Procedure")
}
case ShowCreateView:
ctx.WriteKeyWord("CREATE VIEW ")
if err := n.Table.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore ShowStmt.VIEW")
}
case ShowCreateDatabase:
ctx.WriteKeyWord("CREATE DATABASE ")
if n.IfNotExists {
ctx.WriteKeyWord("IF NOT EXISTS ")
}
ctx.WriteName(n.DBName)
case ShowCreateSequence:
ctx.WriteKeyWord("CREATE SEQUENCE ")
if err := n.Table.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore ShowStmt.SEQUENCE")
}
case ShowCreatePlacementPolicy:
ctx.WriteKeyWord("CREATE PLACEMENT POLICY ")
ctx.WriteName(n.DBName)
case ShowCreateResourceGroup:
ctx.WriteKeyWord("CREATE RESOURCE GROUP ")
ctx.WriteName(n.ResourceGroupName)
case ShowCreateUser:
ctx.WriteKeyWord("CREATE USER ")
if err := n.User.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore ShowStmt.User")
}
case ShowGrants:
ctx.WriteKeyWord("GRANTS")
if n.User != nil {
ctx.WriteKeyWord(" FOR ")
if err := n.User.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore ShowStmt.User")
}
}
if n.Roles != nil {
ctx.WriteKeyWord(" USING ")
for i, r := range n.Roles {
if err := r.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore ShowStmt.User")
}
if i != len(n.Roles)-1 {
ctx.WritePlain(", ")
}
}
}
case ShowMasterStatus:
ctx.WriteKeyWord("MASTER STATUS")
case ShowProcessList:
restoreOptFull()
ctx.WriteKeyWord("PROCESSLIST")
case ShowStatsExtended:
ctx.WriteKeyWord("STATS_EXTENDED")
if err := restoreShowLikeOrWhereOpt(); err != nil {
return err
}
case ShowStatsMeta:
ctx.WriteKeyWord("STATS_META")
if err := restoreShowLikeOrWhereOpt(); err != nil {
return err
}
case ShowStatsLocked:
ctx.WriteKeyWord("STATS_LOCKED")
if err := restoreShowLikeOrWhereOpt(); err != nil {
return err
}
case ShowStatsHistograms:
ctx.WriteKeyWord("STATS_HISTOGRAMS")
if err := restoreShowLikeOrWhereOpt(); err != nil {
return err
}
case ShowStatsTopN:
ctx.WriteKeyWord("STATS_TOPN")
if err := restoreShowLikeOrWhereOpt(); err != nil {
return err
}
case ShowStatsBuckets:
ctx.WriteKeyWord("STATS_BUCKETS")
if err := restoreShowLikeOrWhereOpt(); err != nil {
return err
}
case ShowStatsHealthy:
ctx.WriteKeyWord("STATS_HEALTHY")
if err := restoreShowLikeOrWhereOpt(); err != nil {
return err
}
case ShowHistogramsInFlight:
ctx.WriteKeyWord("HISTOGRAMS_IN_FLIGHT")
if err := restoreShowLikeOrWhereOpt(); err != nil {
return err
}
case ShowColumnStatsUsage:
ctx.WriteKeyWord("COLUMN_STATS_USAGE")
if err := restoreShowLikeOrWhereOpt(); err != nil {
return err
}
case ShowProfiles:
ctx.WriteKeyWord("PROFILES")
case ShowProfile:
ctx.WriteKeyWord("PROFILE")
if len(n.ShowProfileTypes) > 0 {
for i, tp := range n.ShowProfileTypes {
if i != 0 {
ctx.WritePlain(",")
}
ctx.WritePlain(" ")
switch tp {
case ProfileTypeCPU:
ctx.WriteKeyWord("CPU")
case ProfileTypeMemory:
ctx.WriteKeyWord("MEMORY")
case ProfileTypeBlockIo:
ctx.WriteKeyWord("BLOCK IO")
case ProfileTypeContextSwitch:
ctx.WriteKeyWord("CONTEXT SWITCHES")
case ProfileTypeIpc:
ctx.WriteKeyWord("IPC")
case ProfileTypePageFaults:
ctx.WriteKeyWord("PAGE FAULTS")
case ProfileTypeSource:
ctx.WriteKeyWord("SOURCE")
case ProfileTypeSwaps:
ctx.WriteKeyWord("SWAPS")
case ProfileTypeAll:
ctx.WriteKeyWord("ALL")
}
}
}
if n.ShowProfileArgs != nil {
ctx.WriteKeyWord(" FOR QUERY ")
ctx.WritePlainf("%d", *n.ShowProfileArgs)
}
if n.ShowProfileLimit != nil {
ctx.WritePlain(" ")
if err := n.ShowProfileLimit.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore ShowStmt.WritePlain")
}
}
case ShowPrivileges:
ctx.WriteKeyWord("PRIVILEGES")
case ShowBuiltins:
ctx.WriteKeyWord("BUILTINS")
case ShowPlacementForDatabase:
ctx.WriteKeyWord("PLACEMENT FOR DATABASE ")
ctx.WriteName(n.DBName)
case ShowPlacementForTable:
ctx.WriteKeyWord("PLACEMENT FOR TABLE ")
if err := n.Table.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore ShowStmt.Table")
}
case ShowPlacementForPartition:
ctx.WriteKeyWord("PLACEMENT FOR TABLE ")
if err := n.Table.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore ShowStmt.Table")
}
ctx.WriteKeyWord(" PARTITION ")
ctx.WriteName(n.Partition.String())
case ShowImportJobs:
if n.ImportJobID != nil {
ctx.WriteKeyWord("IMPORT JOB ")
ctx.WritePlainf("%d", *n.ImportJobID)
} else {
ctx.WriteKeyWord("IMPORT JOBS")
restoreShowLikeOrWhereOpt()
}
case ShowImportGroups:
if n.ShowGroupKey != "" {
ctx.WriteKeyWord("IMPORT GROUP ")
ctx.WriteString(n.ShowGroupKey)
} else {
ctx.WriteKeyWord("IMPORT GROUPS")
restoreShowLikeOrWhereOpt()
}
case ShowDistributionJobs:
if n.DistributionJobID != nil {
ctx.WriteKeyWord("DISTRIBUTION JOB ")
ctx.WritePlainf("%d", *n.DistributionJobID)
} else {
ctx.WriteKeyWord("DISTRIBUTION JOBS")
restoreShowLikeOrWhereOpt()
}
// ShowTargetFilterable
default:
switch n.Tp {
case ShowEngines:
ctx.WriteKeyWord("ENGINES")
case ShowConfig:
ctx.WriteKeyWord("CONFIG")
case ShowDatabases:
ctx.WriteKeyWord("DATABASES")
case ShowCharset:
ctx.WriteKeyWord("CHARSET")
case ShowTables:
restoreOptFull()
ctx.WriteKeyWord("TABLES")
restoreShowDatabaseNameOpt()
case ShowOpenTables:
ctx.WriteKeyWord("OPEN TABLES")
restoreShowDatabaseNameOpt()
case ShowTableStatus:
ctx.WriteKeyWord("TABLE STATUS")
restoreShowDatabaseNameOpt()
case ShowIndex:
// here can be INDEX INDEXES KEYS
// FROM or IN
ctx.WriteKeyWord("INDEX IN ")
if err := n.Table.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore ShowStmt.Table")
} // TODO: remember to check this case
case ShowColumns: // equivalent to SHOW FIELDS
if n.Extended {
ctx.WriteKeyWord("EXTENDED ")
}
restoreOptFull()
ctx.WriteKeyWord("COLUMNS")
if n.Table != nil {
// FROM or IN
ctx.WriteKeyWord(" IN ")
if err := n.Table.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore ShowStmt.Table")
}
}
restoreShowDatabaseNameOpt()
case ShowWarnings:
ctx.WriteKeyWord("WARNINGS")
case ShowErrors:
ctx.WriteKeyWord("ERRORS")
case ShowVariables:
restoreGlobalScope()
ctx.WriteKeyWord("VARIABLES")
case ShowStatus:
restoreGlobalScope()
ctx.WriteKeyWord("STATUS")
case ShowCollation:
ctx.WriteKeyWord("COLLATION")
case ShowTriggers:
ctx.WriteKeyWord("TRIGGERS")
restoreShowDatabaseNameOpt()
case ShowProcedureStatus:
ctx.WriteKeyWord("PROCEDURE STATUS")
case ShowFunctionStatus:
ctx.WriteKeyWord("FUNCTION STATUS")
case ShowEvents:
ctx.WriteKeyWord("EVENTS")
restoreShowDatabaseNameOpt()
case ShowPlugins:
ctx.WriteKeyWord("PLUGINS")
case ShowBindings:
if n.GlobalScope {
ctx.WriteKeyWord("GLOBAL ")
} else {
ctx.WriteKeyWord("SESSION ")
}
ctx.WriteKeyWord("BINDINGS")
case ShowBindingCacheStatus:
ctx.WriteKeyWord("BINDING_CACHE STATUS")
case ShowAnalyzeStatus:
ctx.WriteKeyWord("ANALYZE STATUS")
case ShowDistributions:
ctx.WriteKeyWord("TABLE ")
if err := n.Table.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore ShowStmt.Table")
}
ctx.WriteKeyWord(" DISTRIBUTIONS")
if err := restoreShowLikeOrWhereOpt(); err != nil {
return err
}
return nil
case ShowRegions:
ctx.WriteKeyWord("TABLE ")
if err := n.Table.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore ShowStmt.Table")
}
if len(n.IndexName.L) > 0 {
ctx.WriteKeyWord(" INDEX ")
ctx.WriteName(n.IndexName.String())
}
ctx.WriteKeyWord(" REGIONS")
if err := restoreShowLikeOrWhereOpt(); err != nil {
return err
}
return nil
case ShowTableNextRowId:
ctx.WriteKeyWord("TABLE ")
if err := n.Table.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore ShowStmt.Table")
}
ctx.WriteKeyWord(" NEXT_ROW_ID")
return nil
case ShowBackups:
ctx.WriteKeyWord("BACKUPS")
case ShowRestores:
ctx.WriteKeyWord("RESTORES")
case ShowImports:
ctx.WriteKeyWord("IMPORTS")
case ShowPlacement:
ctx.WriteKeyWord("PLACEMENT")
case ShowPlacementLabels:
ctx.WriteKeyWord("PLACEMENT LABELS")
case ShowSessionStates:
ctx.WriteKeyWord("SESSION_STATES")
case ShowReplicaStatus:
ctx.WriteKeyWord("REPLICA STATUS")
default:
return errors.New("Unknown ShowStmt type")
}
restoreShowLikeOrWhereOpt()
}
return nil
}
// Accept implements Node Accept interface.
func (n *ShowStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*ShowStmt)
if n.Table != nil {
node, ok := n.Table.Accept(v)
if !ok {
return n, false
}
n.Table = node.(*TableName)
}
if n.Column != nil {
node, ok := n.Column.Accept(v)
if !ok {
return n, false
}
n.Column = node.(*ColumnName)
}
if n.Pattern != nil {
node, ok := n.Pattern.Accept(v)
if !ok {
return n, false
}
n.Pattern = node.(*PatternLikeOrIlikeExpr)
}
if n.Where != nil {
node, ok := n.Where.Accept(v)
if !ok {
return n, false
}
n.Where = node.(ExprNode)
}
if n.Limit != nil {
node, ok := n.Limit.Accept(v)
if !ok {
return n, false
}
n.Limit = node.(*Limit)
}
return v.Leave(n)
}
// Allow limit result set for partial SHOW cmd
func (n *ShowStmt) NeedLimitRSRow() bool {
switch n.Tp {
// Show statements need to have consistence behavior with MySQL Does
case ShowEngines, ShowDatabases, ShowTables, ShowColumns, ShowTableStatus, ShowWarnings,
ShowCharset, ShowVariables, ShowStatus, ShowCollation, ShowIndex, ShowPlugins:
return true
default:
// There are five classes of Show STMT.
// 1) The STMT Only return one row:
// ShowCreateTable, ShowCreateView, ShowCreateUser, ShowCreateDatabase, ShowMasterStatus,
//
// 2) The STMT is a MySQL syntax extend, so just keep it behavior as before:
// ShowCreateSequence, ShowCreatePlacementPolicy, ShowConfig, ShowStatsExtended,
// ShowStatsMeta, ShowStatsHistograms, ShowStatsTopN, ShowStatsBuckets, ShowStatsHealthy
// ShowHistogramsInFlight, ShowColumnStatsUsage, ShowBindings, ShowBindingCacheStatus,
// ShowPumpStatus, ShowDrainerStatus, ShowAnalyzeStatus, ShowRegions, ShowBuiltins,
// ShowTableNextRowId, ShowBackups, ShowRestores, ShowImports, ShowCreateImport, ShowPlacement
// ShowPlacementForDatabase, ShowPlacementForTable, ShowPlacementForPartition, ShowPlacementLabels
//
// 3) There is corelated statements in MySQL, but no limit result set return number also.
// ShowGrants, ShowProcessList, ShowPrivileges, ShowBuiltins, ShowTableNextRowId
//
// 4) There is corelated statements in MySQL, but it seems not recommand to use them and likely deprecte in the future.
// ShowProfile, ShowProfiles
//
// 5) Below STMTs do not implement fetch logic.
// ShowTriggers, ShowProcedureStatus, ShowEvents, ShowErrors, ShowOpenTables.
return false
}
}
// WindowSpec is the specification of a window.
type WindowSpec struct {
node
Name CIStr
// Ref is the reference window of this specification. For example, in `w2 as (w1 order by a)`,
// the definition of `w2` references `w1`.
Ref CIStr
PartitionBy *PartitionByClause
OrderBy *OrderByClause
Frame *FrameClause
// OnlyAlias will set to true of the first following case.
// To make compatible with MySQL, we need to distinguish `select func over w` from `select func over (w)`.
OnlyAlias bool
}
// Restore implements Node interface.
func (n *WindowSpec) Restore(ctx *format.RestoreCtx) error {
if name := n.Name.String(); name != "" {
ctx.WriteName(name)
if n.OnlyAlias {
return nil
}
ctx.WriteKeyWord(" AS ")
}
ctx.WritePlain("(")
sep := ""
if refName := n.Ref.String(); refName != "" {
ctx.WriteName(refName)
sep = " "
}
if n.PartitionBy != nil {
ctx.WritePlain(sep)
if err := n.PartitionBy.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore WindowSpec.PartitionBy")
}
sep = " "
}
if n.OrderBy != nil {
ctx.WritePlain(sep)
if err := n.OrderBy.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore WindowSpec.OrderBy")
}
sep = " "
}
if n.Frame != nil {
ctx.WritePlain(sep)
if err := n.Frame.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore WindowSpec.Frame")
}
}
ctx.WritePlain(")")
return nil
}
// Accept implements Node Accept interface.
func (n *WindowSpec) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*WindowSpec)
if n.PartitionBy != nil {
node, ok := n.PartitionBy.Accept(v)
if !ok {
return n, false
}
n.PartitionBy = node.(*PartitionByClause)
}
if n.OrderBy != nil {
node, ok := n.OrderBy.Accept(v)
if !ok {
return n, false
}
n.OrderBy = node.(*OrderByClause)
}
if n.Frame != nil {
node, ok := n.Frame.Accept(v)
if !ok {
return n, false
}
n.Frame = node.(*FrameClause)
}
return v.Leave(n)
}
type SelectIntoType int
const (
SelectIntoOutfile SelectIntoType = iota + 1
SelectIntoDumpfile
SelectIntoVars
)
type SelectIntoOption struct {
node
Tp SelectIntoType
FileName string
FieldsInfo *FieldsClause
LinesInfo *LinesClause
}
// Restore implements Node interface.
func (n *SelectIntoOption) Restore(ctx *format.RestoreCtx) error {
if n.Tp != SelectIntoOutfile {
// only support SELECT/TABLE/VALUES ... INTO OUTFILE statement now
return errors.New("Unsupported SelectionInto type")
}
ctx.WriteKeyWord("INTO OUTFILE ")
ctx.WriteString(n.FileName)
if n.FieldsInfo != nil {
if err := n.FieldsInfo.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore SelectInto.FieldsInfo")
}
}
if n.LinesInfo != nil {
if err := n.LinesInfo.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore SelectInto.LinesInfo")
}
}
return nil
}
// Accept implements Node Accept interface.
func (n *SelectIntoOption) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
return v.Leave(n)
}
// PartitionByClause represents partition by clause.
type PartitionByClause struct {
node
Items []*ByItem
}
// Restore implements Node interface.
func (n *PartitionByClause) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("PARTITION BY ")
for i, v := range n.Items {
if i != 0 {
ctx.WritePlain(", ")
}
if err := v.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore PartitionByClause.Items[%d]", i)
}
}
return nil
}
// Accept implements Node Accept interface.
func (n *PartitionByClause) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*PartitionByClause)
for i, val := range n.Items {
node, ok := val.Accept(v)
if !ok {
return n, false
}
n.Items[i] = node.(*ByItem)
}
return v.Leave(n)
}
// FrameType is the type of window function frame.
type FrameType int
// Window function frame types.
// MySQL only supports `ROWS` and `RANGES`.
const (
Rows = iota
Ranges
Groups
)
// FrameClause represents frame clause.
type FrameClause struct {
node
Type FrameType
Extent FrameExtent
}
// Restore implements Node interface.
func (n *FrameClause) Restore(ctx *format.RestoreCtx) error {
switch n.Type {
case Rows:
ctx.WriteKeyWord("ROWS")
case Ranges:
ctx.WriteKeyWord("RANGE")
default:
return errors.New("Unsupported window function frame type")
}
ctx.WriteKeyWord(" BETWEEN ")
if err := n.Extent.Start.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore FrameClause.Extent.Start")
}
ctx.WriteKeyWord(" AND ")
if err := n.Extent.End.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore FrameClause.Extent.End")
}
return nil
}
// Accept implements Node Accept interface.
func (n *FrameClause) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*FrameClause)
node, ok := n.Extent.Start.Accept(v)
if !ok {
return n, false
}
n.Extent.Start = *node.(*FrameBound)
node, ok = n.Extent.End.Accept(v)
if !ok {
return n, false
}
n.Extent.End = *node.(*FrameBound)
return v.Leave(n)
}
// FrameExtent represents frame extent.
type FrameExtent struct {
Start FrameBound
End FrameBound
}
// FrameType is the type of window function frame bound.
type BoundType int
// Frame bound types.
const (
Following = iota
Preceding
CurrentRow
)
// FrameBound represents frame bound.
type FrameBound struct {
node
Type BoundType
UnBounded bool
Expr ExprNode
// `Unit` is used to indicate the units in which the `Expr` should be interpreted.
// For example: '2:30' MINUTE_SECOND.
Unit TimeUnitType
}
// Restore implements Node interface.
func (n *FrameBound) Restore(ctx *format.RestoreCtx) error {
if n.UnBounded {
ctx.WriteKeyWord("UNBOUNDED")
}
switch n.Type {
case CurrentRow:
ctx.WriteKeyWord("CURRENT ROW")
case Preceding, Following:
if n.Unit != TimeUnitInvalid {
ctx.WriteKeyWord("INTERVAL ")
}
if n.Expr != nil {
if err := n.Expr.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore FrameBound.Expr")
}
}
if n.Unit != TimeUnitInvalid {
ctx.WritePlain(" ")
ctx.WriteKeyWord(n.Unit.String())
}
if n.Type == Preceding {
ctx.WriteKeyWord(" PRECEDING")
} else {
ctx.WriteKeyWord(" FOLLOWING")
}
}
return nil
}
// Accept implements Node Accept interface.
func (n *FrameBound) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*FrameBound)
if n.Expr != nil {
node, ok := n.Expr.Accept(v)
if !ok {
return n, false
}
n.Expr = node.(ExprNode)
}
return v.Leave(n)
}
type DistributeTableStmt struct {
dmlNode
Table *TableName
PartitionNames []CIStr
Rule string
Engine string
Timeout string
}
// Restore implements Node interface.
func (n *DistributeTableStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("DISTRIBUTE ")
ctx.WriteKeyWord("TABLE ")
if err := n.Table.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore SplitIndexRegionStmt.Table")
}
if len(n.PartitionNames) > 0 {
ctx.WriteKeyWord(" PARTITION")
ctx.WritePlain("(")
for i, v := range n.PartitionNames {
if i != 0 {
ctx.WritePlain(", ")
}
ctx.WriteName(v.String())
}
ctx.WritePlain(")")
}
if len(n.Rule) > 0 {
ctx.WriteKeyWord(" RULE = ")
ctx.WriteString(n.Rule)
}
if len(n.Engine) > 0 {
ctx.WriteKeyWord(" ENGINE = ")
ctx.WriteString(n.Engine)
}
if len(n.Timeout) > 0 {
ctx.WriteKeyWord(" TIMEOUT = ")
ctx.WriteString(n.Timeout)
}
return nil
}
// Accept implements Node Accept interface.
func (n *DistributeTableStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*DistributeTableStmt)
node, ok := n.Table.Accept(v)
if !ok {
return n, false
}
n.Table = node.(*TableName)
return v.Leave(n)
}
type SplitRegionStmt struct {
dmlNode
Table *TableName
IndexName CIStr
PartitionNames []CIStr
SplitSyntaxOpt *SplitSyntaxOption
SplitOpt *SplitOption
}
type SplitOption struct {
stmtNode
Lower []ExprNode
Upper []ExprNode
Num int64
ValueLists [][]ExprNode
}
type SplitSyntaxOption struct {
HasRegionFor bool
HasPartition bool
}
func (n *SplitRegionStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("SPLIT ")
if n.SplitSyntaxOpt != nil {
if n.SplitSyntaxOpt.HasRegionFor {
ctx.WriteKeyWord("REGION FOR ")
}
if n.SplitSyntaxOpt.HasPartition {
ctx.WriteKeyWord("PARTITION ")
}
}
ctx.WriteKeyWord("TABLE ")
if err := n.Table.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore SplitIndexRegionStmt.Table")
}
if len(n.PartitionNames) > 0 {
ctx.WriteKeyWord(" PARTITION")
ctx.WritePlain("(")
for i, v := range n.PartitionNames {
if i != 0 {
ctx.WritePlain(", ")
}
ctx.WriteName(v.String())
}
ctx.WritePlain(")")
}
if len(n.IndexName.L) > 0 {
ctx.WriteKeyWord(" INDEX ")
ctx.WriteName(n.IndexName.String())
}
ctx.WritePlain(" ")
err := n.SplitOpt.Restore(ctx)
return err
}
func (n *SplitRegionStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*SplitRegionStmt)
node, ok := n.Table.Accept(v)
if !ok {
return n, false
}
n.Table = node.(*TableName)
if n.SplitOpt != nil {
node, ok := n.SplitOpt.Accept(v)
if !ok {
return n, false
}
n.SplitOpt = node.(*SplitOption)
}
return v.Leave(n)
}
func (n *SplitOption) Restore(ctx *format.RestoreCtx) error {
if len(n.ValueLists) == 0 {
ctx.WriteKeyWord("BETWEEN ")
ctx.WritePlain("(")
for j, v := range n.Lower {
if j != 0 {
ctx.WritePlain(",")
}
if err := v.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore SplitOption Lower")
}
}
ctx.WritePlain(")")
ctx.WriteKeyWord(" AND ")
ctx.WritePlain("(")
for j, v := range n.Upper {
if j != 0 {
ctx.WritePlain(",")
}
if err := v.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore SplitOption Upper")
}
}
ctx.WritePlain(")")
ctx.WriteKeyWord(" REGIONS")
ctx.WritePlainf(" %d", n.Num)
return nil
}
ctx.WriteKeyWord("BY ")
for i, row := range n.ValueLists {
if i != 0 {
ctx.WritePlain(",")
}
ctx.WritePlain("(")
for j, v := range row {
if j != 0 {
ctx.WritePlain(",")
}
if err := v.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore SplitOption.ValueLists[%d][%d]", i, j)
}
}
ctx.WritePlain(")")
}
return nil
}
// Accept implements Node Accept interface.
func (n *SplitOption) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*SplitOption)
for i, val := range n.Lower {
node, ok := val.Accept(v)
if !ok {
return n, false
}
n.Lower[i] = node.(ExprNode)
}
for i, val := range n.Upper {
node, ok := val.Accept(v)
if !ok {
return n, false
}
n.Upper[i] = node.(ExprNode)
}
for i, list := range n.ValueLists {
for j, val := range list {
node, ok := val.Accept(v)
if !ok {
return n, false
}
n.ValueLists[i][j] = node.(ExprNode)
}
}
return v.Leave(n)
}
type FulltextSearchModifier int
const (
FulltextSearchModifierNaturalLanguageMode = 0
FulltextSearchModifierBooleanMode = 1
FulltextSearchModifierModeMask = 0xF
FulltextSearchModifierWithQueryExpansion = 1 << 4
)
func (m FulltextSearchModifier) IsBooleanMode() bool {
return m&FulltextSearchModifierModeMask == FulltextSearchModifierBooleanMode
}
func (m FulltextSearchModifier) IsNaturalLanguageMode() bool {
return m&FulltextSearchModifierModeMask == FulltextSearchModifierNaturalLanguageMode
}
func (m FulltextSearchModifier) WithQueryExpansion() bool {
return m&FulltextSearchModifierWithQueryExpansion == FulltextSearchModifierWithQueryExpansion
}
type AsOfClause struct {
node
TsExpr ExprNode
}
// Restore implements Node interface.
func (n *AsOfClause) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("AS OF TIMESTAMP ")
if err := n.TsExpr.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore AsOfClause.Expr")
}
return nil
}
// Accept implements Node Accept interface.
func (n *AsOfClause) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*AsOfClause)
node, ok := n.TsExpr.Accept(v)
if !ok {
return n, false
}
n.TsExpr = node.(ExprNode)
return v.Leave(n)
}
// Copyright 2015 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// See the License for the specific language governing permissions and
// limitations under the License.
package ast
import (
"fmt"
"io"
"reflect"
"regexp"
"strings"
"github.com/pingcap/errors"
"github.com/pingcap/tidb/pkg/parser/format"
"github.com/pingcap/tidb/pkg/parser/opcode"
)
var (
_ ExprNode = &BetweenExpr{}
_ ExprNode = &BinaryOperationExpr{}
_ ExprNode = &CaseExpr{}
_ ExprNode = &ColumnNameExpr{}
_ ExprNode = &TableNameExpr{}
_ ExprNode = &CompareSubqueryExpr{}
_ ExprNode = &DefaultExpr{}
_ ExprNode = &ExistsSubqueryExpr{}
_ ExprNode = &IsNullExpr{}
_ ExprNode = &IsTruthExpr{}
_ ExprNode = &ParenthesesExpr{}
_ ExprNode = &PatternInExpr{}
_ ExprNode = &PatternLikeOrIlikeExpr{}
_ ExprNode = &PatternRegexpExpr{}
_ ExprNode = &PositionExpr{}
_ ExprNode = &RowExpr{}
_ ExprNode = &SubqueryExpr{}
_ ExprNode = &UnaryOperationExpr{}
_ ExprNode = &ValuesExpr{}
_ ExprNode = &VariableExpr{}
_ ExprNode = &MatchAgainst{}
_ ExprNode = &SetCollationExpr{}
_ Node = &ColumnName{}
_ Node = &WhenClause{}
)
// ValueExpr define a interface for ValueExpr.
type ValueExpr interface {
ExprNode
SetValue(val any)
GetValue() any
GetDatumString() string
GetString() string
GetProjectionOffset() int
SetProjectionOffset(offset int)
}
// NewValueExpr creates a ValueExpr with value, and sets default field type.
var NewValueExpr func(value any, charset string, collate string) ValueExpr
// NewParamMarkerExpr creates a ParamMarkerExpr.
var NewParamMarkerExpr func(offset int) ParamMarkerExpr
// BetweenExpr is for "between and" or "not between and" expression.
type BetweenExpr struct {
exprNode
// Expr is the expression to be checked.
Expr ExprNode
// Left is the expression for minimal value in the range.
Left ExprNode
// Right is the expression for maximum value in the range.
Right ExprNode
// Not is true, the expression is "not between and".
Not bool
}
// Restore implements Node interface.
func (n *BetweenExpr) Restore(ctx *format.RestoreCtx) error {
if ctx.Flags.HasRestoreBracketAroundBetweenExpr() {
ctx.WritePlain("(")
}
if err := n.Expr.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore BetweenExpr.Expr")
}
if n.Not {
ctx.WriteKeyWord(" NOT BETWEEN ")
} else {
ctx.WriteKeyWord(" BETWEEN ")
}
if err := n.Left.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore BetweenExpr.Left")
}
ctx.WriteKeyWord(" AND ")
if err := n.Right.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore BetweenExpr.Right ")
}
if ctx.Flags.HasRestoreBracketAroundBetweenExpr() {
ctx.WritePlain(")")
}
return nil
}
// Format the ExprNode into a Writer.
func (n *BetweenExpr) Format(w io.Writer) {
n.Expr.Format(w)
if n.Not {
fmt.Fprint(w, " NOT BETWEEN ")
} else {
fmt.Fprint(w, " BETWEEN ")
}
n.Left.Format(w)
fmt.Fprint(w, " AND ")
n.Right.Format(w)
}
// Accept implements Node interface.
func (n *BetweenExpr) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*BetweenExpr)
node, ok := n.Expr.Accept(v)
if !ok {
return n, false
}
n.Expr = node.(ExprNode)
node, ok = n.Left.Accept(v)
if !ok {
return n, false
}
n.Left = node.(ExprNode)
node, ok = n.Right.Accept(v)
if !ok {
return n, false
}
n.Right = node.(ExprNode)
return v.Leave(n)
}
// BinaryOperationExpr is for binary operation like `1 + 1`, `1 - 1`, etc.
type BinaryOperationExpr struct {
exprNode
// Op is the operator code for BinaryOperation.
Op opcode.Op
// L is the left expression in BinaryOperation.
L ExprNode
// R is the right expression in BinaryOperation.
R ExprNode
}
func restoreBinaryOpWithSpacesAround(ctx *format.RestoreCtx, op opcode.Op) error {
shouldInsertSpace := ctx.Flags.HasSpacesAroundBinaryOperationFlag() || op.IsKeyword()
if shouldInsertSpace {
ctx.WritePlain(" ")
}
if err := op.Restore(ctx); err != nil {
return err // no need to annotate, the caller will annotate.
}
if shouldInsertSpace {
ctx.WritePlain(" ")
}
return nil
}
// Restore implements Node interface.
func (n *BinaryOperationExpr) Restore(ctx *format.RestoreCtx) error {
originalFlags := ctx.Flags
if ctx.Flags.HasRestoreBracketAroundBinaryOperation() {
ctx.WritePlain("(")
ctx.Flags |= format.RestoreBracketAroundBetweenExpr
}
if err := n.L.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred when restore BinaryOperationExpr.L")
}
if err := restoreBinaryOpWithSpacesAround(ctx, n.Op); err != nil {
return errors.Annotate(err, "An error occurred when restore BinaryOperationExpr.Op")
}
if err := n.R.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred when restore BinaryOperationExpr.R")
}
if ctx.Flags.HasRestoreBracketAroundBinaryOperation() {
ctx.WritePlain(")")
ctx.Flags = originalFlags
}
return nil
}
// Format the ExprNode into a Writer.
func (n *BinaryOperationExpr) Format(w io.Writer) {
n.L.Format(w)
fmt.Fprint(w, " ")
n.Op.Format(w)
fmt.Fprint(w, " ")
n.R.Format(w)
}
// Accept implements Node interface.
func (n *BinaryOperationExpr) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*BinaryOperationExpr)
node, ok := n.L.Accept(v)
if !ok {
return n, false
}
n.L = node.(ExprNode)
node, ok = n.R.Accept(v)
if !ok {
return n, false
}
n.R = node.(ExprNode)
return v.Leave(n)
}
// WhenClause is the when clause in Case expression for "when condition then result".
type WhenClause struct {
node
// Expr is the condition expression in WhenClause.
Expr ExprNode
// Result is the result expression in WhenClause.
Result ExprNode
}
// Restore implements Node interface.
func (n *WhenClause) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("WHEN ")
if err := n.Expr.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore WhenClauses.Expr")
}
ctx.WriteKeyWord(" THEN ")
if err := n.Result.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore WhenClauses.Result")
}
return nil
}
// Accept implements Node Accept interface.
func (n *WhenClause) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*WhenClause)
node, ok := n.Expr.Accept(v)
if !ok {
return n, false
}
n.Expr = node.(ExprNode)
node, ok = n.Result.Accept(v)
if !ok {
return n, false
}
n.Result = node.(ExprNode)
return v.Leave(n)
}
// CaseExpr is the case expression.
type CaseExpr struct {
exprNode
// Value is the compare value expression.
Value ExprNode
// WhenClauses is the condition check expression.
WhenClauses []*WhenClause
// ElseClause is the else result expression.
ElseClause ExprNode
}
// Restore implements Node interface.
func (n *CaseExpr) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("CASE")
if n.Value != nil {
ctx.WritePlain(" ")
if err := n.Value.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore CaseExpr.Value")
}
}
for _, clause := range n.WhenClauses {
ctx.WritePlain(" ")
if err := clause.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore CaseExpr.WhenClauses")
}
}
if n.ElseClause != nil {
ctx.WriteKeyWord(" ELSE ")
if err := n.ElseClause.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore CaseExpr.ElseClause")
}
}
ctx.WriteKeyWord(" END")
return nil
}
// Format the ExprNode into a Writer.
func (n *CaseExpr) Format(w io.Writer) {
fmt.Fprint(w, "CASE")
// Because the presence of `case when` syntax, `Value` could be nil and we need check this.
if n.Value != nil {
fmt.Fprint(w, " ")
n.Value.Format(w)
}
for _, clause := range n.WhenClauses {
fmt.Fprint(w, " ")
fmt.Fprint(w, "WHEN ")
clause.Expr.Format(w)
fmt.Fprint(w, " THEN ")
clause.Result.Format(w)
}
if n.ElseClause != nil {
fmt.Fprint(w, " ELSE ")
n.ElseClause.Format(w)
}
fmt.Fprint(w, " END")
}
// Accept implements Node Accept interface.
func (n *CaseExpr) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*CaseExpr)
if n.Value != nil {
node, ok := n.Value.Accept(v)
if !ok {
return n, false
}
n.Value = node.(ExprNode)
}
for i, val := range n.WhenClauses {
node, ok := val.Accept(v)
if !ok {
return n, false
}
n.WhenClauses[i] = node.(*WhenClause)
}
if n.ElseClause != nil {
node, ok := n.ElseClause.Accept(v)
if !ok {
return n, false
}
n.ElseClause = node.(ExprNode)
}
return v.Leave(n)
}
// SubqueryExpr represents a subquery.
type SubqueryExpr struct {
exprNode
// Query is the query SelectNode.
Query ResultSetNode
Evaluated bool
Correlated bool
MultiRows bool
Exists bool
}
func (*SubqueryExpr) resultSet() {}
// Restore implements Node interface.
func (n *SubqueryExpr) Restore(ctx *format.RestoreCtx) error {
ctx.WritePlain("(")
if err := n.Query.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore SubqueryExpr.Query")
}
ctx.WritePlain(")")
return nil
}
// Format the ExprNode into a Writer.
func (n *SubqueryExpr) Format(w io.Writer) {
panic("Not implemented")
}
// Accept implements Node Accept interface.
func (n *SubqueryExpr) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*SubqueryExpr)
node, ok := n.Query.Accept(v)
if !ok {
return n, false
}
n.Query = node.(ResultSetNode)
return v.Leave(n)
}
// CompareSubqueryExpr is the expression for "expr cmp (select ...)".
// See https://dev.mysql.com/doc/refman/5.7/en/comparisons-using-subqueries.html
// See https://dev.mysql.com/doc/refman/5.7/en/any-in-some-subqueries.html
// See https://dev.mysql.com/doc/refman/5.7/en/all-subqueries.html
type CompareSubqueryExpr struct {
exprNode
// L is the left expression
L ExprNode
// Op is the comparison opcode.
Op opcode.Op
// R is the subquery for right expression, may be rewritten to other type of expression.
R ExprNode
// All is true, we should compare all records in subquery.
All bool
}
// Restore implements Node interface.
func (n *CompareSubqueryExpr) Restore(ctx *format.RestoreCtx) error {
if err := n.L.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore CompareSubqueryExpr.L")
}
if err := restoreBinaryOpWithSpacesAround(ctx, n.Op); err != nil {
return errors.Annotate(err, "An error occurred while restore CompareSubqueryExpr.Op")
}
if n.All {
ctx.WriteKeyWord("ALL ")
} else {
ctx.WriteKeyWord("ANY ")
}
if err := n.R.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore CompareSubqueryExpr.R")
}
return nil
}
// Format the ExprNode into a Writer.
func (n *CompareSubqueryExpr) Format(w io.Writer) {
panic("Not implemented")
}
// Accept implements Node Accept interface.
func (n *CompareSubqueryExpr) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*CompareSubqueryExpr)
node, ok := n.L.Accept(v)
if !ok {
return n, false
}
n.L = node.(ExprNode)
node, ok = n.R.Accept(v)
if !ok {
return n, false
}
n.R = node.(ExprNode)
return v.Leave(n)
}
// TableNameExpr represents a table-level object name expression, such as sequence/table/view etc.
type TableNameExpr struct {
exprNode
// Name is the referenced object name expression.
Name *TableName
}
// Restore implements Node interface.
func (n *TableNameExpr) Restore(ctx *format.RestoreCtx) error {
if err := n.Name.Restore(ctx); err != nil {
return errors.Trace(err)
}
return nil
}
// Format the ExprNode into a Writer.
func (n *TableNameExpr) Format(w io.Writer) {
dbName, tbName := n.Name.Schema.L, n.Name.Name.L
if dbName == "" {
fmt.Fprintf(w, "`%s`", tbName)
} else {
fmt.Fprintf(w, "`%s`.`%s`", dbName, tbName)
}
}
// Accept implements Node Accept interface.
func (n *TableNameExpr) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*TableNameExpr)
node, ok := n.Name.Accept(v)
if !ok {
return n, false
}
n.Name = node.(*TableName)
return v.Leave(n)
}
// ColumnName represents column name.
type ColumnName struct {
node
Schema CIStr
Table CIStr
Name CIStr
}
// Restore implements Node interface.
func (n *ColumnName) Restore(ctx *format.RestoreCtx) error {
if n.Schema.O != "" && !ctx.IsCTETableName(n.Table.L) && !ctx.Flags.HasWithoutSchemaNameFlag() {
ctx.WriteName(n.Schema.O)
ctx.WritePlain(".")
}
if n.Table.O != "" && !ctx.Flags.HasWithoutTableNameFlag() {
ctx.WriteName(n.Table.O)
ctx.WritePlain(".")
}
ctx.WriteName(n.Name.O)
return nil
}
// Accept implements Node Accept interface.
func (n *ColumnName) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*ColumnName)
return v.Leave(n)
}
// String implements Stringer interface.
func (n *ColumnName) String() string {
result := n.Name.L
if n.Table.L != "" {
result = n.Table.L + "." + result
}
if n.Schema.L != "" {
result = n.Schema.L + "." + result
}
return result
}
// OrigColName returns the full original column name.
func (n *ColumnName) OrigColName() (ret string) {
ret = n.Name.O
if n.Table.O == "" {
return
}
ret = n.Table.O + "." + ret
if n.Schema.O == "" {
return
}
ret = n.Schema.O + "." + ret
return
}
// Match means that if a match b, e.g. t.a can match test.t.a but test.t.a can't match t.a.
// Because column a want column from database test exactly.
func (n *ColumnName) Match(b *ColumnName) bool {
if n.Schema.L == "" || n.Schema.L == b.Schema.L {
if n.Table.L == "" || n.Table.L == b.Table.L {
return n.Name.L == b.Name.L
}
}
return false
}
// ColumnNameExpr represents a column name expression.
type ColumnNameExpr struct {
exprNode
// Name is the referenced column name.
Name *ColumnName
}
// Restore implements Node interface.
func (n *ColumnNameExpr) Restore(ctx *format.RestoreCtx) error {
if err := n.Name.Restore(ctx); err != nil {
return errors.Trace(err)
}
return nil
}
// Format the ExprNode into a Writer.
func (n *ColumnNameExpr) Format(w io.Writer) {
name := strings.ReplaceAll(n.Name.String(), ".", "`.`")
fmt.Fprintf(w, "`%s`", name)
}
// Accept implements Node Accept interface.
func (n *ColumnNameExpr) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*ColumnNameExpr)
node, ok := n.Name.Accept(v)
if !ok {
return n, false
}
n.Name = node.(*ColumnName)
return v.Leave(n)
}
// DefaultExpr is the default expression using default value for a column.
type DefaultExpr struct {
exprNode
// Name is the column name.
Name *ColumnName
}
// Restore implements Node interface.
func (n *DefaultExpr) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("DEFAULT")
if n.Name != nil {
ctx.WritePlain("(")
if err := n.Name.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore DefaultExpr.Name")
}
ctx.WritePlain(")")
}
return nil
}
// Format the ExprNode into a Writer.
func (n *DefaultExpr) Format(w io.Writer) {
fmt.Fprint(w, "DEFAULT")
if n.Name != nil {
panic("Not implemented")
}
}
// Accept implements Node Accept interface.
func (n *DefaultExpr) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*DefaultExpr)
return v.Leave(n)
}
// ExistsSubqueryExpr is the expression for "exists (select ...)".
// See https://dev.mysql.com/doc/refman/5.7/en/exists-and-not-exists-subqueries.html
type ExistsSubqueryExpr struct {
exprNode
// Sel is the subquery, may be rewritten to other type of expression.
Sel ExprNode
// Not is true, the expression is "not exists".
Not bool
}
// Restore implements Node interface.
func (n *ExistsSubqueryExpr) Restore(ctx *format.RestoreCtx) error {
if n.Not {
ctx.WriteKeyWord("NOT EXISTS ")
} else {
ctx.WriteKeyWord("EXISTS ")
}
if err := n.Sel.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore ExistsSubqueryExpr.Sel")
}
return nil
}
// Format the ExprNode into a Writer.
func (n *ExistsSubqueryExpr) Format(w io.Writer) {
panic("Not implemented")
}
// Accept implements Node Accept interface.
func (n *ExistsSubqueryExpr) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*ExistsSubqueryExpr)
node, ok := n.Sel.Accept(v)
if !ok {
return n, false
}
n.Sel = node.(ExprNode)
return v.Leave(n)
}
// PatternInExpr is the expression for in operator, like "expr in (1, 2, 3)" or "expr in (select c from t)".
type PatternInExpr struct {
exprNode
// Expr is the value expression to be compared.
Expr ExprNode
// List is the list expression in compare list.
List []ExprNode
// Not is true, the expression is "not in".
Not bool
// Sel is the subquery, may be rewritten to other type of expression.
Sel ExprNode
}
// Restore implements Node interface.
func (n *PatternInExpr) Restore(ctx *format.RestoreCtx) error {
if err := n.Expr.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore PatternInExpr.Expr")
}
if n.Not {
ctx.WriteKeyWord(" NOT IN ")
} else {
ctx.WriteKeyWord(" IN ")
}
if n.Sel != nil {
if err := n.Sel.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore PatternInExpr.Sel")
}
} else {
ctx.WritePlain("(")
for i, expr := range n.List {
if i != 0 {
ctx.WritePlain(",")
}
if err := expr.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore PatternInExpr.List[%d]", i)
}
}
ctx.WritePlain(")")
}
return nil
}
// Format the ExprNode into a Writer.
func (n *PatternInExpr) Format(w io.Writer) {
n.Expr.Format(w)
if n.Not {
fmt.Fprint(w, " NOT IN (")
} else {
fmt.Fprint(w, " IN (")
}
for i, expr := range n.List {
if i != 0 {
fmt.Fprint(w, ",")
}
expr.Format(w)
}
fmt.Fprint(w, ")")
}
// Accept implements Node Accept interface.
func (n *PatternInExpr) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*PatternInExpr)
node, ok := n.Expr.Accept(v)
if !ok {
return n, false
}
n.Expr = node.(ExprNode)
for i, val := range n.List {
node, ok = val.Accept(v)
if !ok {
return n, false
}
n.List[i] = node.(ExprNode)
}
if n.Sel != nil {
node, ok = n.Sel.Accept(v)
if !ok {
return n, false
}
n.Sel = node.(ExprNode)
}
return v.Leave(n)
}
// IsNullExpr is the expression for null check.
type IsNullExpr struct {
exprNode
// Expr is the expression to be checked.
Expr ExprNode
// Not is true, the expression is "is not null".
Not bool
}
// Restore implements Node interface.
func (n *IsNullExpr) Restore(ctx *format.RestoreCtx) error {
if err := n.Expr.Restore(ctx); err != nil {
return errors.Trace(err)
}
if n.Not {
ctx.WriteKeyWord(" IS NOT NULL")
} else {
ctx.WriteKeyWord(" IS NULL")
}
return nil
}
// Format the ExprNode into a Writer.
func (n *IsNullExpr) Format(w io.Writer) {
n.Expr.Format(w)
if n.Not {
fmt.Fprint(w, " IS NOT NULL")
return
}
fmt.Fprint(w, " IS NULL")
}
// Accept implements Node Accept interface.
func (n *IsNullExpr) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*IsNullExpr)
node, ok := n.Expr.Accept(v)
if !ok {
return n, false
}
n.Expr = node.(ExprNode)
return v.Leave(n)
}
// IsTruthExpr is the expression for true/false check.
type IsTruthExpr struct {
exprNode
// Expr is the expression to be checked.
Expr ExprNode
// Not is true, the expression is "is not true/false".
Not bool
// True indicates checking true or false.
True int64
}
// Restore implements Node interface.
func (n *IsTruthExpr) Restore(ctx *format.RestoreCtx) error {
if err := n.Expr.Restore(ctx); err != nil {
return errors.Trace(err)
}
if n.Not {
ctx.WriteKeyWord(" IS NOT")
} else {
ctx.WriteKeyWord(" IS")
}
if n.True > 0 {
ctx.WriteKeyWord(" TRUE")
} else {
ctx.WriteKeyWord(" FALSE")
}
return nil
}
// Format the ExprNode into a Writer.
func (n *IsTruthExpr) Format(w io.Writer) {
n.Expr.Format(w)
if n.Not {
fmt.Fprint(w, " IS NOT")
} else {
fmt.Fprint(w, " IS")
}
if n.True > 0 {
fmt.Fprint(w, " TRUE")
} else {
fmt.Fprint(w, " FALSE")
}
}
// Accept implements Node Accept interface.
func (n *IsTruthExpr) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*IsTruthExpr)
node, ok := n.Expr.Accept(v)
if !ok {
return n, false
}
n.Expr = node.(ExprNode)
return v.Leave(n)
}
// PatternLikeOrIlikeExpr is the expression for like operator, e.g, expr like "%123%"
type PatternLikeOrIlikeExpr struct {
exprNode
// Expr is the expression to be checked.
Expr ExprNode
// Pattern is the like expression.
Pattern ExprNode
// Not is true, the expression is "not like".
Not bool
IsLike bool
Escape byte
PatChars []byte
PatTypes []byte
}
// Restore implements Node interface.
func (n *PatternLikeOrIlikeExpr) Restore(ctx *format.RestoreCtx) error {
if err := n.Expr.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore PatternLikeOrIlikeExpr.Expr")
}
if n.IsLike {
if n.Not {
ctx.WriteKeyWord(" NOT LIKE ")
} else {
ctx.WriteKeyWord(" LIKE ")
}
} else {
if n.Not {
ctx.WriteKeyWord(" NOT ILIKE ")
} else {
ctx.WriteKeyWord(" ILIKE ")
}
}
if err := n.Pattern.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore PatternLikeOrIlikeExpr.Pattern")
}
escape := string(n.Escape)
if escape != "\\" {
ctx.WriteKeyWord(" ESCAPE ")
ctx.WriteString(escape)
}
return nil
}
// Format the ExprNode into a Writer.
func (n *PatternLikeOrIlikeExpr) Format(w io.Writer) {
n.Expr.Format(w)
if n.IsLike {
if n.Not {
fmt.Fprint(w, " NOT LIKE ")
} else {
fmt.Fprint(w, " LIKE ")
}
} else {
if n.Not {
fmt.Fprint(w, " NOT ILIKE ")
} else {
fmt.Fprint(w, " ILIKE ")
}
}
n.Pattern.Format(w)
if n.Escape != '\\' {
fmt.Fprint(w, " ESCAPE ")
fmt.Fprintf(w, "'%c'", n.Escape)
}
}
// Accept implements Node Accept interface.
func (n *PatternLikeOrIlikeExpr) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*PatternLikeOrIlikeExpr)
if n.Expr != nil {
node, ok := n.Expr.Accept(v)
if !ok {
return n, false
}
n.Expr = node.(ExprNode)
}
if n.Pattern != nil {
node, ok := n.Pattern.Accept(v)
if !ok {
return n, false
}
n.Pattern = node.(ExprNode)
}
return v.Leave(n)
}
// ParamMarkerExpr expression holds a place for another expression.
// Used in parsing prepare statement.
type ParamMarkerExpr interface {
ValueExpr
SetOrder(int)
}
// ParenthesesExpr is the parentheses' expression.
type ParenthesesExpr struct {
exprNode
// Expr is the expression in parentheses.
Expr ExprNode
}
// Restore implements Node interface.
func (n *ParenthesesExpr) Restore(ctx *format.RestoreCtx) error {
ctx.WritePlain("(")
if err := n.Expr.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred when restore ParenthesesExpr.Expr")
}
ctx.WritePlain(")")
return nil
}
// Format the ExprNode into a Writer.
func (n *ParenthesesExpr) Format(w io.Writer) {
fmt.Fprint(w, "(")
n.Expr.Format(w)
fmt.Fprint(w, ")")
}
// Accept implements Node Accept interface.
func (n *ParenthesesExpr) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*ParenthesesExpr)
if n.Expr != nil {
node, ok := n.Expr.Accept(v)
if !ok {
return n, false
}
n.Expr = node.(ExprNode)
}
return v.Leave(n)
}
// PositionExpr is the expression for order by and group by position.
// MySQL use position expression started from 1, it looks a little confused inner.
// maybe later we will use 0 at first.
type PositionExpr struct {
exprNode
// N is the position, started from 1 now.
N int
// P is the parameterized position.
P ExprNode
}
// Restore implements Node interface.
func (n *PositionExpr) Restore(ctx *format.RestoreCtx) error {
ctx.WritePlainf("%d", n.N)
return nil
}
// Format the ExprNode into a Writer.
func (n *PositionExpr) Format(w io.Writer) {
panic("Not implemented")
}
// Accept implements Node Accept interface.
func (n *PositionExpr) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*PositionExpr)
if n.P != nil {
node, ok := n.P.Accept(v)
if !ok {
return n, false
}
n.P = node.(ExprNode)
}
return v.Leave(n)
}
// PatternRegexpExpr is the pattern expression for pattern match.
type PatternRegexpExpr struct {
exprNode
// Expr is the expression to be checked.
Expr ExprNode
// Pattern is the expression for pattern.
Pattern ExprNode
// Not is true, the expression is "not rlike",
Not bool
// Re is the compiled regexp.
Re *regexp.Regexp
// Sexpr is the string for Expr expression.
Sexpr *string
}
// Restore implements Node interface.
func (n *PatternRegexpExpr) Restore(ctx *format.RestoreCtx) error {
if err := n.Expr.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore PatternRegexpExpr.Expr")
}
if n.Not {
ctx.WriteKeyWord(" NOT REGEXP ")
} else {
ctx.WriteKeyWord(" REGEXP ")
}
if err := n.Pattern.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore PatternRegexpExpr.Pattern")
}
return nil
}
// Format the ExprNode into a Writer.
func (n *PatternRegexpExpr) Format(w io.Writer) {
n.Expr.Format(w)
if n.Not {
fmt.Fprint(w, " NOT REGEXP ")
} else {
fmt.Fprint(w, " REGEXP ")
}
n.Pattern.Format(w)
}
// Accept implements Node Accept interface.
func (n *PatternRegexpExpr) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*PatternRegexpExpr)
node, ok := n.Expr.Accept(v)
if !ok {
return n, false
}
n.Expr = node.(ExprNode)
node, ok = n.Pattern.Accept(v)
if !ok {
return n, false
}
n.Pattern = node.(ExprNode)
return v.Leave(n)
}
// RowExpr is the expression for row constructor.
// See https://dev.mysql.com/doc/refman/5.7/en/row-subqueries.html
type RowExpr struct {
exprNode
Values []ExprNode
}
// Restore implements Node interface.
func (n *RowExpr) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("ROW")
ctx.WritePlain("(")
for i, v := range n.Values {
if i != 0 {
ctx.WritePlain(",")
}
if err := v.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred when restore RowExpr.Values[%v]", i)
}
}
ctx.WritePlain(")")
return nil
}
// Format the ExprNode into a Writer.
func (n *RowExpr) Format(w io.Writer) {
panic("Not implemented")
}
// Accept implements Node Accept interface.
func (n *RowExpr) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*RowExpr)
for i, val := range n.Values {
node, ok := val.Accept(v)
if !ok {
return n, false
}
n.Values[i] = node.(ExprNode)
}
return v.Leave(n)
}
// UnaryOperationExpr is the expression for unary operator.
type UnaryOperationExpr struct {
exprNode
// Op is the operator opcode.
Op opcode.Op
// V is the unary expression.
V ExprNode
}
// Restore implements Node interface.
func (n *UnaryOperationExpr) Restore(ctx *format.RestoreCtx) error {
if err := n.Op.Restore(ctx); err != nil {
return errors.Trace(err)
}
if err := n.V.Restore(ctx); err != nil {
return errors.Trace(err)
}
return nil
}
// Format the ExprNode into a Writer.
func (n *UnaryOperationExpr) Format(w io.Writer) {
n.Op.Format(w)
n.V.Format(w)
}
// Accept implements Node Accept interface.
func (n *UnaryOperationExpr) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*UnaryOperationExpr)
node, ok := n.V.Accept(v)
if !ok {
return n, false
}
n.V = node.(ExprNode)
return v.Leave(n)
}
// ValuesExpr is the expression used in INSERT VALUES.
type ValuesExpr struct {
exprNode
// Column is column name.
Column *ColumnNameExpr
}
// Restore implements Node interface.
func (n *ValuesExpr) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("VALUES")
ctx.WritePlain("(")
if err := n.Column.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore ValuesExpr.Column")
}
ctx.WritePlain(")")
return nil
}
// Format the ExprNode into a Writer.
func (n *ValuesExpr) Format(w io.Writer) {
panic("Not implemented")
}
// Accept implements Node Accept interface.
func (n *ValuesExpr) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*ValuesExpr)
node, ok := n.Column.Accept(v)
if !ok {
return n, false
}
// `node` may be *ast.ValueExpr, to avoid panic, we write `_` and do not use
// it.
n.Column, _ = node.(*ColumnNameExpr)
return v.Leave(n)
}
// VariableExpr is the expression for variable.
type VariableExpr struct {
exprNode
// Name is the variable name.
Name string
// IsGlobal indicates whether this variable is global.
IsGlobal bool
// IsInstance indicates whether this variable is instance.
IsInstance bool
// IsSystem indicates whether this variable is a system variable in current session.
IsSystem bool
// ExplicitScope indicates whether this variable scope is set explicitly.
ExplicitScope bool
// Value is the variable value.
Value ExprNode
}
// Restore implements Node interface.
func (n *VariableExpr) Restore(ctx *format.RestoreCtx) error {
if n.IsSystem {
ctx.WritePlain("@@")
if n.ExplicitScope {
if n.IsGlobal {
ctx.WriteKeyWord("GLOBAL")
} else if n.IsInstance {
ctx.WriteKeyWord("INSTANCE")
} else {
ctx.WriteKeyWord("SESSION")
}
ctx.WritePlain(".")
}
} else {
ctx.WritePlain("@")
}
ctx.WriteName(n.Name)
if n.Value != nil {
ctx.WritePlain(":=")
if err := n.Value.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore VariableExpr.Value")
}
}
return nil
}
// Format the ExprNode into a Writer.
func (n *VariableExpr) Format(w io.Writer) {
panic("Not implemented")
}
// Accept implements Node Accept interface.
func (n *VariableExpr) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*VariableExpr)
if n.Value == nil {
return v.Leave(n)
}
node, ok := n.Value.Accept(v)
if !ok {
return n, false
}
n.Value = node.(ExprNode)
return v.Leave(n)
}
// MaxValueExpr is the expression for "maxvalue" used in partition.
type MaxValueExpr struct {
exprNode
}
// Restore implements Node interface.
func (n *MaxValueExpr) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("MAXVALUE")
return nil
}
// Format the ExprNode into a Writer.
func (n *MaxValueExpr) Format(w io.Writer) {
fmt.Fprint(w, "MAXVALUE")
}
// Accept implements Node Accept interface.
func (n *MaxValueExpr) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
return v.Leave(n)
}
// MatchAgainst is the expression for matching against fulltext index.
type MatchAgainst struct {
exprNode
// ColumnNames are the columns to match.
ColumnNames []*ColumnName
// Against
Against ExprNode
// Modifier
Modifier FulltextSearchModifier
}
func (n *MatchAgainst) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("MATCH")
ctx.WritePlain(" (")
for i, v := range n.ColumnNames {
if i != 0 {
ctx.WritePlain(",")
}
if err := v.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore MatchAgainst.ColumnNames[%d]", i)
}
}
ctx.WritePlain(") ")
ctx.WriteKeyWord("AGAINST")
ctx.WritePlain(" (")
if err := n.Against.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore MatchAgainst.Against")
}
if n.Modifier.IsBooleanMode() {
ctx.WritePlain(" IN BOOLEAN MODE")
if n.Modifier.WithQueryExpansion() {
return errors.New("BOOLEAN MODE doesn't support QUERY EXPANSION")
}
} else if n.Modifier.WithQueryExpansion() {
ctx.WritePlain(" WITH QUERY EXPANSION")
}
ctx.WritePlain(")")
return nil
}
func (n *MatchAgainst) Format(w io.Writer) {
fmt.Fprint(w, "MATCH(")
for i, v := range n.ColumnNames {
if i != 0 {
fmt.Fprintf(w, ",%s", v.String())
} else {
fmt.Fprint(w, v.String())
}
}
fmt.Fprint(w, ") AGAINST(")
n.Against.Format(w)
if n.Modifier.IsBooleanMode() {
fmt.Fprint(w, " IN BOOLEAN MODE")
} else if n.Modifier.WithQueryExpansion() {
fmt.Fprint(w, " WITH QUERY EXPANSION")
}
fmt.Fprint(w, ")")
}
func (n *MatchAgainst) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*MatchAgainst)
for i, colName := range n.ColumnNames {
newColName, ok := colName.Accept(v)
if !ok {
return n, false
}
n.ColumnNames[i] = newColName.(*ColumnName)
}
newAgainst, ok := n.Against.Accept(v)
if !ok {
return n, false
}
n.Against = newAgainst.(ExprNode)
return v.Leave(n)
}
// SetCollationExpr is the expression for the `COLLATE collation_name` clause.
type SetCollationExpr struct {
exprNode
// Expr is the expression to be set.
Expr ExprNode
// Collate is the name of collation to set.
Collate string
}
// Restore implements Node interface.
func (n *SetCollationExpr) Restore(ctx *format.RestoreCtx) error {
if err := n.Expr.Restore(ctx); err != nil {
return errors.Trace(err)
}
ctx.WriteKeyWord(" COLLATE ")
ctx.WritePlain(n.Collate)
return nil
}
// Format the ExprNode into a Writer.
func (n *SetCollationExpr) Format(w io.Writer) {
n.Expr.Format(w)
fmt.Fprintf(w, " COLLATE %s", n.Collate)
}
// Accept implements Node Accept interface.
func (n *SetCollationExpr) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*SetCollationExpr)
node, ok := n.Expr.Accept(v)
if !ok {
return n, false
}
n.Expr = node.(ExprNode)
return v.Leave(n)
}
type exprCleaner struct {
// for Text Position clean.
oldTextPos []int
restore bool
// for Name.O clean, ast.FuncCallExpr should be case-insensitive.
oldOriginFuncName []string
}
func (e *exprCleaner) BeginRestore() {
e.restore = true
}
func (e *exprCleaner) Enter(n Node) (node Node, skipChildren bool) {
if e.restore {
n.SetOriginTextPosition(e.oldTextPos[0])
e.oldTextPos = e.oldTextPos[1:]
if f, ok := n.(*FuncCallExpr); ok {
f.FnName.O = e.oldOriginFuncName[0]
e.oldOriginFuncName = e.oldOriginFuncName[1:]
}
return n, false
}
e.oldTextPos = append(e.oldTextPos, n.OriginTextPosition())
n.SetOriginTextPosition(0)
if f, ok := n.(*FuncCallExpr); ok {
e.oldOriginFuncName = append(e.oldOriginFuncName, f.FnName.O)
f.FnName.O = f.FnName.L
}
return n, false
}
func (e *exprCleaner) Leave(n Node) (node Node, ok bool) {
return n, true
}
// ExpressionDeepEqual compares the equivalence of two expressions.
func ExpressionDeepEqual(a ExprNode, b ExprNode) bool {
cleanerA := &exprCleaner{}
cleanerB := &exprCleaner{}
a.Accept(cleanerA)
b.Accept(cleanerB)
result := reflect.DeepEqual(a, b)
cleanerA.BeginRestore()
cleanerB.BeginRestore()
a.Accept(cleanerA)
b.Accept(cleanerB)
return result
}
// Copyright 2015 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// See the License for the specific language governing permissions and
// limitations under the License.
package ast
// HasAggFlag checks if the expr contains FlagHasAggregateFunc.
func HasAggFlag(expr ExprNode) bool {
return expr.GetFlag()&FlagHasAggregateFunc > 0
}
func HasWindowFlag(expr ExprNode) bool {
return expr.GetFlag()&FlagHasWindowFunc > 0
}
// SetFlag sets flag for expression.
func SetFlag(n Node) {
var setter flagSetter
n.Accept(&setter)
}
type flagSetter struct {
}
func (f *flagSetter) Enter(in Node) (Node, bool) {
return in, false
}
func (f *flagSetter) Leave(in Node) (Node, bool) {
if x, ok := in.(ParamMarkerExpr); ok {
x.SetFlag(FlagHasParamMarker)
}
switch x := in.(type) {
case *AggregateFuncExpr:
f.aggregateFunc(x)
case *WindowFuncExpr:
f.windowFunc(x)
case *BetweenExpr:
x.SetFlag(x.Expr.GetFlag() | x.Left.GetFlag() | x.Right.GetFlag())
case *BinaryOperationExpr:
x.SetFlag(x.L.GetFlag() | x.R.GetFlag())
case *CaseExpr:
f.caseExpr(x)
case *ColumnNameExpr:
x.SetFlag(FlagHasReference)
case *CompareSubqueryExpr:
x.SetFlag(x.L.GetFlag() | x.R.GetFlag())
case *DefaultExpr:
x.SetFlag(FlagHasDefault)
case *ExistsSubqueryExpr:
x.SetFlag(x.Sel.GetFlag())
case *FuncCallExpr:
f.funcCall(x)
case *FuncCastExpr:
x.SetFlag(FlagHasFunc | x.Expr.GetFlag())
case *IsNullExpr:
x.SetFlag(x.Expr.GetFlag())
case *IsTruthExpr:
x.SetFlag(x.Expr.GetFlag())
case *ParenthesesExpr:
x.SetFlag(x.Expr.GetFlag())
case *PatternInExpr:
f.patternIn(x)
case *PatternLikeOrIlikeExpr:
f.patternLike(x)
case *PatternRegexpExpr:
f.patternRegexp(x)
case *PositionExpr:
x.SetFlag(FlagHasReference)
case *RowExpr:
f.row(x)
case *SubqueryExpr:
x.SetFlag(FlagHasSubquery)
case *UnaryOperationExpr:
x.SetFlag(x.V.GetFlag())
case *ValuesExpr:
x.SetFlag(FlagHasReference)
case *VariableExpr:
if x.Value == nil {
x.SetFlag(FlagHasVariable)
} else {
x.SetFlag(FlagHasVariable | x.Value.GetFlag())
}
}
return in, true
}
func (f *flagSetter) caseExpr(x *CaseExpr) {
var flag uint64
if x.Value != nil {
flag |= x.Value.GetFlag()
}
for _, val := range x.WhenClauses {
flag |= val.Expr.GetFlag()
flag |= val.Result.GetFlag()
}
if x.ElseClause != nil {
flag |= x.ElseClause.GetFlag()
}
x.SetFlag(flag)
}
func (f *flagSetter) patternIn(x *PatternInExpr) {
flag := x.Expr.GetFlag()
for _, val := range x.List {
flag |= val.GetFlag()
}
if x.Sel != nil {
flag |= x.Sel.GetFlag()
}
x.SetFlag(flag)
}
func (f *flagSetter) patternLike(x *PatternLikeOrIlikeExpr) {
flag := x.Pattern.GetFlag()
if x.Expr != nil {
flag |= x.Expr.GetFlag()
}
x.SetFlag(flag)
}
func (f *flagSetter) patternRegexp(x *PatternRegexpExpr) {
flag := x.Pattern.GetFlag()
if x.Expr != nil {
flag |= x.Expr.GetFlag()
}
x.SetFlag(flag)
}
func (f *flagSetter) row(x *RowExpr) {
var flag uint64
for _, val := range x.Values {
flag |= val.GetFlag()
}
x.SetFlag(flag)
}
func (f *flagSetter) funcCall(x *FuncCallExpr) {
flag := FlagHasFunc
for _, val := range x.Args {
flag |= val.GetFlag()
}
x.SetFlag(flag)
}
func (f *flagSetter) aggregateFunc(x *AggregateFuncExpr) {
flag := FlagHasAggregateFunc
for _, val := range x.Args {
flag |= val.GetFlag()
}
x.SetFlag(flag)
}
func (f *flagSetter) windowFunc(x *WindowFuncExpr) {
flag := FlagHasWindowFunc
for _, val := range x.Args {
flag |= val.GetFlag()
}
x.SetFlag(flag)
}
// Copyright 2015 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// See the License for the specific language governing permissions and
// limitations under the License.
package ast
import (
"fmt"
"io"
"strings"
"time"
"github.com/pingcap/errors"
"github.com/pingcap/tidb/pkg/parser/format"
"github.com/pingcap/tidb/pkg/parser/types"
)
var (
_ FuncNode = &AggregateFuncExpr{}
_ FuncNode = &FuncCallExpr{}
_ FuncNode = &FuncCastExpr{}
_ FuncNode = &WindowFuncExpr{}
)
// List scalar function names.
const (
LogicAnd = "and"
Cast = "cast"
LeftShift = "leftshift"
RightShift = "rightshift"
LogicOr = "or"
GE = "ge"
LE = "le"
EQ = "eq"
NE = "ne"
LT = "lt"
GT = "gt"
Plus = "plus"
Minus = "minus"
And = "bitand"
Or = "bitor"
Mod = "mod"
Xor = "bitxor"
Div = "div"
Mul = "mul"
UnaryNot = "not" // Avoid name conflict with Not in github/pingcap/check.
BitNeg = "bitneg"
IntDiv = "intdiv"
LogicXor = "xor"
NullEQ = "nulleq"
UnaryPlus = "unaryplus"
UnaryMinus = "unaryminus"
In = "in"
Like = "like"
Ilike = "ilike"
Case = "case"
Regexp = "regexp"
RegexpLike = "regexp_like"
RegexpSubstr = "regexp_substr"
RegexpInStr = "regexp_instr"
RegexpReplace = "regexp_replace"
IsNull = "isnull"
IsTruthWithoutNull = "istrue" // Avoid name conflict with IsTrue in github/pingcap/check.
IsTruthWithNull = "istrue_with_null"
IsFalsity = "isfalse" // Avoid name conflict with IsFalse in github/pingcap/check.
RowFunc = "row"
SetVar = "setvar"
GetVar = "getvar"
Values = "values"
BitCount = "bit_count"
GetParam = "getparam"
// common functions
Coalesce = "coalesce"
Greatest = "greatest"
Least = "least"
Interval = "interval"
// math functions
Abs = "abs"
Acos = "acos"
Asin = "asin"
Atan = "atan"
Atan2 = "atan2"
Ceil = "ceil"
Ceiling = "ceiling"
Conv = "conv"
Cos = "cos"
Cot = "cot"
CRC32 = "crc32"
Degrees = "degrees"
Exp = "exp"
Floor = "floor"
Ln = "ln"
Log = "log"
Log2 = "log2"
Log10 = "log10"
PI = "pi"
Pow = "pow"
Power = "power"
Radians = "radians"
Rand = "rand"
Round = "round"
Sign = "sign"
Sin = "sin"
Sqrt = "sqrt"
Tan = "tan"
Truncate = "truncate"
// time functions
AddDate = "adddate"
AddTime = "addtime"
ConvertTz = "convert_tz"
Curdate = "curdate"
CurrentDate = "current_date"
CurrentTime = "current_time"
CurrentTimestamp = "current_timestamp"
Curtime = "curtime"
Date = "date"
DateLiteral = "'tidb`.(dateliteral"
DateAdd = "date_add"
DateFormat = "date_format"
DateSub = "date_sub"
DateDiff = "datediff"
Day = "day"
DayName = "dayname"
DayOfMonth = "dayofmonth"
DayOfWeek = "dayofweek"
DayOfYear = "dayofyear"
Extract = "extract"
FromDays = "from_days"
FromUnixTime = "from_unixtime"
GetFormat = "get_format"
Hour = "hour"
LocalTime = "localtime"
LocalTimestamp = "localtimestamp"
MakeDate = "makedate"
MakeTime = "maketime"
MicroSecond = "microsecond"
Minute = "minute"
Month = "month"
MonthName = "monthname"
Now = "now"
PeriodAdd = "period_add"
PeriodDiff = "period_diff"
Quarter = "quarter"
SecToTime = "sec_to_time"
Second = "second"
StrToDate = "str_to_date"
SubDate = "subdate"
SubTime = "subtime"
Sysdate = "sysdate"
Time = "time"
TimeLiteral = "'tidb`.(timeliteral"
TimeFormat = "time_format"
TimeToSec = "time_to_sec"
TimeDiff = "timediff"
Timestamp = "timestamp"
TimestampLiteral = "'tidb`.(timestampliteral"
TimestampAdd = "timestampadd"
TimestampDiff = "timestampdiff"
ToDays = "to_days"
ToSeconds = "to_seconds"
UnixTimestamp = "unix_timestamp"
UTCDate = "utc_date"
UTCTime = "utc_time"
UTCTimestamp = "utc_timestamp"
Week = "week"
Weekday = "weekday"
WeekOfYear = "weekofyear"
Year = "year"
YearWeek = "yearweek"
LastDay = "last_day"
// TSO functions
// TiDBBoundedStaleness is used to determine the TS for a read only request with the given bounded staleness.
// It will be used in the Stale Read feature.
// For more info, please see AsOfClause.
TiDBBoundedStaleness = "tidb_bounded_staleness"
TiDBParseTso = "tidb_parse_tso"
TiDBParseTsoLogical = "tidb_parse_tso_logical"
TiDBCurrentTso = "tidb_current_tso"
// string functions
ASCII = "ascii"
Bin = "bin"
Concat = "concat"
ConcatWS = "concat_ws"
Convert = "convert"
Elt = "elt"
ExportSet = "export_set"
Field = "field"
Format = "format"
FromBase64 = "from_base64"
InsertFunc = "insert_func"
Instr = "instr"
Lcase = "lcase"
Left = "left"
Length = "length"
LoadFile = "load_file"
Locate = "locate"
Lower = "lower"
Lpad = "lpad"
LTrim = "ltrim"
MakeSet = "make_set"
Mid = "mid"
Oct = "oct"
OctetLength = "octet_length"
Ord = "ord"
Position = "position"
Quote = "quote"
Repeat = "repeat"
Replace = "replace"
Reverse = "reverse"
Right = "right"
RTrim = "rtrim"
Space = "space"
Strcmp = "strcmp"
Substring = "substring"
Substr = "substr"
SubstringIndex = "substring_index"
ToBase64 = "to_base64"
Trim = "trim"
Translate = "translate"
Upper = "upper"
Ucase = "ucase"
Hex = "hex"
Unhex = "unhex"
Rpad = "rpad"
BitLength = "bit_length"
CharFunc = "char_func"
CharLength = "char_length"
CharacterLength = "character_length"
FindInSet = "find_in_set"
WeightString = "weight_string"
Soundex = "soundex"
// information functions
Benchmark = "benchmark"
Charset = "charset"
Coercibility = "coercibility"
Collation = "collation"
ConnectionID = "connection_id"
CurrentUser = "current_user"
CurrentRole = "current_role"
Database = "database"
FoundRows = "found_rows"
LastInsertId = "last_insert_id"
RowCount = "row_count"
Schema = "schema"
SessionUser = "session_user"
SystemUser = "system_user"
User = "user"
Version = "version"
TiDBVersion = "tidb_version"
TiDBIsDDLOwner = "tidb_is_ddl_owner"
TiDBDecodePlan = "tidb_decode_plan"
TiDBDecodeBinaryPlan = "tidb_decode_binary_plan"
TiDBDecodeSQLDigests = "tidb_decode_sql_digests"
TiDBEncodeSQLDigest = "tidb_encode_sql_digest"
FormatBytes = "format_bytes"
FormatNanoTime = "format_nano_time"
CurrentResourceGroup = "current_resource_group"
// control functions
If = "if"
Ifnull = "ifnull"
Nullif = "nullif"
// miscellaneous functions
AnyValue = "any_value"
DefaultFunc = "default_func"
InetAton = "inet_aton"
InetNtoa = "inet_ntoa"
Inet6Aton = "inet6_aton"
Inet6Ntoa = "inet6_ntoa"
IsFreeLock = "is_free_lock"
IsIPv4 = "is_ipv4"
IsIPv4Compat = "is_ipv4_compat"
IsIPv4Mapped = "is_ipv4_mapped"
IsIPv6 = "is_ipv6"
IsUsedLock = "is_used_lock"
IsUUID = "is_uuid"
NameConst = "name_const"
ReleaseAllLocks = "release_all_locks"
Sleep = "sleep"
UUID = "uuid"
UUIDShort = "uuid_short"
UUIDToBin = "uuid_to_bin"
BinToUUID = "bin_to_uuid"
VitessHash = "vitess_hash"
TiDBShard = "tidb_shard"
TiDBRowChecksum = "tidb_row_checksum"
GetLock = "get_lock"
ReleaseLock = "release_lock"
Grouping = "grouping"
// encryption and compression functions
AesDecrypt = "aes_decrypt"
AesEncrypt = "aes_encrypt"
Compress = "compress"
Decode = "decode"
Encode = "encode"
MD5 = "md5"
PasswordFunc = "password"
RandomBytes = "random_bytes"
SHA1 = "sha1"
SHA = "sha"
SHA2 = "sha2"
SM3 = "sm3"
Uncompress = "uncompress"
UncompressedLength = "uncompressed_length"
ValidatePasswordStrength = "validate_password_strength"
// json functions
JSONType = "json_type"
JSONExtract = "json_extract"
JSONUnquote = "json_unquote"
JSONArray = "json_array"
JSONObject = "json_object"
JSONMerge = "json_merge"
JSONSet = "json_set"
JSONSumCrc32 = "json_sum_crc32"
JSONInsert = "json_insert"
JSONReplace = "json_replace"
JSONRemove = "json_remove"
JSONOverlaps = "json_overlaps"
JSONContains = "json_contains"
JSONMemberOf = "json_memberof"
JSONContainsPath = "json_contains_path"
JSONValid = "json_valid"
JSONArrayAppend = "json_array_append"
JSONArrayInsert = "json_array_insert"
JSONMergePatch = "json_merge_patch"
JSONMergePreserve = "json_merge_preserve"
JSONPretty = "json_pretty"
JSONQuote = "json_quote"
JSONSchemaValid = "json_schema_valid"
JSONSearch = "json_search"
JSONStorageFree = "json_storage_free"
JSONStorageSize = "json_storage_size"
JSONDepth = "json_depth"
JSONKeys = "json_keys"
JSONLength = "json_length"
// vector functions (tidb extension)
VecDims = "vec_dims"
VecL1Distance = "vec_l1_distance"
VecL2Distance = "vec_l2_distance"
VecNegativeInnerProduct = "vec_negative_inner_product"
VecCosineDistance = "vec_cosine_distance"
VecL2Norm = "vec_l2_norm"
VecFromText = "vec_from_text"
VecAsText = "vec_as_text"
// FTS functions (tidb extension)
FTSMatchWord = "fts_match_word"
// TiDB internal function.
TiDBDecodeKey = "tidb_decode_key"
TiDBMVCCInfo = "tidb_mvcc_info"
TiDBEncodeRecordKey = "tidb_encode_record_key"
TiDBEncodeIndexKey = "tidb_encode_index_key"
TiDBDecodeBase64Key = "tidb_decode_base64_key"
// Sequence function.
NextVal = "nextval"
LastVal = "lastval"
SetVal = "setval"
)
type FuncCallExprType int8
const (
FuncCallExprTypeKeyword FuncCallExprType = iota
FuncCallExprTypeGeneric
)
// FuncCallExpr is for function expression.
type FuncCallExpr struct {
funcNode
Tp FuncCallExprType
Schema CIStr
// FnName is the function name.
FnName CIStr
// Args is the function args.
Args []ExprNode
}
// Restore implements Node interface.
func (n *FuncCallExpr) Restore(ctx *format.RestoreCtx) error {
done, err := n.customRestore(ctx)
if done {
return err
}
if len(n.Schema.String()) != 0 {
ctx.WriteName(n.Schema.O)
ctx.WritePlain(".")
}
if n.Tp == FuncCallExprTypeGeneric {
ctx.WriteName(n.FnName.O)
} else {
ctx.WriteKeyWord(n.FnName.O)
}
ctx.WritePlain("(")
switch n.FnName.L {
case "convert":
if err := n.Args[0].Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore FuncCastExpr.Expr")
}
ctx.WriteKeyWord(" USING ")
if err := n.Args[1].Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore FuncCastExpr.Expr")
}
case "adddate", "subdate", "date_add", "date_sub":
if err := n.Args[0].Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore FuncCallExpr.Args[0]")
}
ctx.WritePlain(", ")
ctx.WriteKeyWord("INTERVAL ")
if err := n.Args[1].Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore FuncCallExpr.Args[1]")
}
ctx.WritePlain(" ")
if err := n.Args[2].Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore FuncCallExpr.Args[2]")
}
case "extract":
if err := n.Args[0].Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore FuncCallExpr.Args[0]")
}
ctx.WriteKeyWord(" FROM ")
if err := n.Args[1].Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore FuncCallExpr.Args[1]")
}
case "position":
if err := n.Args[0].Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore FuncCallExpr")
}
ctx.WriteKeyWord(" IN ")
if err := n.Args[1].Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore FuncCallExpr")
}
case "trim":
switch len(n.Args) {
case 3:
if err := n.Args[2].Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore FuncCallExpr.Args[2]")
}
ctx.WritePlain(" ")
fallthrough
case 2:
if expr, isValue := n.Args[1].(ValueExpr); !isValue || expr.GetValue() != nil {
if err := n.Args[1].Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore FuncCallExpr.Args[1]")
}
ctx.WritePlain(" ")
}
ctx.WriteKeyWord("FROM ")
fallthrough
case 1:
if err := n.Args[0].Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore FuncCallExpr.Args[0]")
}
}
case WeightString:
if err := n.Args[0].Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore FuncCallExpr.(WEIGHT_STRING).Args[0]")
}
if len(n.Args) == 3 {
ctx.WriteKeyWord(" AS ")
ctx.WriteKeyWord(n.Args[1].(ValueExpr).GetValue().(string))
ctx.WritePlain("(")
if err := n.Args[2].Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore FuncCallExpr.(WEIGHT_STRING).Args[2]")
}
ctx.WritePlain(")")
}
default:
for i, argv := range n.Args {
if i != 0 {
ctx.WritePlain(", ")
}
if err := argv.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore FuncCallExpr.Args %d", i)
}
}
}
ctx.WritePlain(")")
return nil
}
func (n *FuncCallExpr) customRestore(ctx *format.RestoreCtx) (bool, error) {
var specialLiteral string
switch n.FnName.L {
case DateLiteral:
specialLiteral = "DATE "
case TimeLiteral:
specialLiteral = "TIME "
case TimestampLiteral:
specialLiteral = "TIMESTAMP "
}
if specialLiteral != "" {
ctx.WritePlain(specialLiteral)
if err := n.Args[0].Restore(ctx); err != nil {
return true, errors.Annotatef(err, "An error occurred while restore FuncCallExpr.Expr")
}
return true, nil
}
if n.FnName.L == JSONMemberOf {
if len(n.Args) == 2 {
if err := n.Args[0].Restore(ctx); err != nil {
return true, errors.Annotatef(err, "An error occurred while restore FuncCallExpr.(MEMBER OF).Args[0]")
}
ctx.WriteKeyWord(" MEMBER OF ")
ctx.WritePlain("(")
if err := n.Args[1].Restore(ctx); err != nil {
return true, errors.Annotatef(err, "An error occurred while restore FuncCallExpr.(MEMBER OF).Args[1]")
}
ctx.WritePlain(")")
return true, nil
}
return true, errors.WithStack(errors.Errorf("Incorrect parameter count in the call to native function 'json_memberof'"))
}
return false, nil
}
// Format the ExprNode into a Writer.
func (n *FuncCallExpr) Format(w io.Writer) {
if !n.specialFormatArgs(w) {
fmt.Fprintf(w, "%s(", n.FnName.L)
for i, arg := range n.Args {
arg.Format(w)
if i != len(n.Args)-1 {
fmt.Fprint(w, ", ")
}
}
fmt.Fprint(w, ")")
}
}
// specialFormatArgs formats argument list for some special functions.
func (n *FuncCallExpr) specialFormatArgs(w io.Writer) bool {
switch n.FnName.L {
case DateAdd, DateSub, AddDate, SubDate:
fmt.Fprintf(w, "%s(", n.FnName.L)
n.Args[0].Format(w)
fmt.Fprint(w, ", INTERVAL ")
n.Args[1].Format(w)
fmt.Fprint(w, " ")
n.Args[2].Format(w)
fmt.Fprint(w, ")")
return true
case JSONMemberOf:
n.Args[0].Format(w)
fmt.Fprint(w, " MEMBER OF ")
fmt.Fprint(w, " (")
n.Args[1].Format(w)
fmt.Fprint(w, ")")
return true
case Extract:
fmt.Fprintf(w, "%s(", n.FnName.L)
n.Args[0].Format(w)
fmt.Fprint(w, " FROM ")
n.Args[1].Format(w)
fmt.Fprint(w, ")")
return true
}
return false
}
// Accept implements Node interface.
func (n *FuncCallExpr) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*FuncCallExpr)
for i, val := range n.Args {
node, ok := val.Accept(v)
if !ok {
return n, false
}
n.Args[i] = node.(ExprNode)
}
return v.Leave(n)
}
// CastFunctionType is the type for cast function.
type CastFunctionType int
// CastFunction types
const (
CastFunction CastFunctionType = iota + 1
CastConvertFunction
CastBinaryOperator
)
// JSONSumCrc32Expr is the function to calculate sum of crc32 values for array in json
// It's modified from CastFunction to support processing JSON Array.
type JSONSumCrc32Expr struct {
funcNode
// Expr is the expression to be converted.
Expr ExprNode
// Tp is the conversion type.
Tp *types.FieldType
// ExplicitCharSet is true when charset is explicit indicated.
ExplicitCharSet bool
}
// Restore implements Node interface.
func (n *JSONSumCrc32Expr) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("JSON_SUM_CRC32")
ctx.WritePlain("(")
if err := n.Expr.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore JSONSumCrc32Expr.Expr")
}
ctx.WriteKeyWord(" AS ")
n.Tp.RestoreAsCastType(ctx, n.ExplicitCharSet)
ctx.WritePlain(")")
return nil
}
// Format the ExprNode into a Writer.
func (n *JSONSumCrc32Expr) Format(w io.Writer) {
fmt.Fprint(w, "JSON_SUM_CRC32(")
n.Expr.Format(w)
fmt.Fprint(w, " AS ")
n.Tp.FormatAsCastType(w, n.ExplicitCharSet)
fmt.Fprint(w, ")")
}
// Accept implements Node Accept interface.
func (n *JSONSumCrc32Expr) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*JSONSumCrc32Expr)
node, ok := n.Expr.Accept(v)
if !ok {
return n, false
}
n.Expr = node.(ExprNode)
return v.Leave(n)
}
// FuncCastExpr is the cast function converting value to another type, e.g, cast(expr AS signed).
// See https://dev.mysql.com/doc/refman/5.7/en/cast-functions.html
type FuncCastExpr struct {
funcNode
// Expr is the expression to be converted.
Expr ExprNode
// Tp is the conversion type.
Tp *types.FieldType
// FunctionType is either Cast, Convert or Binary.
FunctionType CastFunctionType
// ExplicitCharSet is true when charset is explicit indicated.
ExplicitCharSet bool
}
// Restore implements Node interface.
func (n *FuncCastExpr) Restore(ctx *format.RestoreCtx) error {
switch n.FunctionType {
case CastFunction:
ctx.WriteKeyWord("CAST")
ctx.WritePlain("(")
if err := n.Expr.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore FuncCastExpr.Expr")
}
ctx.WriteKeyWord(" AS ")
n.Tp.RestoreAsCastType(ctx, n.ExplicitCharSet)
ctx.WritePlain(")")
case CastConvertFunction:
ctx.WriteKeyWord("CONVERT")
ctx.WritePlain("(")
if err := n.Expr.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore FuncCastExpr.Expr")
}
ctx.WritePlain(", ")
n.Tp.RestoreAsCastType(ctx, n.ExplicitCharSet)
ctx.WritePlain(")")
case CastBinaryOperator:
ctx.WriteKeyWord("BINARY ")
if err := n.Expr.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore FuncCastExpr.Expr")
}
}
return nil
}
// Format the ExprNode into a Writer.
func (n *FuncCastExpr) Format(w io.Writer) {
switch n.FunctionType {
case CastFunction:
fmt.Fprint(w, "CAST(")
n.Expr.Format(w)
fmt.Fprint(w, " AS ")
n.Tp.FormatAsCastType(w, n.ExplicitCharSet)
fmt.Fprint(w, ")")
case CastConvertFunction:
fmt.Fprint(w, "CONVERT(")
n.Expr.Format(w)
fmt.Fprint(w, ", ")
n.Tp.FormatAsCastType(w, n.ExplicitCharSet)
fmt.Fprint(w, ")")
case CastBinaryOperator:
fmt.Fprint(w, "BINARY ")
n.Expr.Format(w)
}
}
// Accept implements Node Accept interface.
func (n *FuncCastExpr) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*FuncCastExpr)
node, ok := n.Expr.Accept(v)
if !ok {
return n, false
}
n.Expr = node.(ExprNode)
return v.Leave(n)
}
// TrimDirectionType is the type for trim direction.
type TrimDirectionType int
const (
// TrimBothDefault trims from both direction by default.
TrimBothDefault TrimDirectionType = iota
// TrimBoth trims from both direction with explicit notation.
TrimBoth
// TrimLeading trims from left.
TrimLeading
// TrimTrailing trims from right.
TrimTrailing
)
// String implements fmt.Stringer interface.
func (direction TrimDirectionType) String() string {
switch direction {
case TrimBoth, TrimBothDefault:
return "BOTH"
case TrimLeading:
return "LEADING"
case TrimTrailing:
return "TRAILING"
default:
return ""
}
}
// TrimDirectionExpr is an expression representing the trim direction used in the TRIM() function.
type TrimDirectionExpr struct {
exprNode
// Direction is the trim direction
Direction TrimDirectionType
}
// Restore implements Node interface.
func (n *TrimDirectionExpr) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord(n.Direction.String())
return nil
}
// Format the ExprNode into a Writer.
func (n *TrimDirectionExpr) Format(w io.Writer) {
fmt.Fprint(w, n.Direction.String())
}
// Accept implements Node Accept interface.
func (n *TrimDirectionExpr) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
return v.Leave(n)
}
// DateArithType is type for DateArith type.
type DateArithType byte
const (
// DateArithAdd is to run adddate or date_add function option.
// See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_adddate
// See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_date-add
DateArithAdd DateArithType = iota + 1
// DateArithSub is to run subdate or date_sub function option.
// See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_subdate
// See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_date-sub
DateArithSub
)
const (
// AggFuncCount is the name of Count function.
AggFuncCount = "count"
// AggFuncSum is the name of Sum function.
AggFuncSum = "sum"
// AggFuncAvg is the name of Avg function.
AggFuncAvg = "avg"
// AggFuncFirstRow is the name of FirstRowColumn function.
AggFuncFirstRow = "firstrow"
// AggFuncMax is the name of max function.
AggFuncMax = "max"
// AggFuncMin is the name of min function.
AggFuncMin = "min"
// AggFuncGroupConcat is the name of group_concat function.
AggFuncGroupConcat = "group_concat"
// AggFuncBitOr is the name of bit_or function.
AggFuncBitOr = "bit_or"
// AggFuncBitXor is the name of bit_xor function.
AggFuncBitXor = "bit_xor"
// AggFuncBitAnd is the name of bit_and function.
AggFuncBitAnd = "bit_and"
// AggFuncVarPop is the name of var_pop function
AggFuncVarPop = "var_pop"
// AggFuncVarSamp is the name of var_samp function
AggFuncVarSamp = "var_samp"
// AggFuncStddevPop is the name of stddev_pop/std/stddev function
AggFuncStddevPop = "stddev_pop"
// AggFuncStddevSamp is the name of stddev_samp function
AggFuncStddevSamp = "stddev_samp"
// AggFuncJsonArrayagg is the name of json_arrayagg function
AggFuncJsonArrayagg = "json_arrayagg"
// AggFuncJsonObjectAgg is the name of json_objectagg function
AggFuncJsonObjectAgg = "json_objectagg"
// AggFuncApproxCountDistinct is the name of approx_count_distinct function.
AggFuncApproxCountDistinct = "approx_count_distinct"
// AggFuncApproxPercentile is the name of approx_percentile function.
AggFuncApproxPercentile = "approx_percentile"
)
// AggregateFuncExpr represents aggregate function expression.
type AggregateFuncExpr struct {
funcNode
// F is the function name.
F string
// Args is the function args.
Args []ExprNode
// Distinct is true, function hence only aggregate distinct values.
// For example, column c1 values are "1", "2", "2", "sum(c1)" is "5",
// but "sum(distinct c1)" is "3".
Distinct bool
// Order is only used in GROUP_CONCAT
Order *OrderByClause
}
// Restore implements Node interface.
func (n *AggregateFuncExpr) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord(n.F)
ctx.WritePlain("(")
if n.Distinct {
ctx.WriteKeyWord("DISTINCT ")
}
switch strings.ToLower(n.F) {
case "group_concat":
for i := range len(n.Args) - 1 {
if i != 0 {
ctx.WritePlain(", ")
}
if err := n.Args[i].Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore AggregateFuncExpr.Args[%d]", i)
}
}
if n.Order != nil {
ctx.WritePlain(" ")
if err := n.Order.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occur while restore AggregateFuncExpr.Args Order")
}
}
ctx.WriteKeyWord(" SEPARATOR ")
if err := n.Args[len(n.Args)-1].Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore AggregateFuncExpr.Args SEPARATOR")
}
default:
for i, argv := range n.Args {
if i != 0 {
ctx.WritePlain(", ")
}
if err := argv.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore AggregateFuncExpr.Args[%d]", i)
}
}
}
ctx.WritePlain(")")
return nil
}
// Format the ExprNode into a Writer.
func (n *AggregateFuncExpr) Format(w io.Writer) {
panic("Not implemented")
}
// Accept implements Node Accept interface.
func (n *AggregateFuncExpr) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*AggregateFuncExpr)
for i, val := range n.Args {
node, ok := val.Accept(v)
if !ok {
return n, false
}
n.Args[i] = node.(ExprNode)
}
if n.Order != nil {
node, ok := n.Order.Accept(v)
if !ok {
return n, false
}
n.Order = node.(*OrderByClause)
}
return v.Leave(n)
}
const (
// WindowFuncRowNumber is the name of row_number function.
WindowFuncRowNumber = "row_number"
// WindowFuncRank is the name of rank function.
WindowFuncRank = "rank"
// WindowFuncDenseRank is the name of dense_rank function.
WindowFuncDenseRank = "dense_rank"
// WindowFuncCumeDist is the name of cume_dist function.
WindowFuncCumeDist = "cume_dist"
// WindowFuncPercentRank is the name of percent_rank function.
WindowFuncPercentRank = "percent_rank"
// WindowFuncNtile is the name of ntile function.
WindowFuncNtile = "ntile"
// WindowFuncLead is the name of lead function.
WindowFuncLead = "lead"
// WindowFuncLag is the name of lag function.
WindowFuncLag = "lag"
// WindowFuncFirstValue is the name of first_value function.
WindowFuncFirstValue = "first_value"
// WindowFuncLastValue is the name of last_value function.
WindowFuncLastValue = "last_value"
// WindowFuncNthValue is the name of nth_value function.
WindowFuncNthValue = "nth_value"
)
// WindowFuncExpr represents window function expression.
type WindowFuncExpr struct {
funcNode
// Name is the function name.
Name string
// Args is the function args.
Args []ExprNode
// Distinct cannot be true for most window functions, except `max` and `min`.
// We need to raise error if it is not allowed to be true.
Distinct bool
// IgnoreNull indicates how to handle null value.
// MySQL only supports `RESPECT NULLS`, so we need to raise error if it is true.
IgnoreNull bool
// FromLast indicates the calculation direction of this window function.
// MySQL only supports calculation from first, so we need to raise error if it is true.
FromLast bool
// Spec is the specification of this window.
Spec WindowSpec
}
// Restore implements Node interface.
func (n *WindowFuncExpr) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord(n.Name)
ctx.WritePlain("(")
for i, v := range n.Args {
if i != 0 {
ctx.WritePlain(", ")
} else if n.Distinct {
ctx.WriteKeyWord("DISTINCT ")
}
if err := v.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore WindowFuncExpr.Args[%d]", i)
}
}
ctx.WritePlain(")")
if n.FromLast {
ctx.WriteKeyWord(" FROM LAST")
}
if n.IgnoreNull {
ctx.WriteKeyWord(" IGNORE NULLS")
}
ctx.WriteKeyWord(" OVER ")
if err := n.Spec.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore WindowFuncExpr.Spec")
}
return nil
}
// Format formats the window function expression into a Writer.
func (n *WindowFuncExpr) Format(w io.Writer) {
panic("Not implemented")
}
// Accept implements Node Accept interface.
func (n *WindowFuncExpr) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*WindowFuncExpr)
for i, val := range n.Args {
node, ok := val.Accept(v)
if !ok {
return n, false
}
n.Args[i] = node.(ExprNode)
}
node, ok := n.Spec.Accept(v)
if !ok {
return n, false
}
n.Spec = *node.(*WindowSpec)
return v.Leave(n)
}
// TimeUnitType is the type for time and timestamp units.
type TimeUnitType int
const (
// TimeUnitInvalid is a placeholder for an invalid time or timestamp unit
TimeUnitInvalid TimeUnitType = iota
// TimeUnitMicrosecond is the time or timestamp unit MICROSECOND.
TimeUnitMicrosecond
// TimeUnitSecond is the time or timestamp unit SECOND.
TimeUnitSecond
// TimeUnitMinute is the time or timestamp unit MINUTE.
TimeUnitMinute
// TimeUnitHour is the time or timestamp unit HOUR.
TimeUnitHour
// TimeUnitDay is the time or timestamp unit DAY.
TimeUnitDay
// TimeUnitWeek is the time or timestamp unit WEEK.
TimeUnitWeek
// TimeUnitMonth is the time or timestamp unit MONTH.
TimeUnitMonth
// TimeUnitQuarter is the time or timestamp unit QUARTER.
TimeUnitQuarter
// TimeUnitYear is the time or timestamp unit YEAR.
TimeUnitYear
// TimeUnitSecondMicrosecond is the time unit SECOND_MICROSECOND.
TimeUnitSecondMicrosecond
// TimeUnitMinuteMicrosecond is the time unit MINUTE_MICROSECOND.
TimeUnitMinuteMicrosecond
// TimeUnitMinuteSecond is the time unit MINUTE_SECOND.
TimeUnitMinuteSecond
// TimeUnitHourMicrosecond is the time unit HOUR_MICROSECOND.
TimeUnitHourMicrosecond
// TimeUnitHourSecond is the time unit HOUR_SECOND.
TimeUnitHourSecond
// TimeUnitHourMinute is the time unit HOUR_MINUTE.
TimeUnitHourMinute
// TimeUnitDayMicrosecond is the time unit DAY_MICROSECOND.
TimeUnitDayMicrosecond
// TimeUnitDaySecond is the time unit DAY_SECOND.
TimeUnitDaySecond
// TimeUnitDayMinute is the time unit DAY_MINUTE.
TimeUnitDayMinute
// TimeUnitDayHour is the time unit DAY_HOUR.
TimeUnitDayHour
// TimeUnitYearMonth is the time unit YEAR_MONTH.
TimeUnitYearMonth
)
// String implements fmt.Stringer interface.
func (unit TimeUnitType) String() string {
switch unit {
case TimeUnitMicrosecond:
return "MICROSECOND"
case TimeUnitSecond:
return "SECOND"
case TimeUnitMinute:
return "MINUTE"
case TimeUnitHour:
return "HOUR"
case TimeUnitDay:
return "DAY"
case TimeUnitWeek:
return "WEEK"
case TimeUnitMonth:
return "MONTH"
case TimeUnitQuarter:
return "QUARTER"
case TimeUnitYear:
return "YEAR"
case TimeUnitSecondMicrosecond:
return "SECOND_MICROSECOND"
case TimeUnitMinuteMicrosecond:
return "MINUTE_MICROSECOND"
case TimeUnitMinuteSecond:
return "MINUTE_SECOND"
case TimeUnitHourMicrosecond:
return "HOUR_MICROSECOND"
case TimeUnitHourSecond:
return "HOUR_SECOND"
case TimeUnitHourMinute:
return "HOUR_MINUTE"
case TimeUnitDayMicrosecond:
return "DAY_MICROSECOND"
case TimeUnitDaySecond:
return "DAY_SECOND"
case TimeUnitDayMinute:
return "DAY_MINUTE"
case TimeUnitDayHour:
return "DAY_HOUR"
case TimeUnitYearMonth:
return "YEAR_MONTH"
default:
return ""
}
}
// Duration represented by this unit.
// Returns error if the time unit is not a fixed time interval (such as MONTH)
// or a composite unit (such as MINUTE_SECOND).
func (unit TimeUnitType) Duration() (time.Duration, error) {
switch unit {
case TimeUnitMicrosecond:
return time.Microsecond, nil
case TimeUnitSecond:
return time.Second, nil
case TimeUnitMinute:
return time.Minute, nil
case TimeUnitHour:
return time.Hour, nil
case TimeUnitDay:
return time.Hour * 24, nil
case TimeUnitWeek:
return time.Hour * 24 * 7, nil
case TimeUnitMonth, TimeUnitQuarter, TimeUnitYear:
return 0, errors.Errorf("%s is not a constant time interval and cannot be used here", unit)
default:
return 0, errors.Errorf("%s is a composite time unit and is not supported yet", unit)
}
}
// TimeUnitExpr is an expression representing a time or timestamp unit.
type TimeUnitExpr struct {
exprNode
// Unit is the time or timestamp unit.
Unit TimeUnitType
}
// Restore implements Node interface.
func (n *TimeUnitExpr) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord(n.Unit.String())
return nil
}
// Format the ExprNode into a Writer.
func (n *TimeUnitExpr) Format(w io.Writer) {
fmt.Fprint(w, n.Unit.String())
}
// Accept implements Node Accept interface.
func (n *TimeUnitExpr) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
return v.Leave(n)
}
// GetFormatSelectorType is the type for the first argument of GET_FORMAT() function.
type GetFormatSelectorType int
const (
// GetFormatSelectorDate is the GET_FORMAT selector DATE.
GetFormatSelectorDate GetFormatSelectorType = iota + 1
// GetFormatSelectorTime is the GET_FORMAT selector TIME.
GetFormatSelectorTime
// GetFormatSelectorDatetime is the GET_FORMAT selector DATETIME and TIMESTAMP.
GetFormatSelectorDatetime
)
// GetFormatSelectorExpr is an expression used as the first argument of GET_FORMAT() function.
type GetFormatSelectorExpr struct {
exprNode
// Selector is the GET_FORMAT() selector.
Selector GetFormatSelectorType
}
// String implements fmt.Stringer interface.
func (selector GetFormatSelectorType) String() string {
switch selector {
case GetFormatSelectorDate:
return "DATE"
case GetFormatSelectorTime:
return "TIME"
case GetFormatSelectorDatetime:
return "DATETIME"
default:
return ""
}
}
// Restore implements Node interface.
func (n *GetFormatSelectorExpr) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord(n.Selector.String())
return nil
}
// Format the ExprNode into a Writer.
func (n *GetFormatSelectorExpr) Format(w io.Writer) {
fmt.Fprint(w, n.Selector.String())
}
// Accept implements Node Accept interface.
func (n *GetFormatSelectorExpr) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
return v.Leave(n)
}
// Copyright 2015 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// See the License for the specific language governing permissions and
// limitations under the License.
package ast
import (
"bytes"
"fmt"
"net/url"
"strconv"
"strings"
"github.com/pingcap/errors"
"github.com/pingcap/failpoint"
"github.com/pingcap/tidb/pkg/parser/auth"
"github.com/pingcap/tidb/pkg/parser/format"
"github.com/pingcap/tidb/pkg/parser/mysql"
)
var (
_ StmtNode = &AdminStmt{}
_ StmtNode = &AlterUserStmt{}
_ StmtNode = &AlterRangeStmt{}
_ StmtNode = &BeginStmt{}
_ StmtNode = &BinlogStmt{}
_ StmtNode = &CommitStmt{}
_ StmtNode = &CreateUserStmt{}
_ StmtNode = &DeallocateStmt{}
_ StmtNode = &DoStmt{}
_ StmtNode = &ExecuteStmt{}
_ StmtNode = &ExplainStmt{}
_ StmtNode = &GrantStmt{}
_ StmtNode = &PrepareStmt{}
_ StmtNode = &RollbackStmt{}
_ StmtNode = &SetPwdStmt{}
_ StmtNode = &SetRoleStmt{}
_ StmtNode = &SetDefaultRoleStmt{}
_ StmtNode = &SetStmt{}
_ StmtNode = &SetSessionStatesStmt{}
_ StmtNode = &UseStmt{}
_ StmtNode = &FlushStmt{}
_ StmtNode = &KillStmt{}
_ StmtNode = &CreateBindingStmt{}
_ StmtNode = &DropBindingStmt{}
_ StmtNode = &SetBindingStmt{}
_ StmtNode = &ShutdownStmt{}
_ StmtNode = &RestartStmt{}
_ StmtNode = &RenameUserStmt{}
_ StmtNode = &HelpStmt{}
_ StmtNode = &PlanReplayerStmt{}
_ StmtNode = &CompactTableStmt{}
_ StmtNode = &SetResourceGroupStmt{}
_ StmtNode = &TrafficStmt{}
_ StmtNode = &RecommendIndexStmt{}
_ Node = &PrivElem{}
_ Node = &VariableAssignment{}
)
// Isolation level constants.
const (
ReadCommitted = "READ-COMMITTED"
ReadUncommitted = "READ-UNCOMMITTED"
Serializable = "SERIALIZABLE"
RepeatableRead = "REPEATABLE-READ"
)
// Transaction mode constants.
const (
Optimistic = "OPTIMISTIC"
Pessimistic = "PESSIMISTIC"
)
// TypeOpt is used for parsing data type option from SQL.
type TypeOpt struct {
IsUnsigned bool
IsZerofill bool
}
// FloatOpt is used for parsing floating-point type option from SQL.
// See http://dev.mysql.com/doc/refman/5.7/en/floating-point-types.html
type FloatOpt struct {
Flen int
Decimal int
}
// AuthOption is used for parsing create use statement.
type AuthOption struct {
// ByAuthString set as true, if AuthString is used for authorization. Otherwise, authorization is done by HashString.
ByAuthString bool
AuthString string
ByHashString bool
HashString string
AuthPlugin string
}
// Restore implements Node interface.
func (n *AuthOption) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("IDENTIFIED")
if n.AuthPlugin != "" {
ctx.WriteKeyWord(" WITH ")
ctx.WriteString(n.AuthPlugin)
}
if n.ByAuthString {
ctx.WriteKeyWord(" BY ")
ctx.WriteString(n.AuthString)
} else if n.ByHashString {
ctx.WriteKeyWord(" AS ")
ctx.WriteString(n.HashString)
}
return nil
}
// TraceStmt is a statement to trace what sql actually does at background.
type TraceStmt struct {
stmtNode
Stmt StmtNode
Format string
TracePlan bool
TracePlanTarget string
}
// Restore implements Node interface.
func (n *TraceStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("TRACE ")
if n.TracePlan {
ctx.WriteKeyWord("PLAN ")
if n.TracePlanTarget != "" {
ctx.WriteKeyWord("TARGET")
ctx.WritePlain(" = ")
ctx.WriteString(n.TracePlanTarget)
ctx.WritePlain(" ")
}
} else if n.Format != "row" {
ctx.WriteKeyWord("FORMAT")
ctx.WritePlain(" = ")
ctx.WriteString(n.Format)
ctx.WritePlain(" ")
}
if err := n.Stmt.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore TraceStmt.Stmt")
}
return nil
}
// Accept implements Node Accept interface.
func (n *TraceStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*TraceStmt)
node, ok := n.Stmt.Accept(v)
if !ok {
return n, false
}
n.Stmt = node.(StmtNode)
return v.Leave(n)
}
// ExplainForStmt is a statement to provite information about how is SQL statement executeing
// in connection #ConnectionID
// See https://dev.mysql.com/doc/refman/5.7/en/explain.html
type ExplainForStmt struct {
stmtNode
Format string
ConnectionID uint64
}
// Restore implements Node interface.
func (n *ExplainForStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("EXPLAIN ")
ctx.WriteKeyWord("FORMAT ")
ctx.WritePlain("= ")
ctx.WriteString(n.Format)
ctx.WritePlain(" ")
ctx.WriteKeyWord("FOR ")
ctx.WriteKeyWord("CONNECTION ")
ctx.WritePlain(strconv.FormatUint(n.ConnectionID, 10))
return nil
}
// Accept implements Node Accept interface.
func (n *ExplainForStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*ExplainForStmt)
return v.Leave(n)
}
// ExplainStmt is a statement to provide information about how is SQL statement executed
// or get columns information in a table.
// See https://dev.mysql.com/doc/refman/5.7/en/explain.html
type ExplainStmt struct {
stmtNode
Stmt StmtNode
Format string
Analyze bool
// Explore indicates whether to use EXPLAIN EXPLORE.
Explore bool
// SQLDigest to explain, used in `EXPLAIN EXPLORE <sql_digest>`.
SQLDigest string
// PlanDigest to explain, used in `EXPLAIN [ANALYZE] <plan_digest>`.
PlanDigest string
}
// Restore implements Node interface.
func (n *ExplainStmt) Restore(ctx *format.RestoreCtx) error {
if showStmt, ok := n.Stmt.(*ShowStmt); ok {
ctx.WriteKeyWord("DESC ")
if err := showStmt.Table.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore ExplainStmt.ShowStmt.Table")
}
if showStmt.Column != nil {
ctx.WritePlain(" ")
if err := showStmt.Column.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore ExplainStmt.ShowStmt.Column")
}
}
return nil
}
ctx.WriteKeyWord("EXPLAIN ")
if n.Analyze {
ctx.WriteKeyWord("ANALYZE ")
}
if n.Explore {
ctx.WriteKeyWord("EXPLORE ")
if n.SQLDigest != "" {
ctx.WriteString(n.SQLDigest)
}
} else if !n.Analyze || strings.ToLower(n.Format) != "row" {
ctx.WriteKeyWord("FORMAT ")
ctx.WritePlain("= ")
ctx.WriteString(n.Format)
ctx.WritePlain(" ")
}
if n.PlanDigest != "" {
ctx.WriteString(n.PlanDigest)
}
if n.Stmt != nil {
if err := n.Stmt.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore ExplainStmt.Stmt")
}
}
return nil
}
// Accept implements Node Accept interface.
func (n *ExplainStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*ExplainStmt)
if n.Stmt != nil {
node, ok := n.Stmt.Accept(v)
if !ok {
return n, false
}
n.Stmt = node.(StmtNode)
}
return v.Leave(n)
}
// PlanReplayerStmt is a statement to dump or load information for recreating plans
type PlanReplayerStmt struct {
stmtNode
Stmt StmtNode
Analyze bool
Load bool
HistoricalStatsInfo *AsOfClause
// Capture indicates 'plan replayer capture <sql_digest> <plan_digest>'
Capture bool
// Remove indicates `plan replayer capture remove <sql_digest> <plan_digest>
Remove bool
SQLDigest string
PlanDigest string
// File is used to store 2 cases:
// 1. plan replayer load 'file';
// 2. plan replayer dump explain <analyze> 'file'
File string
// Fields below are currently useless.
// Where is the where clause in select statement.
Where ExprNode
// OrderBy is the ordering expression list.
OrderBy *OrderByClause
// Limit is the limit clause.
Limit *Limit
}
// Restore implements Node interface.
func (n *PlanReplayerStmt) Restore(ctx *format.RestoreCtx) error {
if n.Load {
ctx.WriteKeyWord("PLAN REPLAYER LOAD ")
ctx.WriteString(n.File)
return nil
}
if n.Capture {
ctx.WriteKeyWord("PLAN REPLAYER CAPTURE ")
ctx.WriteString(n.SQLDigest)
ctx.WriteKeyWord(" ")
ctx.WriteString(n.PlanDigest)
return nil
}
if n.Remove {
ctx.WriteKeyWord("PLAN REPLAYER CAPTURE REMOVE ")
ctx.WriteString(n.SQLDigest)
ctx.WriteKeyWord(" ")
ctx.WriteString(n.PlanDigest)
return nil
}
ctx.WriteKeyWord("PLAN REPLAYER DUMP ")
if n.HistoricalStatsInfo != nil {
ctx.WriteKeyWord("WITH STATS ")
if err := n.HistoricalStatsInfo.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore PlanReplayerStmt.HistoricalStatsInfo")
}
ctx.WriteKeyWord(" ")
}
if n.Analyze {
ctx.WriteKeyWord("EXPLAIN ANALYZE ")
} else {
ctx.WriteKeyWord("EXPLAIN ")
}
if n.Stmt == nil {
if len(n.File) > 0 {
ctx.WriteString(n.File)
return nil
}
ctx.WriteKeyWord("SLOW QUERY")
if n.Where != nil {
ctx.WriteKeyWord(" WHERE ")
if err := n.Where.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore PlanReplayerStmt.Where")
}
}
if n.OrderBy != nil {
ctx.WriteKeyWord(" ")
if err := n.OrderBy.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore PlanReplayerStmt.OrderBy")
}
}
if n.Limit != nil {
ctx.WriteKeyWord(" ")
if err := n.Limit.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore PlanReplayerStmt.Limit")
}
}
return nil
}
if err := n.Stmt.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore PlanReplayerStmt.Stmt")
}
return nil
}
// Accept implements Node Accept interface.
func (n *PlanReplayerStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*PlanReplayerStmt)
if n.Load {
return v.Leave(n)
}
if n.HistoricalStatsInfo != nil {
info, ok := n.HistoricalStatsInfo.Accept(v)
if !ok {
return n, false
}
n.HistoricalStatsInfo = info.(*AsOfClause)
}
if n.Stmt == nil {
if n.Where != nil {
node, ok := n.Where.Accept(v)
if !ok {
return n, false
}
n.Where = node.(ExprNode)
}
if n.OrderBy != nil {
node, ok := n.OrderBy.Accept(v)
if !ok {
return n, false
}
n.OrderBy = node.(*OrderByClause)
}
if n.Limit != nil {
node, ok := n.Limit.Accept(v)
if !ok {
return n, false
}
n.Limit = node.(*Limit)
}
return v.Leave(n)
}
node, ok := n.Stmt.Accept(v)
if !ok {
return n, false
}
n.Stmt = node.(StmtNode)
return v.Leave(n)
}
// TrafficOpType is traffic operation type.
type TrafficOpType int
const (
TrafficOpCapture TrafficOpType = iota
TrafficOpReplay
TrafficOpShow
TrafficOpCancel
)
// TrafficOptionType is traffic option type.
type TrafficOptionType int
const (
// capture options
TrafficOptionDuration TrafficOptionType = iota
TrafficOptionEncryptionMethod
TrafficOptionCompress
// replay options
TrafficOptionUsername
TrafficOptionPassword
TrafficOptionSpeed
TrafficOptionReadOnly
)
var _ SensitiveStmtNode = (*TrafficStmt)(nil)
// TrafficStmt is traffic operation statement.
type TrafficStmt struct {
stmtNode
OpType TrafficOpType
Options []*TrafficOption
Dir string
}
// TrafficOption is traffic option.
type TrafficOption struct {
OptionType TrafficOptionType
FloatValue ValueExpr
StrValue string
BoolValue bool
}
// Restore implements Node interface.
func (n *TrafficStmt) Restore(ctx *format.RestoreCtx) error {
switch n.OpType {
case TrafficOpCapture:
ctx.WriteKeyWord("TRAFFIC CAPTURE TO ")
ctx.WriteString(n.Dir)
for _, option := range n.Options {
ctx.WritePlain(" ")
switch option.OptionType {
case TrafficOptionDuration:
ctx.WriteKeyWord("DURATION ")
ctx.WritePlain("= ")
ctx.WriteString(option.StrValue)
case TrafficOptionEncryptionMethod:
ctx.WriteKeyWord("ENCRYPTION_METHOD ")
ctx.WritePlain("= ")
ctx.WriteString(option.StrValue)
case TrafficOptionCompress:
ctx.WriteKeyWord("COMPRESS ")
ctx.WritePlain("= ")
ctx.WritePlain(strings.ToUpper(fmt.Sprintf("%v", option.BoolValue)))
}
}
case TrafficOpReplay:
ctx.WriteKeyWord("TRAFFIC REPLAY FROM ")
ctx.WriteString(n.Dir)
for _, option := range n.Options {
ctx.WritePlain(" ")
switch option.OptionType {
case TrafficOptionUsername:
ctx.WriteKeyWord("USER ")
ctx.WritePlain("= ")
ctx.WriteString(option.StrValue)
case TrafficOptionPassword:
ctx.WriteKeyWord("PASSWORD ")
ctx.WritePlain("= ")
ctx.WriteString(option.StrValue)
case TrafficOptionSpeed:
ctx.WriteKeyWord("SPEED ")
ctx.WritePlain("= ")
ctx.WritePlainf("%v", option.FloatValue.GetValue())
case TrafficOptionReadOnly:
ctx.WriteKeyWord("READONLY ")
ctx.WritePlain("= ")
ctx.WritePlain(strings.ToUpper(fmt.Sprintf("%v", option.BoolValue)))
}
}
case TrafficOpShow:
ctx.WriteKeyWord("SHOW TRAFFIC JOBS")
case TrafficOpCancel:
ctx.WriteKeyWord("CANCEL TRAFFIC JOBS")
}
return nil
}
// SecureText implements SensitiveStatement interface.
func (n *TrafficStmt) SecureText() string {
trafficStmt := n
opts := n.Options
switch n.OpType {
case TrafficOpReplay:
opts = make([]*TrafficOption, 0, len(n.Options))
for _, opt := range n.Options {
if opt.OptionType == TrafficOptionPassword {
newOpt := *opt
newOpt.StrValue = "xxxxxx"
opt = &newOpt
}
opts = append(opts, opt)
}
fallthrough
case TrafficOpCapture:
trafficStmt = &TrafficStmt{
OpType: n.OpType,
Options: opts,
Dir: RedactURL(n.Dir),
}
}
var sb strings.Builder
_ = trafficStmt.Restore(format.NewRestoreCtx(format.DefaultRestoreFlags, &sb))
return sb.String()
}
// Accept implements Node Accept interface.
func (n *TrafficStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*TrafficStmt)
return v.Leave(n)
}
type CompactReplicaKind string
const (
// CompactReplicaKindAll means compacting both TiKV and TiFlash replicas.
CompactReplicaKindAll = "ALL"
// CompactReplicaKindTiFlash means compacting TiFlash replicas.
CompactReplicaKindTiFlash = "TIFLASH"
// CompactReplicaKindTiKV means compacting TiKV replicas.
CompactReplicaKindTiKV = "TIKV"
)
// CompactTableStmt is a statement to manually compact a table.
type CompactTableStmt struct {
stmtNode
Table *TableName
PartitionNames []CIStr
ReplicaKind CompactReplicaKind
}
// Restore implements Node interface.
func (n *CompactTableStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("ALTER TABLE ")
n.Table.restoreName(ctx)
ctx.WriteKeyWord(" COMPACT")
if len(n.PartitionNames) != 0 {
ctx.WriteKeyWord(" PARTITION ")
for i, partition := range n.PartitionNames {
if i != 0 {
ctx.WritePlain(",")
}
ctx.WriteName(partition.O)
}
}
if n.ReplicaKind != CompactReplicaKindAll {
ctx.WriteKeyWord(" ")
// Note: There is only TiFlash replica available now. TiKV will be added later.
ctx.WriteKeyWord(string(n.ReplicaKind))
ctx.WriteKeyWord(" REPLICA")
}
return nil
}
// Accept implements Node Accept interface.
func (n *CompactTableStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*CompactTableStmt)
node, ok := n.Table.Accept(v)
if !ok {
return n, false
}
n.Table = node.(*TableName)
return v.Leave(n)
}
// PrepareStmt is a statement to prepares a SQL statement which contains placeholders,
// and it is executed with ExecuteStmt and released with DeallocateStmt.
// See https://dev.mysql.com/doc/refman/5.7/en/prepare.html
type PrepareStmt struct {
stmtNode
Name string
SQLText string
SQLVar *VariableExpr
}
// Restore implements Node interface.
func (n *PrepareStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("PREPARE ")
ctx.WriteName(n.Name)
ctx.WriteKeyWord(" FROM ")
if n.SQLText != "" {
ctx.WriteString(n.SQLText)
return nil
}
if n.SQLVar != nil {
if err := n.SQLVar.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore PrepareStmt.SQLVar")
}
return nil
}
return errors.New("An error occurred while restore PrepareStmt")
}
// Accept implements Node Accept interface.
func (n *PrepareStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*PrepareStmt)
if n.SQLVar != nil {
node, ok := n.SQLVar.Accept(v)
if !ok {
return n, false
}
n.SQLVar = node.(*VariableExpr)
}
return v.Leave(n)
}
// DeallocateStmt is a statement to release PreparedStmt.
// See https://dev.mysql.com/doc/refman/5.7/en/deallocate-prepare.html
type DeallocateStmt struct {
stmtNode
Name string
}
// Restore implements Node interface.
func (n *DeallocateStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("DEALLOCATE PREPARE ")
ctx.WriteName(n.Name)
return nil
}
// Accept implements Node Accept interface.
func (n *DeallocateStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*DeallocateStmt)
return v.Leave(n)
}
// Prepared represents a prepared statement.
type Prepared struct {
Stmt StmtNode
StmtType string
}
// ExecuteStmt is a statement to execute PreparedStmt.
// See https://dev.mysql.com/doc/refman/5.7/en/execute.html
type ExecuteStmt struct {
stmtNode
Name string
UsingVars []ExprNode
BinaryArgs any
PrepStmt any // the corresponding prepared statement
PrepStmtId uint32
IdxInMulti int
// FromGeneralStmt indicates whether this execute-stmt is converted from a general query.
// e.g. select * from t where a>2 --> execute 'select * from t where a>?' using 2
FromGeneralStmt bool
}
// Restore implements Node interface.
func (n *ExecuteStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("EXECUTE ")
ctx.WriteName(n.Name)
if len(n.UsingVars) > 0 {
ctx.WriteKeyWord(" USING ")
for i, val := range n.UsingVars {
if i != 0 {
ctx.WritePlain(",")
}
if err := val.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore ExecuteStmt.UsingVars index %d", i)
}
}
}
return nil
}
// Accept implements Node Accept interface.
func (n *ExecuteStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*ExecuteStmt)
for i, val := range n.UsingVars {
node, ok := val.Accept(v)
if !ok {
return n, false
}
n.UsingVars[i] = node.(ExprNode)
}
return v.Leave(n)
}
// BeginStmt is a statement to start a new transaction.
// See https://dev.mysql.com/doc/refman/5.7/en/commit.html
type BeginStmt struct {
stmtNode
Mode string
CausalConsistencyOnly bool
ReadOnly bool
// AS OF is used to read the data at a specific point of time.
// Should only be used when ReadOnly is true.
AsOf *AsOfClause
}
// Restore implements Node interface.
func (n *BeginStmt) Restore(ctx *format.RestoreCtx) error {
if n.Mode == "" {
if n.ReadOnly {
ctx.WriteKeyWord("START TRANSACTION READ ONLY")
if n.AsOf != nil {
ctx.WriteKeyWord(" ")
return n.AsOf.Restore(ctx)
}
} else if n.CausalConsistencyOnly {
ctx.WriteKeyWord("START TRANSACTION WITH CAUSAL CONSISTENCY ONLY")
} else {
ctx.WriteKeyWord("START TRANSACTION")
}
} else {
ctx.WriteKeyWord("BEGIN ")
ctx.WriteKeyWord(n.Mode)
}
return nil
}
// Accept implements Node Accept interface.
func (n *BeginStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
if n.AsOf != nil {
node, ok := n.AsOf.Accept(v)
if !ok {
return n, false
}
n.AsOf = node.(*AsOfClause)
}
n = newNode.(*BeginStmt)
return v.Leave(n)
}
// BinlogStmt is an internal-use statement.
// We just parse and ignore it.
// See http://dev.mysql.com/doc/refman/5.7/en/binlog.html
type BinlogStmt struct {
stmtNode
Str string
}
// Restore implements Node interface.
func (n *BinlogStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("BINLOG ")
ctx.WriteString(n.Str)
return nil
}
// Accept implements Node Accept interface.
func (n *BinlogStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*BinlogStmt)
return v.Leave(n)
}
// CompletionType defines completion_type used in COMMIT and ROLLBACK statements
type CompletionType int8
const (
// CompletionTypeDefault refers to NO_CHAIN
CompletionTypeDefault CompletionType = iota
CompletionTypeChain
CompletionTypeRelease
)
func (n CompletionType) Restore(ctx *format.RestoreCtx) error {
switch n {
case CompletionTypeDefault:
case CompletionTypeChain:
ctx.WriteKeyWord(" AND CHAIN")
case CompletionTypeRelease:
ctx.WriteKeyWord(" RELEASE")
}
return nil
}
// CommitStmt is a statement to commit the current transaction.
// See https://dev.mysql.com/doc/refman/5.7/en/commit.html
type CommitStmt struct {
stmtNode
// CompletionType overwrites system variable `completion_type` within transaction
CompletionType CompletionType
}
// Restore implements Node interface.
func (n *CommitStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("COMMIT")
if err := n.CompletionType.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore CommitStmt.CompletionType")
}
return nil
}
// Accept implements Node Accept interface.
func (n *CommitStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*CommitStmt)
return v.Leave(n)
}
// RollbackStmt is a statement to roll back the current transaction.
// See https://dev.mysql.com/doc/refman/5.7/en/commit.html
type RollbackStmt struct {
stmtNode
// CompletionType overwrites system variable `completion_type` within transaction
CompletionType CompletionType
// SavepointName is the savepoint name.
SavepointName string
}
// Restore implements Node interface.
func (n *RollbackStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("ROLLBACK")
if n.SavepointName != "" {
ctx.WritePlain(" TO ")
ctx.WritePlain(n.SavepointName)
}
if err := n.CompletionType.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore RollbackStmt.CompletionType")
}
return nil
}
// Accept implements Node Accept interface.
func (n *RollbackStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*RollbackStmt)
return v.Leave(n)
}
// UseStmt is a statement to use the DBName database as the current database.
// See https://dev.mysql.com/doc/refman/5.7/en/use.html
type UseStmt struct {
stmtNode
DBName string
}
// Restore implements Node interface.
func (n *UseStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("USE ")
ctx.WriteName(n.DBName)
return nil
}
// Accept implements Node Accept interface.
func (n *UseStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*UseStmt)
return v.Leave(n)
}
const (
// SetNames is the const for set names stmt.
// If VariableAssignment.Name == Names, it should be set names stmt.
SetNames = "SetNAMES"
// SetCharset is the const for set charset stmt.
SetCharset = "SetCharset"
// TiDBCloudStorageURI is the const for set tidb_cloud_storage_uri stmt.
TiDBCloudStorageURI = "tidb_cloud_storage_uri"
// CloudStorageURI is similar to above tidb var, but it's used in import into
// to set a separate param for a single import job.
CloudStorageURI = "cloud_storage_uri"
)
// VariableAssignment is a variable assignment struct.
type VariableAssignment struct {
node
Name string
Value ExprNode
IsInstance bool
IsGlobal bool
IsSystem bool
// ExtendValue is a way to store extended info.
// VariableAssignment should be able to store information for SetCharset/SetPWD Stmt.
// For SetCharsetStmt, Value is charset, ExtendValue is collation.
// TODO: Use SetStmt to implement set password statement.
ExtendValue ValueExpr
}
// Restore implements Node interface.
func (n *VariableAssignment) Restore(ctx *format.RestoreCtx) error {
if n.IsSystem {
ctx.WritePlain("@@")
if n.IsGlobal {
ctx.WriteKeyWord("GLOBAL")
} else if n.IsInstance {
ctx.WriteKeyWord("INSTANCE")
} else {
ctx.WriteKeyWord("SESSION")
}
ctx.WritePlain(".")
} else if n.Name != SetNames && n.Name != SetCharset {
ctx.WriteKeyWord("@")
}
if n.Name == SetNames {
ctx.WriteKeyWord("NAMES ")
} else if n.Name == SetCharset {
ctx.WriteKeyWord("CHARSET ")
} else {
ctx.WriteName(n.Name)
ctx.WritePlain("=")
}
if n.Name == TiDBCloudStorageURI {
// need to redact the url for safety when `show processlist;`
ctx.WritePlain(RedactURL(n.Value.(ValueExpr).GetString()))
} else if err := n.Value.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore VariableAssignment.Value")
}
if n.ExtendValue != nil {
ctx.WriteKeyWord(" COLLATE ")
if err := n.ExtendValue.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore VariableAssignment.ExtendValue")
}
}
return nil
}
// Accept implements Node interface.
func (n *VariableAssignment) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*VariableAssignment)
node, ok := n.Value.Accept(v)
if !ok {
return n, false
}
n.Value = node.(ExprNode)
return v.Leave(n)
}
// FlushStmtType is the type for FLUSH statement.
type FlushStmtType int
// Flush statement types.
const (
FlushNone FlushStmtType = iota
FlushTables
FlushPrivileges
FlushStatus
FlushTiDBPlugin
FlushHosts
FlushLogs
FlushClientErrorsSummary
)
// LogType is the log type used in FLUSH statement.
type LogType int8
const (
LogTypeDefault LogType = iota
LogTypeBinary
LogTypeEngine
LogTypeError
LogTypeGeneral
LogTypeSlow
)
// FlushStmt is a statement to flush tables/privileges/optimizer costs and so on.
type FlushStmt struct {
stmtNode
Tp FlushStmtType // Privileges/Tables/...
NoWriteToBinLog bool
LogType LogType
Tables []*TableName // For FlushTableStmt, if Tables is empty, it means flush all tables.
ReadLock bool
Plugins []string
}
// Restore implements Node interface.
func (n *FlushStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("FLUSH ")
if n.NoWriteToBinLog {
ctx.WriteKeyWord("NO_WRITE_TO_BINLOG ")
}
switch n.Tp {
case FlushTables:
ctx.WriteKeyWord("TABLES")
for i, v := range n.Tables {
if i == 0 {
ctx.WritePlain(" ")
} else {
ctx.WritePlain(", ")
}
if err := v.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore FlushStmt.Tables[%d]", i)
}
}
if n.ReadLock {
ctx.WriteKeyWord(" WITH READ LOCK")
}
case FlushPrivileges:
ctx.WriteKeyWord("PRIVILEGES")
case FlushStatus:
ctx.WriteKeyWord("STATUS")
case FlushTiDBPlugin:
ctx.WriteKeyWord("TIDB PLUGINS")
for i, v := range n.Plugins {
if i == 0 {
ctx.WritePlain(" ")
} else {
ctx.WritePlain(", ")
}
ctx.WritePlain(v)
}
case FlushHosts:
ctx.WriteKeyWord("HOSTS")
case FlushLogs:
var logType string
switch n.LogType {
case LogTypeDefault:
logType = "LOGS"
case LogTypeBinary:
logType = "BINARY LOGS"
case LogTypeEngine:
logType = "ENGINE LOGS"
case LogTypeError:
logType = "ERROR LOGS"
case LogTypeGeneral:
logType = "GENERAL LOGS"
case LogTypeSlow:
logType = "SLOW LOGS"
}
ctx.WriteKeyWord(logType)
case FlushClientErrorsSummary:
ctx.WriteKeyWord("CLIENT_ERRORS_SUMMARY")
default:
return errors.New("Unsupported type of FlushStmt")
}
return nil
}
// Accept implements Node Accept interface.
func (n *FlushStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*FlushStmt)
for i, t := range n.Tables {
node, ok := t.Accept(v)
if !ok {
return n, false
}
n.Tables[i] = node.(*TableName)
}
return v.Leave(n)
}
// KillStmt is a statement to kill a query or connection.
type KillStmt struct {
stmtNode
// Query indicates whether terminate a single query on this connection or the whole connection.
// If Query is true, terminates the statement the connection is currently executing, but leaves the connection itself intact.
// If Query is false, terminates the connection associated with the given ConnectionID, after terminating any statement the connection is executing.
Query bool
ConnectionID uint64
// TiDBExtension is used to indicate whether the user knows he is sending kill statement to the right tidb-server.
// When the SQL grammar is "KILL TIDB [CONNECTION | QUERY] connectionID", TiDBExtension will be set.
// It's a special grammar extension in TiDB. This extension exists because, when the connection is:
// client -> LVS proxy -> TiDB, and type Ctrl+C in client, the following action will be executed:
// new a connection; kill xxx;
// kill command may send to the wrong TiDB, because the exists of LVS proxy, and kill the wrong session.
// So, "KILL TIDB" grammar is introduced, and it REQUIRES DIRECT client -> TiDB TOPOLOGY.
// TODO: The standard KILL grammar will be supported once we have global connectionID.
TiDBExtension bool
Expr ExprNode
}
// Restore implements Node interface.
func (n *KillStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("KILL")
if n.TiDBExtension {
ctx.WriteKeyWord(" TIDB")
}
if n.Query {
ctx.WriteKeyWord(" QUERY")
}
if n.Expr != nil {
ctx.WriteKeyWord(" ")
if err := n.Expr.Restore(ctx); err != nil {
return errors.Trace(err)
}
} else {
ctx.WritePlainf(" %d", n.ConnectionID)
}
return nil
}
// Accept implements Node Accept interface.
func (n *KillStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*KillStmt)
return v.Leave(n)
}
// SavepointStmt is the statement of SAVEPOINT.
type SavepointStmt struct {
stmtNode
// Name is the savepoint name.
Name string
}
// Restore implements Node interface.
func (n *SavepointStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("SAVEPOINT ")
ctx.WritePlain(n.Name)
return nil
}
// Accept implements Node Accept interface.
func (n *SavepointStmt) Accept(v Visitor) (Node, bool) {
newNode, _ := v.Enter(n)
n = newNode.(*SavepointStmt)
return v.Leave(n)
}
// ReleaseSavepointStmt is the statement of RELEASE SAVEPOINT.
type ReleaseSavepointStmt struct {
stmtNode
// Name is the savepoint name.
Name string
}
// Restore implements Node interface.
func (n *ReleaseSavepointStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("RELEASE SAVEPOINT ")
ctx.WritePlain(n.Name)
return nil
}
// Accept implements Node Accept interface.
func (n *ReleaseSavepointStmt) Accept(v Visitor) (Node, bool) {
newNode, _ := v.Enter(n)
n = newNode.(*ReleaseSavepointStmt)
return v.Leave(n)
}
// SetStmt is the statement to set variables.
type SetStmt struct {
stmtNode
// Variables is the list of variable assignment.
Variables []*VariableAssignment
}
// Restore implements Node interface.
func (n *SetStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("SET ")
for i, v := range n.Variables {
if i != 0 {
ctx.WritePlain(", ")
}
if err := v.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore SetStmt.Variables[%d]", i)
}
}
return nil
}
// Accept implements Node Accept interface.
func (n *SetStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*SetStmt)
for i, val := range n.Variables {
node, ok := val.Accept(v)
if !ok {
return n, false
}
n.Variables[i] = node.(*VariableAssignment)
}
return v.Leave(n)
}
// SecureText implements SensitiveStatement interface.
// need to redact the tidb_cloud_storage_url for safety when `show processlist;`
func (n *SetStmt) SecureText() string {
redactedStmt := *n
var sb strings.Builder
_ = redactedStmt.Restore(format.NewRestoreCtx(format.DefaultRestoreFlags, &sb))
return sb.String()
}
// SetConfigStmt is the statement to set cluster configs.
type SetConfigStmt struct {
stmtNode
Type string // TiDB, TiKV, PD
Instance string // '127.0.0.1:3306'
Name string // the variable name
Value ExprNode
}
func (n *SetConfigStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("SET CONFIG ")
if n.Type != "" {
ctx.WriteKeyWord(n.Type)
} else {
ctx.WriteString(n.Instance)
}
ctx.WritePlain(" ")
ctx.WriteKeyWord(n.Name)
ctx.WritePlain(" = ")
return n.Value.Restore(ctx)
}
func (n *SetConfigStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*SetConfigStmt)
node, ok := n.Value.Accept(v)
if !ok {
return n, false
}
n.Value = node.(ExprNode)
return v.Leave(n)
}
// SetSessionStatesStmt is a statement to restore session states.
type SetSessionStatesStmt struct {
stmtNode
SessionStates string
}
func (n *SetSessionStatesStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("SET SESSION_STATES ")
ctx.WriteString(n.SessionStates)
return nil
}
func (n *SetSessionStatesStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*SetSessionStatesStmt)
return v.Leave(n)
}
/*
// SetCharsetStmt is a statement to assign values to character and collation variables.
// See https://dev.mysql.com/doc/refman/5.7/en/set-statement.html
type SetCharsetStmt struct {
stmtNode
Charset string
Collate string
}
// Accept implements Node Accept interface.
func (n *SetCharsetStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*SetCharsetStmt)
return v.Leave(n)
}
*/
// SetPwdStmt is a statement to assign a password to user account.
// See https://dev.mysql.com/doc/refman/5.7/en/set-password.html
type SetPwdStmt struct {
stmtNode
User *auth.UserIdentity
Password string
}
// Restore implements Node interface.
func (n *SetPwdStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("SET PASSWORD")
if n.User != nil {
ctx.WriteKeyWord(" FOR ")
if err := n.User.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore SetPwdStmt.User")
}
}
ctx.WritePlain("=")
ctx.WriteString(n.Password)
return nil
}
// SecureText implements SensitiveStatement interface.
func (n *SetPwdStmt) SecureText() string {
return fmt.Sprintf("set password for user %s", n.User)
}
// Accept implements Node Accept interface.
func (n *SetPwdStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*SetPwdStmt)
return v.Leave(n)
}
// SetRoleStmtType is the type for FLUSH statement.
type SetRoleStmtType int
// SetRole statement types.
const (
SetRoleDefault SetRoleStmtType = iota
SetRoleNone
SetRoleAll
SetRoleAllExcept
SetRoleRegular
)
type SetRoleStmt struct {
stmtNode
SetRoleOpt SetRoleStmtType
RoleList []*auth.RoleIdentity
}
func (n *SetRoleStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("SET ROLE")
switch n.SetRoleOpt {
case SetRoleDefault:
ctx.WriteKeyWord(" DEFAULT")
case SetRoleNone:
ctx.WriteKeyWord(" NONE")
case SetRoleAll:
ctx.WriteKeyWord(" ALL")
case SetRoleAllExcept:
ctx.WriteKeyWord(" ALL EXCEPT")
}
for i, role := range n.RoleList {
ctx.WritePlain(" ")
err := role.Restore(ctx)
if err != nil {
return errors.Annotate(err, "An error occurred while restore SetRoleStmt.RoleList")
}
if i != len(n.RoleList)-1 {
ctx.WritePlain(",")
}
}
return nil
}
// Accept implements Node Accept interface.
func (n *SetRoleStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*SetRoleStmt)
return v.Leave(n)
}
type SetDefaultRoleStmt struct {
stmtNode
SetRoleOpt SetRoleStmtType
RoleList []*auth.RoleIdentity
UserList []*auth.UserIdentity
}
func (n *SetDefaultRoleStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("SET DEFAULT ROLE")
switch n.SetRoleOpt {
case SetRoleNone:
ctx.WriteKeyWord(" NONE")
case SetRoleAll:
ctx.WriteKeyWord(" ALL")
default:
}
for i, role := range n.RoleList {
ctx.WritePlain(" ")
err := role.Restore(ctx)
if err != nil {
return errors.Annotate(err, "An error occurred while restore SetDefaultRoleStmt.RoleList")
}
if i != len(n.RoleList)-1 {
ctx.WritePlain(",")
}
}
ctx.WritePlain(" TO")
for i, user := range n.UserList {
ctx.WritePlain(" ")
err := user.Restore(ctx)
if err != nil {
return errors.Annotate(err, "An error occurred while restore SetDefaultRoleStmt.UserList")
}
if i != len(n.UserList)-1 {
ctx.WritePlain(",")
}
}
return nil
}
// Accept implements Node Accept interface.
func (n *SetDefaultRoleStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*SetDefaultRoleStmt)
return v.Leave(n)
}
// UserSpec is used for parsing create user statement.
type UserSpec struct {
User *auth.UserIdentity
AuthOpt *AuthOption
IsRole bool
}
// Restore implements Node interface.
func (n *UserSpec) Restore(ctx *format.RestoreCtx) error {
if err := n.User.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore UserSpec.User")
}
if n.AuthOpt != nil {
ctx.WritePlain(" ")
if err := n.AuthOpt.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore UserSpec.AuthOpt")
}
}
return nil
}
// SecurityString formats the UserSpec without password information.
func (n *UserSpec) SecurityString() string {
withPassword := false
if opt := n.AuthOpt; opt != nil {
if len(opt.AuthString) > 0 || len(opt.HashString) > 0 {
withPassword = true
}
}
if withPassword {
return fmt.Sprintf("{%s password = ***}", n.User)
}
return n.User.String()
}
type AuthTokenOrTLSOption struct {
Type AuthTokenOrTLSOptionType
Value string
}
func (t *AuthTokenOrTLSOption) Restore(ctx *format.RestoreCtx) error {
switch t.Type {
case TlsNone:
ctx.WriteKeyWord("NONE")
case Ssl:
ctx.WriteKeyWord("SSL")
case X509:
ctx.WriteKeyWord("X509")
case Cipher:
ctx.WriteKeyWord("CIPHER ")
ctx.WriteString(t.Value)
case Issuer:
ctx.WriteKeyWord("ISSUER ")
ctx.WriteString(t.Value)
case Subject:
ctx.WriteKeyWord("SUBJECT ")
ctx.WriteString(t.Value)
case SAN:
ctx.WriteKeyWord("SAN ")
ctx.WriteString(t.Value)
case TokenIssuer:
ctx.WriteKeyWord("TOKEN_ISSUER ")
ctx.WriteString(t.Value)
default:
return errors.Errorf("Unsupported AuthTokenOrTLSOption.Type %d", t.Type)
}
return nil
}
type AuthTokenOrTLSOptionType int
const (
TlsNone AuthTokenOrTLSOptionType = iota
Ssl
X509
Cipher
Issuer
Subject
SAN
TokenIssuer
)
func (t AuthTokenOrTLSOptionType) String() string {
switch t {
case TlsNone:
return "NONE"
case Ssl:
return "SSL"
case X509:
return "X509"
case Cipher:
return "CIPHER"
case Issuer:
return "ISSUER"
case Subject:
return "SUBJECT"
case SAN:
return "SAN"
case TokenIssuer:
return "TOKEN_ISSUER"
default:
return "UNKNOWN"
}
}
const (
MaxQueriesPerHour = iota + 1
MaxUpdatesPerHour
MaxConnectionsPerHour
MaxUserConnections
)
type ResourceOption struct {
Type int
Count int64
}
func (r *ResourceOption) Restore(ctx *format.RestoreCtx) error {
switch r.Type {
case MaxQueriesPerHour:
ctx.WriteKeyWord("MAX_QUERIES_PER_HOUR ")
case MaxUpdatesPerHour:
ctx.WriteKeyWord("MAX_UPDATES_PER_HOUR ")
case MaxConnectionsPerHour:
ctx.WriteKeyWord("MAX_CONNECTIONS_PER_HOUR ")
case MaxUserConnections:
ctx.WriteKeyWord("MAX_USER_CONNECTIONS ")
default:
return errors.Errorf("Unsupported ResourceOption.Type %d", r.Type)
}
ctx.WritePlainf("%d", r.Count)
return nil
}
const (
PasswordExpire = iota + 1
PasswordExpireDefault
PasswordExpireNever
PasswordExpireInterval
PasswordHistory
PasswordHistoryDefault
PasswordReuseInterval
PasswordReuseDefault
Lock
Unlock
FailedLoginAttempts
PasswordLockTime
PasswordLockTimeUnbounded
UserCommentType
UserAttributeType
PasswordRequireCurrentDefault
UserResourceGroupName
)
type PasswordOrLockOption struct {
Type int
Count int64
}
func (p *PasswordOrLockOption) Restore(ctx *format.RestoreCtx) error {
switch p.Type {
case PasswordExpire:
ctx.WriteKeyWord("PASSWORD EXPIRE")
case PasswordExpireDefault:
ctx.WriteKeyWord("PASSWORD EXPIRE DEFAULT")
case PasswordExpireNever:
ctx.WriteKeyWord("PASSWORD EXPIRE NEVER")
case PasswordExpireInterval:
ctx.WriteKeyWord("PASSWORD EXPIRE INTERVAL")
ctx.WritePlainf(" %d", p.Count)
ctx.WriteKeyWord(" DAY")
case Lock:
ctx.WriteKeyWord("ACCOUNT LOCK")
case Unlock:
ctx.WriteKeyWord("ACCOUNT UNLOCK")
case FailedLoginAttempts:
ctx.WriteKeyWord("FAILED_LOGIN_ATTEMPTS")
ctx.WritePlainf(" %d", p.Count)
case PasswordLockTime:
ctx.WriteKeyWord("PASSWORD_LOCK_TIME")
ctx.WritePlainf(" %d", p.Count)
case PasswordLockTimeUnbounded:
ctx.WriteKeyWord("PASSWORD_LOCK_TIME UNBOUNDED")
case PasswordHistory:
ctx.WriteKeyWord("PASSWORD HISTORY")
ctx.WritePlainf(" %d", p.Count)
case PasswordHistoryDefault:
ctx.WriteKeyWord("PASSWORD HISTORY DEFAULT")
case PasswordReuseInterval:
ctx.WriteKeyWord("PASSWORD REUSE INTERVAL")
ctx.WritePlainf(" %d", p.Count)
ctx.WriteKeyWord(" DAY")
case PasswordReuseDefault:
ctx.WriteKeyWord("PASSWORD REUSE INTERVAL DEFAULT")
default:
return errors.Errorf("Unsupported PasswordOrLockOption.Type %d", p.Type)
}
return nil
}
type CommentOrAttributeOption struct {
Type int
Value string
}
func (c *CommentOrAttributeOption) Restore(ctx *format.RestoreCtx) error {
if c.Type == UserCommentType {
ctx.WriteKeyWord(" COMMENT ")
ctx.WriteString(c.Value)
} else if c.Type == UserAttributeType {
ctx.WriteKeyWord(" ATTRIBUTE ")
ctx.WriteString(c.Value)
}
return nil
}
type ResourceGroupNameOption struct {
Value string
}
func (c *ResourceGroupNameOption) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord(" RESOURCE GROUP ")
ctx.WriteName(c.Value)
return nil
}
// CreateUserStmt creates user account.
// See https://dev.mysql.com/doc/refman/8.0/en/create-user.html
type CreateUserStmt struct {
stmtNode
IsCreateRole bool
IfNotExists bool
Specs []*UserSpec
AuthTokenOrTLSOptions []*AuthTokenOrTLSOption
ResourceOptions []*ResourceOption
PasswordOrLockOptions []*PasswordOrLockOption
CommentOrAttributeOption *CommentOrAttributeOption
ResourceGroupNameOption *ResourceGroupNameOption
}
// Restore implements Node interface.
func (n *CreateUserStmt) Restore(ctx *format.RestoreCtx) error {
if n.IsCreateRole {
ctx.WriteKeyWord("CREATE ROLE ")
} else {
ctx.WriteKeyWord("CREATE USER ")
}
if n.IfNotExists {
ctx.WriteKeyWord("IF NOT EXISTS ")
}
for i, v := range n.Specs {
if i != 0 {
ctx.WritePlain(", ")
}
if err := v.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore CreateUserStmt.Specs[%d]", i)
}
}
if len(n.AuthTokenOrTLSOptions) != 0 {
ctx.WriteKeyWord(" REQUIRE ")
}
for i, option := range n.AuthTokenOrTLSOptions {
if i != 0 {
ctx.WriteKeyWord(" AND ")
}
if err := option.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore CreateUserStmt.AuthTokenOrTLSOptions[%d]", i)
}
}
if len(n.ResourceOptions) != 0 {
ctx.WriteKeyWord(" WITH")
}
for i, v := range n.ResourceOptions {
ctx.WritePlain(" ")
if err := v.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore CreateUserStmt.ResourceOptions[%d]", i)
}
}
for i, v := range n.PasswordOrLockOptions {
ctx.WritePlain(" ")
if err := v.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore CreateUserStmt.PasswordOrLockOptions[%d]", i)
}
}
if n.CommentOrAttributeOption != nil {
if err := n.CommentOrAttributeOption.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore CreateUserStmt.CommentOrAttributeOption")
}
}
if n.ResourceGroupNameOption != nil {
if err := n.ResourceGroupNameOption.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore CreateUserStmt.ResourceGroupNameOption")
}
}
return nil
}
// Accept implements Node Accept interface.
func (n *CreateUserStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*CreateUserStmt)
return v.Leave(n)
}
// SecureText implements SensitiveStatement interface.
func (n *CreateUserStmt) SecureText() string {
var buf bytes.Buffer
buf.WriteString("create user")
for _, user := range n.Specs {
buf.WriteString(" ")
buf.WriteString(user.SecurityString())
}
return buf.String()
}
// AlterUserStmt modifies user account.
// See https://dev.mysql.com/doc/refman/8.0/en/alter-user.html
type AlterUserStmt struct {
stmtNode
IfExists bool
CurrentAuth *AuthOption
Specs []*UserSpec
AuthTokenOrTLSOptions []*AuthTokenOrTLSOption
ResourceOptions []*ResourceOption
PasswordOrLockOptions []*PasswordOrLockOption
CommentOrAttributeOption *CommentOrAttributeOption
ResourceGroupNameOption *ResourceGroupNameOption
}
// Restore implements Node interface.
func (n *AlterUserStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("ALTER USER ")
if n.IfExists {
ctx.WriteKeyWord("IF EXISTS ")
}
if n.CurrentAuth != nil {
ctx.WriteKeyWord("USER")
ctx.WritePlain("() ")
if err := n.CurrentAuth.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore AlterUserStmt.CurrentAuth")
}
}
for i, v := range n.Specs {
if i != 0 {
ctx.WritePlain(", ")
}
if err := v.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore AlterUserStmt.Specs[%d]", i)
}
}
if len(n.AuthTokenOrTLSOptions) != 0 {
ctx.WriteKeyWord(" REQUIRE ")
}
for i, option := range n.AuthTokenOrTLSOptions {
if i != 0 {
ctx.WriteKeyWord(" AND ")
}
if err := option.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore AlterUserStmt.AuthTokenOrTLSOptions[%d]", i)
}
}
if len(n.ResourceOptions) != 0 {
ctx.WriteKeyWord(" WITH")
}
for i, v := range n.ResourceOptions {
ctx.WritePlain(" ")
if err := v.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore AlterUserStmt.ResourceOptions[%d]", i)
}
}
for i, v := range n.PasswordOrLockOptions {
ctx.WritePlain(" ")
if err := v.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore AlterUserStmt.PasswordOrLockOptions[%d]", i)
}
}
if n.CommentOrAttributeOption != nil {
if err := n.CommentOrAttributeOption.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore AlterUserStmt.CommentOrAttributeOption")
}
}
if n.ResourceGroupNameOption != nil {
if err := n.ResourceGroupNameOption.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore AlterUserStmt.ResourceGroupNameOption")
}
}
return nil
}
// SecureText implements SensitiveStatement interface.
func (n *AlterUserStmt) SecureText() string {
var buf bytes.Buffer
buf.WriteString("alter user")
for _, user := range n.Specs {
buf.WriteString(" ")
buf.WriteString(user.SecurityString())
}
return buf.String()
}
// Accept implements Node Accept interface.
func (n *AlterUserStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*AlterUserStmt)
return v.Leave(n)
}
// AlterInstanceStmt modifies instance.
// See https://dev.mysql.com/doc/refman/8.0/en/alter-instance.html
type AlterInstanceStmt struct {
stmtNode
ReloadTLS bool
NoRollbackOnError bool
}
// Restore implements Node interface.
func (n *AlterInstanceStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("ALTER INSTANCE")
if n.ReloadTLS {
ctx.WriteKeyWord(" RELOAD TLS")
}
if n.NoRollbackOnError {
ctx.WriteKeyWord(" NO ROLLBACK ON ERROR")
}
return nil
}
// Accept implements Node Accept interface.
func (n *AlterInstanceStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*AlterInstanceStmt)
return v.Leave(n)
}
// AlterRangeStmt modifies range configuration.
type AlterRangeStmt struct {
stmtNode
RangeName CIStr
PlacementOption *PlacementOption
}
// Restore implements Node interface.
func (n *AlterRangeStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("ALTER RANGE ")
ctx.WriteName(n.RangeName.O)
ctx.WritePlain(" ")
if err := n.PlacementOption.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore AlterRangeStmt.PlacementOption")
}
return nil
}
// Accept implements Node Accept interface.
func (n *AlterRangeStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*AlterRangeStmt)
return v.Leave(n)
}
// DropUserStmt creates user account.
// See http://dev.mysql.com/doc/refman/5.7/en/drop-user.html
type DropUserStmt struct {
stmtNode
IfExists bool
IsDropRole bool
UserList []*auth.UserIdentity
}
// Restore implements Node interface.
func (n *DropUserStmt) Restore(ctx *format.RestoreCtx) error {
if n.IsDropRole {
ctx.WriteKeyWord("DROP ROLE ")
} else {
ctx.WriteKeyWord("DROP USER ")
}
if n.IfExists {
ctx.WriteKeyWord("IF EXISTS ")
}
for i, v := range n.UserList {
if i != 0 {
ctx.WritePlain(", ")
}
if err := v.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore DropUserStmt.UserList[%d]", i)
}
}
return nil
}
// Accept implements Node Accept interface.
func (n *DropUserStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*DropUserStmt)
return v.Leave(n)
}
type StringOrUserVar struct {
node
StringLit string
UserVar *VariableExpr
}
func (n *StringOrUserVar) Restore(ctx *format.RestoreCtx) error {
if len(n.StringLit) > 0 {
ctx.WriteString(n.StringLit)
}
if n.UserVar != nil {
if err := n.UserVar.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore ColumnNameOrUserVar.UserVar")
}
}
return nil
}
func (n *StringOrUserVar) Accept(v Visitor) (node Node, ok bool) {
newNode, skipChild := v.Enter(n)
if skipChild {
return v.Leave(newNode)
}
n = newNode.(*StringOrUserVar)
if n.UserVar != nil {
node, ok = n.UserVar.Accept(v)
if !ok {
return node, false
}
n.UserVar = node.(*VariableExpr)
}
return v.Leave(n)
}
// RecommendIndexOption is the option for recommend index.
type RecommendIndexOption struct {
Option string
Value ValueExpr
}
// RecommendIndexStmt is a statement to recommend index.
type RecommendIndexStmt struct {
stmtNode
Action string
SQL string
ID int64
Options []RecommendIndexOption
}
func (n *RecommendIndexStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("RECOMMEND INDEX")
switch n.Action {
case "run":
ctx.WriteKeyWord(" RUN")
if n.SQL != "" {
ctx.WriteKeyWord(" FOR ")
ctx.WriteString(n.SQL)
}
if len(n.Options) > 0 {
ctx.WriteKeyWord(" WITH ")
for i, opt := range n.Options {
if i != 0 {
ctx.WritePlain(", ")
}
ctx.WriteKeyWord(opt.Option)
ctx.WritePlain(" = ")
if err := opt.Value.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore RecommendIndexStmt.Options[%d]", i)
}
}
}
case "show":
ctx.WriteKeyWord(" SHOW OPTION")
case "apply":
ctx.WriteKeyWord(" APPLY ")
ctx.WriteKeyWord(fmt.Sprintf("%d", n.ID))
case "ignore":
ctx.WriteKeyWord(" IGNORE ")
ctx.WriteKeyWord(fmt.Sprintf("%d", n.ID))
case "set":
ctx.WriteKeyWord(" SET ")
for i, opt := range n.Options {
if i != 0 {
ctx.WritePlain(", ")
}
ctx.WriteKeyWord(opt.Option)
ctx.WritePlain(" = ")
if err := opt.Value.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore RecommendIndexStmt.Options[%d]", i)
}
}
}
return nil
}
func (n *RecommendIndexStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*RecommendIndexStmt)
return v.Leave(n)
}
// CreateBindingStmt creates sql binding hint.
type CreateBindingStmt struct {
stmtNode
GlobalScope bool
OriginNode StmtNode
HintedNode StmtNode
PlanDigests []*StringOrUserVar
}
func (n *CreateBindingStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("CREATE ")
if n.GlobalScope {
ctx.WriteKeyWord("GLOBAL ")
} else {
ctx.WriteKeyWord("SESSION ")
}
if n.OriginNode == nil {
ctx.WriteKeyWord("BINDING FROM HISTORY USING PLAN DIGEST ")
for i, v := range n.PlanDigests {
if i != 0 {
ctx.WritePlain(", ")
}
if err := v.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore CreateBindingStmt.PlanDigests[%d]", i)
}
}
} else {
ctx.WriteKeyWord("BINDING FOR ")
if err := n.OriginNode.Restore(ctx); err != nil {
return errors.Trace(err)
}
ctx.WriteKeyWord(" USING ")
if err := n.HintedNode.Restore(ctx); err != nil {
return errors.Trace(err)
}
}
return nil
}
func (n *CreateBindingStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*CreateBindingStmt)
if n.OriginNode != nil {
origNode, ok := n.OriginNode.Accept(v)
if !ok {
return n, false
}
n.OriginNode = origNode.(StmtNode)
hintedNode, ok := n.HintedNode.Accept(v)
if !ok {
return n, false
}
n.HintedNode = hintedNode.(StmtNode)
} else {
for i, digest := range n.PlanDigests {
newDigest, ok := digest.Accept(v)
if !ok {
return n, false
}
n.PlanDigests[i] = newDigest.(*StringOrUserVar)
}
}
return v.Leave(n)
}
// DropBindingStmt deletes sql binding hint.
type DropBindingStmt struct {
stmtNode
GlobalScope bool
OriginNode StmtNode
HintedNode StmtNode
SQLDigests []*StringOrUserVar
}
func (n *DropBindingStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("DROP ")
if n.GlobalScope {
ctx.WriteKeyWord("GLOBAL ")
} else {
ctx.WriteKeyWord("SESSION ")
}
ctx.WriteKeyWord("BINDING FOR ")
if n.OriginNode == nil {
ctx.WriteKeyWord("SQL DIGEST ")
for i, v := range n.SQLDigests {
if i != 0 {
ctx.WritePlain(", ")
}
if err := v.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore CreateBindingStmt.PlanDigests[%d]", i)
}
}
} else {
if err := n.OriginNode.Restore(ctx); err != nil {
return errors.Trace(err)
}
if n.HintedNode != nil {
ctx.WriteKeyWord(" USING ")
if err := n.HintedNode.Restore(ctx); err != nil {
return errors.Trace(err)
}
}
}
return nil
}
func (n *DropBindingStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*DropBindingStmt)
if n.OriginNode != nil {
// OriginNode is nil means we build drop binding by sql digest
origNode, ok := n.OriginNode.Accept(v)
if !ok {
return n, false
}
n.OriginNode = origNode.(StmtNode)
if n.HintedNode != nil {
hintedNode, ok := n.HintedNode.Accept(v)
if !ok {
return n, false
}
n.HintedNode = hintedNode.(StmtNode)
}
} else {
for i, digest := range n.SQLDigests {
newDigest, ok := digest.Accept(v)
if !ok {
return n, false
}
n.SQLDigests[i] = newDigest.(*StringOrUserVar)
}
}
return v.Leave(n)
}
// BindingStatusType defines the status type for the binding
type BindingStatusType int8
// Binding status types.
const (
BindingStatusTypeEnabled BindingStatusType = iota
BindingStatusTypeDisabled
)
// SetBindingStmt sets sql binding status.
type SetBindingStmt struct {
stmtNode
BindingStatusType BindingStatusType
OriginNode StmtNode
HintedNode StmtNode
SQLDigest string
}
func (n *SetBindingStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("SET ")
ctx.WriteKeyWord("BINDING ")
switch n.BindingStatusType {
case BindingStatusTypeEnabled:
ctx.WriteKeyWord("ENABLED ")
case BindingStatusTypeDisabled:
ctx.WriteKeyWord("DISABLED ")
}
ctx.WriteKeyWord("FOR ")
if n.OriginNode == nil {
ctx.WriteKeyWord("SQL DIGEST ")
ctx.WriteString(n.SQLDigest)
} else {
if err := n.OriginNode.Restore(ctx); err != nil {
return errors.Trace(err)
}
if n.HintedNode != nil {
ctx.WriteKeyWord(" USING ")
if err := n.HintedNode.Restore(ctx); err != nil {
return errors.Trace(err)
}
}
}
return nil
}
func (n *SetBindingStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*SetBindingStmt)
if n.OriginNode != nil {
// OriginNode is nil means we set binding stmt by sql digest
origNode, ok := n.OriginNode.Accept(v)
if !ok {
return n, false
}
n.OriginNode = origNode.(StmtNode)
if n.HintedNode != nil {
hintedNode, ok := n.HintedNode.Accept(v)
if !ok {
return n, false
}
n.HintedNode = hintedNode.(StmtNode)
}
}
return v.Leave(n)
}
// Extended statistics types.
const (
StatsTypeCardinality uint8 = iota
StatsTypeDependency
StatsTypeCorrelation
)
// StatisticsSpec is the specification for ADD /DROP STATISTICS.
type StatisticsSpec struct {
StatsName string
StatsType uint8
Columns []*ColumnName
}
// CreateStatisticsStmt is a statement to create extended statistics.
// Examples:
//
// CREATE STATISTICS stats1 (cardinality) ON t(a, b, c);
// CREATE STATISTICS stats2 (dependency) ON t(a, b);
// CREATE STATISTICS stats3 (correlation) ON t(a, b);
type CreateStatisticsStmt struct {
stmtNode
IfNotExists bool
StatsName string
StatsType uint8
Table *TableName
Columns []*ColumnName
}
// Restore implements Node interface.
func (n *CreateStatisticsStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("CREATE STATISTICS ")
if n.IfNotExists {
ctx.WriteKeyWord("IF NOT EXISTS ")
}
ctx.WriteName(n.StatsName)
switch n.StatsType {
case StatsTypeCardinality:
ctx.WriteKeyWord(" (cardinality) ")
case StatsTypeDependency:
ctx.WriteKeyWord(" (dependency) ")
case StatsTypeCorrelation:
ctx.WriteKeyWord(" (correlation) ")
}
ctx.WriteKeyWord("ON ")
if err := n.Table.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore CreateStatisticsStmt.Table")
}
ctx.WritePlain("(")
for i, col := range n.Columns {
if i != 0 {
ctx.WritePlain(", ")
}
if err := col.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore CreateStatisticsStmt.Columns: [%v]", i)
}
}
ctx.WritePlain(")")
return nil
}
// Accept implements Node Accept interface.
func (n *CreateStatisticsStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*CreateStatisticsStmt)
node, ok := n.Table.Accept(v)
if !ok {
return n, false
}
n.Table = node.(*TableName)
for i, col := range n.Columns {
node, ok = col.Accept(v)
if !ok {
return n, false
}
n.Columns[i] = node.(*ColumnName)
}
return v.Leave(n)
}
// DropStatisticsStmt is a statement to drop extended statistics.
// Examples:
//
// DROP STATISTICS stats1;
type DropStatisticsStmt struct {
stmtNode
StatsName string
}
// Restore implements Node interface.
func (n *DropStatisticsStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("DROP STATISTICS ")
ctx.WriteName(n.StatsName)
return nil
}
// Accept implements Node Accept interface.
func (n *DropStatisticsStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*DropStatisticsStmt)
return v.Leave(n)
}
// DoStmt is the struct for DO statement.
type DoStmt struct {
stmtNode
Exprs []ExprNode
}
// Restore implements Node interface.
func (n *DoStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("DO ")
for i, v := range n.Exprs {
if i != 0 {
ctx.WritePlain(", ")
}
if err := v.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore DoStmt.Exprs[%d]", i)
}
}
return nil
}
// Accept implements Node Accept interface.
func (n *DoStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*DoStmt)
for i, val := range n.Exprs {
node, ok := val.Accept(v)
if !ok {
return n, false
}
n.Exprs[i] = node.(ExprNode)
}
return v.Leave(n)
}
// AdminStmtType is the type for admin statement.
type AdminStmtType int
// Admin statement types.
const (
AdminShowDDL AdminStmtType = iota + 1
AdminCheckTable
AdminShowDDLJobs
AdminCancelDDLJobs
AdminPauseDDLJobs
AdminResumeDDLJobs
AdminCheckIndex
AdminRecoverIndex
AdminCleanupIndex
AdminCheckIndexRange
AdminShowDDLJobQueries
AdminShowDDLJobQueriesWithRange
AdminChecksumTable
AdminShowSlow
AdminShowNextRowID
AdminReloadExprPushdownBlacklist
AdminReloadOptRuleBlacklist
AdminPluginDisable
AdminPluginEnable
AdminFlushBindings
AdminCaptureBindings
AdminEvolveBindings
AdminReloadBindings
AdminReloadStatistics
AdminFlushPlanCache
AdminSetBDRRole
AdminShowBDRRole
AdminUnsetBDRRole
AdminAlterDDLJob
AdminWorkloadRepoCreate
// adminTpCount is the total number of admin statement types.
adminTpCount
)
// HandleRange represents a range where handle value >= Begin and < End.
type HandleRange struct {
Begin int64
End int64
}
// BDRRole represents the role of the cluster in BDR mode.
type BDRRole string
const (
BDRRolePrimary BDRRole = "primary"
BDRRoleSecondary BDRRole = "secondary"
BDRRoleNone BDRRole = ""
)
type StatementScope int
const (
StatementScopeNone StatementScope = iota
StatementScopeSession
StatementScopeInstance
StatementScopeGlobal
)
// ShowSlowType defines the type for SlowSlow statement.
type ShowSlowType int
const (
// ShowSlowTop is a ShowSlowType constant.
ShowSlowTop ShowSlowType = iota
// ShowSlowRecent is a ShowSlowType constant.
ShowSlowRecent
)
// ShowSlowKind defines the kind for SlowSlow statement when the type is ShowSlowTop.
type ShowSlowKind int
const (
// ShowSlowKindDefault is a ShowSlowKind constant.
ShowSlowKindDefault ShowSlowKind = iota
// ShowSlowKindInternal is a ShowSlowKind constant.
ShowSlowKindInternal
// ShowSlowKindAll is a ShowSlowKind constant.
ShowSlowKindAll
)
// ShowSlow is used for the following command:
//
// admin show slow top [ internal | all] N
// admin show slow recent N
type ShowSlow struct {
Tp ShowSlowType
Count uint64
Kind ShowSlowKind
}
// Restore implements Node interface.
func (n *ShowSlow) Restore(ctx *format.RestoreCtx) error {
switch n.Tp {
case ShowSlowRecent:
ctx.WriteKeyWord("RECENT ")
case ShowSlowTop:
ctx.WriteKeyWord("TOP ")
switch n.Kind {
case ShowSlowKindDefault:
// do nothing
case ShowSlowKindInternal:
ctx.WriteKeyWord("INTERNAL ")
case ShowSlowKindAll:
ctx.WriteKeyWord("ALL ")
default:
return errors.New("Unsupported kind of ShowSlowTop")
}
default:
return errors.New("Unsupported type of ShowSlow")
}
ctx.WritePlainf("%d", n.Count)
return nil
}
// LimitSimple is the struct for Admin statement limit option.
type LimitSimple struct {
Count uint64
Offset uint64
}
type AlterJobOption struct {
// Name is the name of the option, will be converted to lower case during parse.
Name string
// only literal is allowed, we use ExprNode to support negative number
Value ExprNode
}
func (l *AlterJobOption) Restore(ctx *format.RestoreCtx) error {
if l.Value == nil {
ctx.WritePlain(l.Name)
} else {
ctx.WritePlain(l.Name + " = ")
if err := l.Value.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore AlterJobOption")
}
}
return nil
}
// AdminStmt is the struct for Admin statement.
type AdminStmt struct {
stmtNode
Tp AdminStmtType
Index string
Tables []*TableName
JobIDs []int64
JobNumber int64
HandleRanges []HandleRange
ShowSlow *ShowSlow
Plugins []string
Where ExprNode
StatementScope StatementScope
LimitSimple LimitSimple
BDRRole BDRRole
AlterJobOptions []*AlterJobOption
}
// Restore implements Node interface.
func (n *AdminStmt) Restore(ctx *format.RestoreCtx) error {
restoreTables := func() error {
for i, v := range n.Tables {
if i != 0 {
ctx.WritePlain(", ")
}
if err := v.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore AdminStmt.Tables[%d]", i)
}
}
return nil
}
restoreJobIDs := func() {
for i, v := range n.JobIDs {
if i != 0 {
ctx.WritePlain(", ")
}
ctx.WritePlainf("%d", v)
}
}
ctx.WriteKeyWord("ADMIN ")
switch n.Tp {
case AdminShowDDL:
ctx.WriteKeyWord("SHOW DDL")
case AdminShowDDLJobs:
ctx.WriteKeyWord("SHOW DDL JOBS")
if n.JobNumber != 0 {
ctx.WritePlainf(" %d", n.JobNumber)
}
if n.Where != nil {
ctx.WriteKeyWord(" WHERE ")
if err := n.Where.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore ShowStmt.Where")
}
}
case AdminShowNextRowID:
ctx.WriteKeyWord("SHOW ")
if err := restoreTables(); err != nil {
return err
}
ctx.WriteKeyWord(" NEXT_ROW_ID")
case AdminCheckTable:
ctx.WriteKeyWord("CHECK TABLE ")
if err := restoreTables(); err != nil {
return err
}
case AdminCheckIndex:
ctx.WriteKeyWord("CHECK INDEX ")
if err := restoreTables(); err != nil {
return err
}
ctx.WritePlainf(" %s", n.Index)
case AdminRecoverIndex:
ctx.WriteKeyWord("RECOVER INDEX ")
if err := restoreTables(); err != nil {
return err
}
ctx.WritePlainf(" %s", n.Index)
case AdminCleanupIndex:
ctx.WriteKeyWord("CLEANUP INDEX ")
if err := restoreTables(); err != nil {
return err
}
ctx.WritePlainf(" %s", n.Index)
case AdminCheckIndexRange:
ctx.WriteKeyWord("CHECK INDEX ")
if err := restoreTables(); err != nil {
return err
}
ctx.WritePlainf(" %s", n.Index)
if n.HandleRanges != nil {
ctx.WritePlain(" ")
for i, v := range n.HandleRanges {
if i != 0 {
ctx.WritePlain(", ")
}
ctx.WritePlainf("(%d,%d)", v.Begin, v.End)
}
}
case AdminChecksumTable:
ctx.WriteKeyWord("CHECKSUM TABLE ")
if err := restoreTables(); err != nil {
return err
}
case AdminCancelDDLJobs:
ctx.WriteKeyWord("CANCEL DDL JOBS ")
restoreJobIDs()
case AdminPauseDDLJobs:
ctx.WriteKeyWord("PAUSE DDL JOBS ")
restoreJobIDs()
case AdminResumeDDLJobs:
ctx.WriteKeyWord("RESUME DDL JOBS ")
restoreJobIDs()
case AdminShowDDLJobQueries:
ctx.WriteKeyWord("SHOW DDL JOB QUERIES ")
restoreJobIDs()
case AdminShowDDLJobQueriesWithRange:
ctx.WriteKeyWord("SHOW DDL JOB QUERIES LIMIT ")
ctx.WritePlainf("%d, %d", n.LimitSimple.Offset, n.LimitSimple.Count)
case AdminShowSlow:
ctx.WriteKeyWord("SHOW SLOW ")
if err := n.ShowSlow.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore AdminStmt.ShowSlow")
}
case AdminReloadExprPushdownBlacklist:
ctx.WriteKeyWord("RELOAD EXPR_PUSHDOWN_BLACKLIST")
case AdminReloadOptRuleBlacklist:
ctx.WriteKeyWord("RELOAD OPT_RULE_BLACKLIST")
case AdminPluginEnable:
ctx.WriteKeyWord("PLUGINS ENABLE")
for i, v := range n.Plugins {
if i == 0 {
ctx.WritePlain(" ")
} else {
ctx.WritePlain(", ")
}
ctx.WritePlain(v)
}
case AdminPluginDisable:
ctx.WriteKeyWord("PLUGINS DISABLE")
for i, v := range n.Plugins {
if i == 0 {
ctx.WritePlain(" ")
} else {
ctx.WritePlain(", ")
}
ctx.WritePlain(v)
}
case AdminFlushBindings:
ctx.WriteKeyWord("FLUSH BINDINGS")
case AdminCaptureBindings:
ctx.WriteKeyWord("CAPTURE BINDINGS")
case AdminEvolveBindings:
ctx.WriteKeyWord("EVOLVE BINDINGS")
case AdminReloadBindings:
ctx.WriteKeyWord("RELOAD BINDINGS")
case AdminReloadStatistics:
ctx.WriteKeyWord("RELOAD STATS_EXTENDED")
case AdminFlushPlanCache:
if n.StatementScope == StatementScopeSession {
ctx.WriteKeyWord("FLUSH SESSION PLAN_CACHE")
} else if n.StatementScope == StatementScopeInstance {
ctx.WriteKeyWord("FLUSH INSTANCE PLAN_CACHE")
} else if n.StatementScope == StatementScopeGlobal {
ctx.WriteKeyWord("FLUSH GLOBAL PLAN_CACHE")
}
case AdminSetBDRRole:
switch n.BDRRole {
case BDRRolePrimary:
ctx.WriteKeyWord("SET BDR ROLE PRIMARY")
case BDRRoleSecondary:
ctx.WriteKeyWord("SET BDR ROLE SECONDARY")
default:
return errors.New("Unsupported BDR role")
}
case AdminShowBDRRole:
ctx.WriteKeyWord("SHOW BDR ROLE")
case AdminUnsetBDRRole:
ctx.WriteKeyWord("UNSET BDR ROLE")
case AdminAlterDDLJob:
ctx.WriteKeyWord("ALTER DDL JOBS ")
ctx.WritePlainf("%d", n.JobNumber)
for i, option := range n.AlterJobOptions {
if i != 0 {
ctx.WritePlain(",")
}
ctx.WritePlain(" ")
if err := option.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore AdminStmt.AlterJobOptions[%d]", i)
}
}
case AdminWorkloadRepoCreate:
ctx.WriteKeyWord("CREATE WORKLOAD SNAPSHOT")
default:
return errors.New("Unsupported AdminStmt type")
}
return nil
}
// Accept implements Node Accept interface.
func (n *AdminStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*AdminStmt)
for i, val := range n.Tables {
node, ok := val.Accept(v)
if !ok {
return n, false
}
n.Tables[i] = node.(*TableName)
}
if n.Where != nil {
node, ok := n.Where.Accept(v)
if !ok {
return n, false
}
n.Where = node.(ExprNode)
}
return v.Leave(n)
}
// RoleOrPriv is a temporary structure to be further processed into auth.RoleIdentity or PrivElem
type RoleOrPriv struct {
Symbols string // hold undecided symbols
Node any // hold auth.RoleIdentity or PrivElem that can be sure when parsing
}
func (n *RoleOrPriv) ToRole() (*auth.RoleIdentity, error) {
if n.Node != nil {
if r, ok := n.Node.(*auth.RoleIdentity); ok {
return r, nil
}
return nil, errors.Errorf("can't convert to RoleIdentity, type %T", n.Node)
}
return &auth.RoleIdentity{Username: n.Symbols, Hostname: "%"}, nil
}
func (n *RoleOrPriv) ToPriv() (*PrivElem, error) {
if n.Node != nil {
if p, ok := n.Node.(*PrivElem); ok {
return p, nil
}
return nil, errors.Errorf("can't convert to PrivElem, type %T", n.Node)
}
if len(n.Symbols) == 0 {
return nil, errors.New("symbols should not be length 0")
}
return &PrivElem{Priv: mysql.ExtendedPriv, Name: n.Symbols}, nil
}
// PrivElem is the privilege type and optional column list.
type PrivElem struct {
node
Priv mysql.PrivilegeType
Cols []*ColumnName
Name string
}
// Restore implements Node interface.
func (n *PrivElem) Restore(ctx *format.RestoreCtx) error {
if n.Priv == mysql.AllPriv {
ctx.WriteKeyWord("ALL")
} else if n.Priv == mysql.ExtendedPriv {
ctx.WriteKeyWord(n.Name)
} else {
str, ok := mysql.Priv2Str[n.Priv]
if !ok {
return errors.New("Undefined privilege type")
}
ctx.WriteKeyWord(str)
}
if n.Cols != nil {
ctx.WritePlain(" (")
for i, v := range n.Cols {
if i != 0 {
ctx.WritePlain(",")
}
if err := v.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore PrivElem.Cols[%d]", i)
}
}
ctx.WritePlain(")")
}
return nil
}
// Accept implements Node Accept interface.
func (n *PrivElem) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*PrivElem)
for i, val := range n.Cols {
node, ok := val.Accept(v)
if !ok {
return n, false
}
n.Cols[i] = node.(*ColumnName)
}
return v.Leave(n)
}
// ObjectTypeType is the type for object type.
type ObjectTypeType int
const (
// ObjectTypeNone is for empty object type.
ObjectTypeNone ObjectTypeType = iota + 1
// ObjectTypeTable means the following object is a table.
ObjectTypeTable
// ObjectTypeFunction means the following object is a stored function.
ObjectTypeFunction
// ObjectTypeProcedure means the following object is a stored procedure.
ObjectTypeProcedure
)
// Restore implements Node interface.
func (n ObjectTypeType) Restore(ctx *format.RestoreCtx) error {
switch n {
case ObjectTypeNone:
// do nothing
case ObjectTypeTable:
ctx.WriteKeyWord("TABLE")
case ObjectTypeFunction:
ctx.WriteKeyWord("FUNCTION")
case ObjectTypeProcedure:
ctx.WriteKeyWord("PROCEDURE")
default:
return errors.New("Unsupported object type")
}
return nil
}
// GrantLevelType is the type for grant level.
type GrantLevelType int
const (
// GrantLevelNone is the dummy const for default value.
GrantLevelNone GrantLevelType = iota + 1
// GrantLevelGlobal means the privileges are administrative or apply to all databases on a given server.
GrantLevelGlobal
// GrantLevelDB means the privileges apply to all objects in a given database.
GrantLevelDB
// GrantLevelTable means the privileges apply to all columns in a given table.
GrantLevelTable
)
// GrantLevel is used for store the privilege scope.
type GrantLevel struct {
Level GrantLevelType
DBName string
TableName string
}
// Restore implements Node interface.
func (n *GrantLevel) Restore(ctx *format.RestoreCtx) error {
switch n.Level {
case GrantLevelDB:
if n.DBName == "" {
ctx.WritePlain("*")
} else {
ctx.WriteName(n.DBName)
ctx.WritePlain(".*")
}
case GrantLevelGlobal:
ctx.WritePlain("*.*")
case GrantLevelTable:
if n.DBName != "" {
ctx.WriteName(n.DBName)
ctx.WritePlain(".")
}
ctx.WriteName(n.TableName)
}
return nil
}
// RevokeStmt is the struct for REVOKE statement.
type RevokeStmt struct {
stmtNode
Privs []*PrivElem
ObjectType ObjectTypeType
Level *GrantLevel
Users []*UserSpec
}
// Restore implements Node interface.
func (n *RevokeStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("REVOKE ")
for i, v := range n.Privs {
if i != 0 {
ctx.WritePlain(", ")
}
if err := v.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore RevokeStmt.Privs[%d]", i)
}
}
ctx.WriteKeyWord(" ON ")
if n.ObjectType != ObjectTypeNone {
if err := n.ObjectType.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore RevokeStmt.ObjectType")
}
ctx.WritePlain(" ")
}
if err := n.Level.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore RevokeStmt.Level")
}
ctx.WriteKeyWord(" FROM ")
for i, v := range n.Users {
if i != 0 {
ctx.WritePlain(", ")
}
if err := v.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore RevokeStmt.Users[%d]", i)
}
}
return nil
}
// Accept implements Node Accept interface.
func (n *RevokeStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*RevokeStmt)
for i, val := range n.Privs {
node, ok := val.Accept(v)
if !ok {
return n, false
}
n.Privs[i] = node.(*PrivElem)
}
return v.Leave(n)
}
// RevokeStmt is the struct for REVOKE statement.
type RevokeRoleStmt struct {
stmtNode
Roles []*auth.RoleIdentity
Users []*auth.UserIdentity
}
// Restore implements Node interface.
func (n *RevokeRoleStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("REVOKE ")
for i, role := range n.Roles {
if i != 0 {
ctx.WritePlain(", ")
}
if err := role.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore RevokeRoleStmt.Roles[%d]", i)
}
}
ctx.WriteKeyWord(" FROM ")
for i, v := range n.Users {
if i != 0 {
ctx.WritePlain(", ")
}
if err := v.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore RevokeRoleStmt.Users[%d]", i)
}
}
return nil
}
// Accept implements Node Accept interface.
func (n *RevokeRoleStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*RevokeRoleStmt)
return v.Leave(n)
}
// GrantStmt is the struct for GRANT statement.
type GrantStmt struct {
stmtNode
Privs []*PrivElem
ObjectType ObjectTypeType
Level *GrantLevel
Users []*UserSpec
AuthTokenOrTLSOptions []*AuthTokenOrTLSOption
WithGrant bool
}
// Restore implements Node interface.
func (n *GrantStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("GRANT ")
for i, v := range n.Privs {
if i != 0 && v.Priv != 0 {
ctx.WritePlain(", ")
} else if v.Priv == 0 {
ctx.WritePlain(" ")
}
if err := v.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore GrantStmt.Privs[%d]", i)
}
}
ctx.WriteKeyWord(" ON ")
if n.ObjectType != ObjectTypeNone {
if err := n.ObjectType.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore GrantStmt.ObjectType")
}
ctx.WritePlain(" ")
}
if err := n.Level.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore GrantStmt.Level")
}
ctx.WriteKeyWord(" TO ")
for i, v := range n.Users {
if i != 0 {
ctx.WritePlain(", ")
}
if err := v.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore GrantStmt.Users[%d]", i)
}
}
if n.AuthTokenOrTLSOptions != nil {
if len(n.AuthTokenOrTLSOptions) != 0 {
ctx.WriteKeyWord(" REQUIRE ")
}
for i, option := range n.AuthTokenOrTLSOptions {
if i != 0 {
ctx.WriteKeyWord(" AND ")
}
if err := option.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore GrantStmt.AuthTokenOrTLSOptions[%d]", i)
}
}
}
if n.WithGrant {
ctx.WriteKeyWord(" WITH GRANT OPTION")
}
return nil
}
// SecureText implements SensitiveStatement interface.
func (n *GrantStmt) SecureText() string {
text := n.text
// Filter "identified by xxx" because it would expose password information.
idx := strings.Index(strings.ToLower(text), "identified")
if idx > 0 {
text = text[:idx]
}
return text
}
// Accept implements Node Accept interface.
func (n *GrantStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*GrantStmt)
for i, val := range n.Privs {
node, ok := val.Accept(v)
if !ok {
return n, false
}
n.Privs[i] = node.(*PrivElem)
}
return v.Leave(n)
}
// GrantProxyStmt is the struct for GRANT PROXY statement.
type GrantProxyStmt struct {
stmtNode
LocalUser *auth.UserIdentity
ExternalUsers []*auth.UserIdentity
WithGrant bool
}
// Accept implements Node Accept interface.
func (n *GrantProxyStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*GrantProxyStmt)
return v.Leave(n)
}
// Restore implements Node interface.
func (n *GrantProxyStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("GRANT PROXY ON ")
if err := n.LocalUser.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore GrantProxyStmt.LocalUser")
}
ctx.WriteKeyWord(" TO ")
for i, v := range n.ExternalUsers {
if i != 0 {
ctx.WritePlain(", ")
}
if err := v.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore GrantProxyStmt.ExternalUsers[%d]", i)
}
}
if n.WithGrant {
ctx.WriteKeyWord(" WITH GRANT OPTION")
}
return nil
}
// GrantRoleStmt is the struct for GRANT TO statement.
type GrantRoleStmt struct {
stmtNode
Roles []*auth.RoleIdentity
Users []*auth.UserIdentity
}
// Accept implements Node Accept interface.
func (n *GrantRoleStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*GrantRoleStmt)
return v.Leave(n)
}
// Restore implements Node interface.
func (n *GrantRoleStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("GRANT ")
if len(n.Roles) > 0 {
for i, role := range n.Roles {
if i != 0 {
ctx.WritePlain(", ")
}
if err := role.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore GrantRoleStmt.Roles[%d]", i)
}
}
}
ctx.WriteKeyWord(" TO ")
for i, v := range n.Users {
if i != 0 {
ctx.WritePlain(", ")
}
if err := v.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore GrantStmt.Users[%d]", i)
}
}
return nil
}
// SecureText implements SensitiveStatement interface.
func (n *GrantRoleStmt) SecureText() string {
text := n.text
// Filter "identified by xxx" because it would expose password information.
idx := strings.Index(strings.ToLower(text), "identified")
if idx > 0 {
text = text[:idx]
}
return text
}
// ShutdownStmt is a statement to stop the TiDB server.
// See https://dev.mysql.com/doc/refman/5.7/en/shutdown.html
type ShutdownStmt struct {
stmtNode
}
// Restore implements Node interface.
func (n *ShutdownStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("SHUTDOWN")
return nil
}
// Accept implements Node Accept interface.
func (n *ShutdownStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*ShutdownStmt)
return v.Leave(n)
}
// RestartStmt is a statement to restart the TiDB server.
// See https://dev.mysql.com/doc/refman/8.0/en/restart.html
type RestartStmt struct {
stmtNode
}
// Restore implements Node interface.
func (n *RestartStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("RESTART")
return nil
}
// Accept implements Node Accept interface.
func (n *RestartStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*RestartStmt)
return v.Leave(n)
}
// HelpStmt is a statement for server side help
// See https://dev.mysql.com/doc/refman/8.0/en/help.html
type HelpStmt struct {
stmtNode
Topic string
}
// Restore implements Node interface.
func (n *HelpStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("HELP ")
ctx.WriteString(n.Topic)
return nil
}
// Accept implements Node Accept interface.
func (n *HelpStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*HelpStmt)
return v.Leave(n)
}
// RenameUserStmt is a statement to rename a user.
// See http://dev.mysql.com/doc/refman/5.7/en/rename-user.html
type RenameUserStmt struct {
stmtNode
UserToUsers []*UserToUser
}
// Restore implements Node interface.
func (n *RenameUserStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("RENAME USER ")
for index, user2user := range n.UserToUsers {
if index != 0 {
ctx.WritePlain(", ")
}
if err := user2user.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore RenameUserStmt.UserToUsers")
}
}
return nil
}
// Accept implements Node Accept interface.
func (n *RenameUserStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*RenameUserStmt)
for i, t := range n.UserToUsers {
node, ok := t.Accept(v)
if !ok {
return n, false
}
n.UserToUsers[i] = node.(*UserToUser)
}
return v.Leave(n)
}
// UserToUser represents renaming old user to new user used in RenameUserStmt.
type UserToUser struct {
node
OldUser *auth.UserIdentity
NewUser *auth.UserIdentity
}
// Restore implements Node interface.
func (n *UserToUser) Restore(ctx *format.RestoreCtx) error {
if err := n.OldUser.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore UserToUser.OldUser")
}
ctx.WriteKeyWord(" TO ")
if err := n.NewUser.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore UserToUser.NewUser")
}
return nil
}
// Accept implements Node Accept interface.
func (n *UserToUser) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*UserToUser)
return v.Leave(n)
}
type BRIEKind uint8
type BRIEOptionType uint16
const (
BRIEKindBackup BRIEKind = iota
BRIEKindCancelJob
BRIEKindStreamStart
BRIEKindStreamMetaData
BRIEKindStreamStatus
BRIEKindStreamPause
BRIEKindStreamResume
BRIEKindStreamStop
BRIEKindStreamPurge
BRIEKindRestore
BRIEKindRestorePIT
BRIEKindShowJob
BRIEKindShowQuery
BRIEKindShowBackupMeta
// brieKindCount is the total number of BRIE kinds.
brieKindCount
// common BRIE options
BRIEOptionRateLimit BRIEOptionType = iota + 1
BRIEOptionConcurrency
BRIEOptionChecksum
BRIEOptionSendCreds
BRIEOptionCheckpoint
BRIEOptionStartTS
BRIEOptionUntilTS
BRIEOptionChecksumConcurrency
BRIEOptionEncryptionMethod
BRIEOptionEncryptionKeyFile
// backup options
BRIEOptionBackupTimeAgo
BRIEOptionBackupTS
BRIEOptionBackupTSO
BRIEOptionLastBackupTS
BRIEOptionLastBackupTSO
BRIEOptionGCTTL
BRIEOptionCompressionLevel
BRIEOptionCompression
BRIEOptionIgnoreStats
BRIEOptionLoadStats
// restore options
BRIEOptionOnline
BRIEOptionFullBackupStorage
BRIEOptionRestoredTS
BRIEOptionWaitTiflashReady
BRIEOptionWithSysTable
// import options
BRIEOptionAnalyze
BRIEOptionBackend
BRIEOptionOnDuplicate
BRIEOptionSkipSchemaFiles
BRIEOptionStrictFormat
BRIEOptionTiKVImporter
BRIEOptionResume
// CSV options
BRIEOptionCSVBackslashEscape
BRIEOptionCSVDelimiter
BRIEOptionCSVHeader
BRIEOptionCSVNotNull
BRIEOptionCSVNull
BRIEOptionCSVSeparator
BRIEOptionCSVTrimLastSeparators
BRIECSVHeaderIsColumns = ^uint64(0)
)
type BRIEOptionLevel uint64
const (
BRIEOptionLevelOff BRIEOptionLevel = iota // equals FALSE
BRIEOptionLevelRequired // equals TRUE
BRIEOptionLevelOptional
)
func (kind BRIEKind) String() string {
switch kind {
case BRIEKindBackup:
return "BACKUP"
case BRIEKindRestore:
return "RESTORE"
case BRIEKindStreamStart:
return "BACKUP LOGS"
case BRIEKindStreamStop:
return "STOP BACKUP LOGS"
case BRIEKindStreamPause:
return "PAUSE BACKUP LOGS"
case BRIEKindStreamResume:
return "RESUME BACKUP LOGS"
case BRIEKindStreamStatus:
return "SHOW BACKUP LOGS STATUS"
case BRIEKindStreamMetaData:
return "SHOW BACKUP LOGS METADATA"
case BRIEKindStreamPurge:
return "PURGE BACKUP LOGS"
case BRIEKindRestorePIT:
return "RESTORE POINT"
case BRIEKindShowJob:
return "SHOW BR JOB"
case BRIEKindShowQuery:
return "SHOW BR JOB QUERY"
case BRIEKindCancelJob:
return "CANCEL BR JOB"
case BRIEKindShowBackupMeta:
return "SHOW BACKUP METADATA"
default:
return ""
}
}
func (kind BRIEOptionType) String() string {
switch kind {
case BRIEOptionRateLimit:
return "RATE_LIMIT"
case BRIEOptionConcurrency:
return "CONCURRENCY"
case BRIEOptionChecksum:
return "CHECKSUM"
case BRIEOptionSendCreds:
return "SEND_CREDENTIALS_TO_TIKV"
case BRIEOptionBackupTimeAgo, BRIEOptionBackupTS, BRIEOptionBackupTSO:
return "SNAPSHOT"
case BRIEOptionLastBackupTS, BRIEOptionLastBackupTSO:
return "LAST_BACKUP"
case BRIEOptionOnline:
return "ONLINE"
case BRIEOptionCheckpoint:
return "CHECKPOINT"
case BRIEOptionAnalyze:
return "ANALYZE"
case BRIEOptionBackend:
return "BACKEND"
case BRIEOptionOnDuplicate:
return "ON_DUPLICATE"
case BRIEOptionSkipSchemaFiles:
return "SKIP_SCHEMA_FILES"
case BRIEOptionStrictFormat:
return "STRICT_FORMAT"
case BRIEOptionTiKVImporter:
return "TIKV_IMPORTER"
case BRIEOptionResume:
return "RESUME"
case BRIEOptionCSVBackslashEscape:
return "CSV_BACKSLASH_ESCAPE"
case BRIEOptionCSVDelimiter:
return "CSV_DELIMITER"
case BRIEOptionCSVHeader:
return "CSV_HEADER"
case BRIEOptionCSVNotNull:
return "CSV_NOT_NULL"
case BRIEOptionCSVNull:
return "CSV_NULL"
case BRIEOptionCSVSeparator:
return "CSV_SEPARATOR"
case BRIEOptionCSVTrimLastSeparators:
return "CSV_TRIM_LAST_SEPARATORS"
case BRIEOptionFullBackupStorage:
return "FULL_BACKUP_STORAGE"
case BRIEOptionRestoredTS:
return "RESTORED_TS"
case BRIEOptionStartTS:
return "START_TS"
case BRIEOptionUntilTS:
return "UNTIL_TS"
case BRIEOptionGCTTL:
return "GC_TTL"
case BRIEOptionWaitTiflashReady:
return "WAIT_TIFLASH_READY"
case BRIEOptionWithSysTable:
return "WITH_SYS_TABLE"
case BRIEOptionIgnoreStats:
return "IGNORE_STATS"
case BRIEOptionLoadStats:
return "LOAD_STATS"
case BRIEOptionChecksumConcurrency:
return "CHECKSUM_CONCURRENCY"
case BRIEOptionCompressionLevel:
return "COMPRESSION_LEVEL"
case BRIEOptionCompression:
return "COMPRESSION_TYPE"
case BRIEOptionEncryptionMethod:
return "ENCRYPTION_METHOD"
case BRIEOptionEncryptionKeyFile:
return "ENCRYPTION_KEY_FILE"
default:
return ""
}
}
func (level BRIEOptionLevel) String() string {
switch level {
case BRIEOptionLevelOff:
return "OFF"
case BRIEOptionLevelOptional:
return "OPTIONAL"
case BRIEOptionLevelRequired:
return "REQUIRED"
default:
return ""
}
}
type BRIEOption struct {
Tp BRIEOptionType
StrValue string
UintValue uint64
}
func (opt *BRIEOption) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord(opt.Tp.String())
ctx.WritePlain(" = ")
switch opt.Tp {
case BRIEOptionBackupTS, BRIEOptionLastBackupTS, BRIEOptionBackend, BRIEOptionOnDuplicate, BRIEOptionTiKVImporter, BRIEOptionCSVDelimiter, BRIEOptionCSVNull, BRIEOptionCSVSeparator, BRIEOptionFullBackupStorage, BRIEOptionRestoredTS, BRIEOptionStartTS, BRIEOptionUntilTS, BRIEOptionGCTTL, BRIEOptionCompression, BRIEOptionEncryptionMethod, BRIEOptionEncryptionKeyFile:
ctx.WriteString(opt.StrValue)
case BRIEOptionBackupTimeAgo:
ctx.WritePlainf("%d ", opt.UintValue/1000)
ctx.WriteKeyWord("MICROSECOND AGO")
case BRIEOptionRateLimit:
ctx.WritePlainf("%d ", opt.UintValue/1048576)
ctx.WriteKeyWord("MB")
ctx.WritePlain("/")
ctx.WriteKeyWord("SECOND")
case BRIEOptionCSVHeader:
if opt.UintValue == BRIECSVHeaderIsColumns {
ctx.WriteKeyWord("COLUMNS")
} else {
ctx.WritePlainf("%d", opt.UintValue)
}
case BRIEOptionChecksum, BRIEOptionAnalyze:
// BACKUP/RESTORE doesn't support OPTIONAL value for now, should warn at executor
ctx.WriteKeyWord(BRIEOptionLevel(opt.UintValue).String())
default:
ctx.WritePlainf("%d", opt.UintValue)
}
return nil
}
// BRIEStmt is a statement for backup, restore, import and export.
type BRIEStmt struct {
stmtNode
Kind BRIEKind
Schemas []string
Tables []*TableName
Storage string
JobID int64
Options []*BRIEOption
}
func (n *BRIEStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*BRIEStmt)
for i, val := range n.Tables {
node, ok := val.Accept(v)
if !ok {
return n, false
}
n.Tables[i] = node.(*TableName)
}
return v.Leave(n)
}
func (n *BRIEStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord(n.Kind.String())
switch n.Kind {
case BRIEKindRestore, BRIEKindBackup:
switch {
case len(n.Tables) != 0:
ctx.WriteKeyWord(" TABLE ")
for index, table := range n.Tables {
if index != 0 {
ctx.WritePlain(", ")
}
if err := table.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore BRIEStmt.Tables[%d]", index)
}
}
case len(n.Schemas) != 0:
ctx.WriteKeyWord(" DATABASE ")
for index, schema := range n.Schemas {
if index != 0 {
ctx.WritePlain(", ")
}
ctx.WriteName(schema)
}
default:
ctx.WriteKeyWord(" DATABASE")
ctx.WritePlain(" *")
}
if n.Kind == BRIEKindBackup {
ctx.WriteKeyWord(" TO ")
ctx.WriteString(n.Storage)
} else {
ctx.WriteKeyWord(" FROM ")
ctx.WriteString(n.Storage)
}
case BRIEKindCancelJob, BRIEKindShowJob, BRIEKindShowQuery:
ctx.WritePlainf(" %d", n.JobID)
case BRIEKindStreamStart:
ctx.WriteKeyWord(" TO ")
ctx.WriteString(n.Storage)
case BRIEKindRestorePIT, BRIEKindStreamMetaData, BRIEKindShowBackupMeta, BRIEKindStreamPurge:
ctx.WriteKeyWord(" FROM ")
ctx.WriteString(n.Storage)
}
for _, opt := range n.Options {
ctx.WritePlain(" ")
if err := opt.Restore(ctx); err != nil {
return err
}
}
return nil
}
// RedactURL redacts the secret tokens in the URL. only S3 url need redaction for now.
// if the url is not a valid url, return the original string.
func RedactURL(str string) string {
// FIXME: this solution is not scalable, and duplicates some logic from BR.
u, err := url.Parse(str)
if err != nil {
return str
}
scheme := u.Scheme
failpoint.Inject("forceRedactURL", func() {
scheme = "s3"
})
switch strings.ToLower(scheme) {
case "s3", "ks3":
values := u.Query()
for k := range values {
// see below on why we normalize key
// https://github.com/pingcap/tidb/blob/a7c0d95f16ea2582bb569278c3f829403e6c3a7e/br/pkg/storage/parse.go#L163
normalizedKey := strings.ToLower(strings.ReplaceAll(k, "_", "-"))
if normalizedKey == "access-key" || normalizedKey == "secret-access-key" || normalizedKey == "session-token" {
values[k] = []string{"xxxxxx"}
}
}
u.RawQuery = values.Encode()
}
return u.String()
}
// SecureText implements SensitiveStmtNode
func (n *BRIEStmt) SecureText() string {
redactedStmt := &BRIEStmt{
Kind: n.Kind,
Schemas: n.Schemas,
Tables: n.Tables,
Storage: RedactURL(n.Storage),
Options: n.Options,
}
var sb strings.Builder
_ = redactedStmt.Restore(format.NewRestoreCtx(format.DefaultRestoreFlags, &sb))
return sb.String()
}
type ImportIntoActionTp string
const (
ImportIntoCancel ImportIntoActionTp = "cancel"
)
// ImportIntoActionStmt represent CANCEL IMPORT INTO JOB statement.
// will support pause/resume/drop later.
type ImportIntoActionStmt struct {
stmtNode
Tp ImportIntoActionTp
JobID int64
}
func (n *ImportIntoActionStmt) Accept(v Visitor) (Node, bool) {
newNode, _ := v.Enter(n)
return v.Leave(newNode)
}
func (n *ImportIntoActionStmt) Restore(ctx *format.RestoreCtx) error {
if n.Tp != ImportIntoCancel {
return errors.Errorf("invalid IMPORT INTO action type: %s", n.Tp)
}
ctx.WriteKeyWord("CANCEL IMPORT JOB ")
ctx.WritePlainf("%d", n.JobID)
return nil
}
// CancelDistributionJobStmt represent CANCEL DISTRIBUTION JOB statement.
type CancelDistributionJobStmt struct {
stmtNode
JobID int64
}
func (n *CancelDistributionJobStmt) Accept(v Visitor) (Node, bool) {
newNode, _ := v.Enter(n)
return v.Leave(newNode)
}
func (n *CancelDistributionJobStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("CANCEL DISTRIBUTION JOB ")
ctx.WritePlainf("%d", n.JobID)
return nil
}
// Ident is the table identifier composed of schema name and table name.
type Ident struct {
Schema CIStr
Name CIStr
}
// String implements fmt.Stringer interface.
func (i Ident) String() string {
if i.Schema.O == "" {
return i.Name.O
}
return fmt.Sprintf("%s.%s", i.Schema, i.Name)
}
// SelectStmtOpts wrap around select hints and switches
type SelectStmtOpts struct {
Distinct bool
SQLBigResult bool
SQLBufferResult bool
SQLCache bool
SQLSmallResult bool
CalcFoundRows bool
StraightJoin bool
Priority mysql.PriorityEnum
TableHints []*TableOptimizerHint
ExplicitAll bool
}
// TableOptimizerHint is Table level optimizer hint
type TableOptimizerHint struct {
node
// HintName is the name or alias of the table(s) which the hint will affect.
// Table hints has no schema info
// It allows only table name or alias (if table has an alias)
HintName CIStr
// HintData is the payload of the hint. The actual type of this field
// is defined differently as according `HintName`. Define as following:
//
// Statement Execution Time Optimizer Hints
// See https://dev.mysql.com/doc/refman/5.7/en/optimizer-hints.html#optimizer-hints-execution-time
// - MAX_EXECUTION_TIME => uint64
// - MEMORY_QUOTA => int64
// - QUERY_TYPE => CIStr
//
// Time Range is used to hint the time range of inspection tables
// e.g: select /*+ time_range('','') */ * from information_schema.inspection_result.
// - TIME_RANGE => ast.HintTimeRange
// - READ_FROM_STORAGE => CIStr
// - USE_TOJA => bool
// - NTH_PLAN => int64
HintData any
// QBName is the default effective query block of this hint.
QBName CIStr
Tables []HintTable
Indexes []CIStr
}
// HintTimeRange is the payload of `TIME_RANGE` hint
type HintTimeRange struct {
From string
To string
}
// HintSetVar is the payload of `SET_VAR` hint
type HintSetVar struct {
VarName string
Value string
}
// HintTable is table in the hint. It may have query block info.
type HintTable struct {
DBName CIStr
TableName CIStr
QBName CIStr
PartitionList []CIStr
}
func (ht *HintTable) Restore(ctx *format.RestoreCtx) {
if !ctx.Flags.HasWithoutSchemaNameFlag() {
if ht.DBName.L != "" {
ctx.WriteName(ht.DBName.String())
ctx.WriteKeyWord(".")
}
}
ctx.WriteName(ht.TableName.String())
if ht.QBName.L != "" {
ctx.WriteKeyWord("@")
ctx.WriteName(ht.QBName.String())
}
if len(ht.PartitionList) > 0 {
ctx.WriteKeyWord(" PARTITION")
ctx.WritePlain("(")
for i, p := range ht.PartitionList {
if i > 0 {
ctx.WritePlain(", ")
}
ctx.WriteName(p.String())
}
ctx.WritePlain(")")
}
}
// Restore implements Node interface.
func (n *TableOptimizerHint) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord(n.HintName.String())
ctx.WritePlain("(")
if n.QBName.L != "" {
if n.HintName.L != "qb_name" {
ctx.WriteKeyWord("@")
}
ctx.WriteName(n.QBName.String())
}
if n.HintName.L == "qb_name" && len(n.Tables) == 0 {
ctx.WritePlain(")")
return nil
}
// Hints without args except query block.
switch n.HintName.L {
case "mpp_1phase_agg", "mpp_2phase_agg", "hash_agg", "stream_agg", "agg_to_cop", "read_consistent_replica", "no_index_merge", "ignore_plan_cache", "limit_to_cop", "straight_join", "merge", "no_decorrelate":
ctx.WritePlain(")")
return nil
}
if n.QBName.L != "" {
ctx.WritePlain(" ")
}
// Hints with args except query block.
switch n.HintName.L {
case "max_execution_time":
ctx.WritePlainf("%d", n.HintData.(uint64))
case "resource_group":
ctx.WriteName(n.HintData.(string))
case "nth_plan":
ctx.WritePlainf("%d", n.HintData.(int64))
case "tidb_hj", "tidb_smj", "tidb_inlj", "hash_join", "hash_join_build", "hash_join_probe", "merge_join", "inl_join",
"broadcast_join", "shuffle_join", "inl_hash_join", "inl_merge_join", "leading", "no_hash_join", "no_merge_join",
"no_index_join", "no_index_hash_join", "no_index_merge_join":
for i, table := range n.Tables {
if i != 0 {
ctx.WritePlain(", ")
}
table.Restore(ctx)
}
case "use_index", "ignore_index", "use_index_merge", "force_index", "order_index", "no_order_index":
n.Tables[0].Restore(ctx)
ctx.WritePlain(" ")
for i, index := range n.Indexes {
if i != 0 {
ctx.WritePlain(", ")
}
ctx.WriteName(index.String())
}
case "qb_name":
if len(n.Tables) > 0 {
ctx.WritePlain(", ")
for i, table := range n.Tables {
if i != 0 {
ctx.WritePlain(". ")
}
table.Restore(ctx)
}
}
case "use_toja", "use_cascades":
if n.HintData.(bool) {
ctx.WritePlain("TRUE")
} else {
ctx.WritePlain("FALSE")
}
case "query_type":
ctx.WriteKeyWord(n.HintData.(CIStr).String())
case "memory_quota":
ctx.WritePlainf("%d MB", n.HintData.(int64)/1024/1024)
case "read_from_storage":
ctx.WriteKeyWord(n.HintData.(CIStr).String())
for i, table := range n.Tables {
if i == 0 {
ctx.WritePlain("[")
}
table.Restore(ctx)
if i == len(n.Tables)-1 {
ctx.WritePlain("]")
} else {
ctx.WritePlain(", ")
}
}
case "time_range":
hintData := n.HintData.(HintTimeRange)
ctx.WriteString(hintData.From)
ctx.WritePlain(", ")
ctx.WriteString(hintData.To)
case "set_var":
hintData := n.HintData.(HintSetVar)
ctx.WritePlain(hintData.VarName)
ctx.WritePlain(" = ")
ctx.WriteString(hintData.Value)
}
ctx.WritePlain(")")
return nil
}
// Accept implements Node Accept interface.
func (n *TableOptimizerHint) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*TableOptimizerHint)
return v.Leave(n)
}
// TextString represent a string, it can be a binary literal.
type TextString struct {
Value string
IsBinaryLiteral bool
}
type BinaryLiteral interface {
ToString() string
}
// NewDecimal creates a types.Decimal value, it's provided by parser driver.
var NewDecimal func(string) (any, error)
// NewHexLiteral creates a types.HexLiteral value, it's provided by parser driver.
var NewHexLiteral func(string) (any, error)
// NewBitLiteral creates a types.BitLiteral value, it's provided by parser driver.
var NewBitLiteral func(string) (any, error)
// SetResourceGroupStmt is a statement to set the resource group name for current session.
type SetResourceGroupStmt struct {
stmtNode
Name CIStr
}
func (n *SetResourceGroupStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("SET RESOURCE GROUP ")
ctx.WriteName(n.Name.O)
return nil
}
// Accept implements Node Accept interface.
func (n *SetResourceGroupStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*SetResourceGroupStmt)
return v.Leave(n)
}
// CalibrateResourceType is the type for CalibrateResource statement.
type CalibrateResourceType int
// calibrate resource [ workload < TPCC | OLTP_READ_WRITE | OLTP_READ_ONLY | OLTP_WRITE_ONLY | TPCH_10> ]
const (
WorkloadNone CalibrateResourceType = iota
TPCC
OLTPREADWRITE
OLTPREADONLY
OLTPWRITEONLY
TPCH10
)
func (n CalibrateResourceType) Restore(ctx *format.RestoreCtx) error {
switch n {
case TPCC:
ctx.WriteKeyWord(" WORKLOAD TPCC")
case OLTPREADWRITE:
ctx.WriteKeyWord(" WORKLOAD OLTP_READ_WRITE")
case OLTPREADONLY:
ctx.WriteKeyWord(" WORKLOAD OLTP_READ_ONLY")
case OLTPWRITEONLY:
ctx.WriteKeyWord(" WORKLOAD OLTP_WRITE_ONLY")
case TPCH10:
ctx.WriteKeyWord(" WORKLOAD TPCH_10")
}
return nil
}
// CalibrateResourceStmt is a statement to fetch the cluster RU capacity
type CalibrateResourceStmt struct {
stmtNode
DynamicCalibrateResourceOptionList []*DynamicCalibrateResourceOption
Tp CalibrateResourceType
}
// Restore implements Node interface.
func (n *CalibrateResourceStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("CALIBRATE RESOURCE")
if err := n.Tp.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore CalibrateResourceStmt.CalibrateResourceType")
}
for i, option := range n.DynamicCalibrateResourceOptionList {
ctx.WritePlain(" ")
if err := option.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while splicing DynamicCalibrateResourceOption: [%v]", i)
}
}
return nil
}
// Accept implements Node Accept interface.
func (n *CalibrateResourceStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*CalibrateResourceStmt)
for _, val := range n.DynamicCalibrateResourceOptionList {
_, ok := val.Accept(v)
if !ok {
return n, false
}
}
return v.Leave(n)
}
type DynamicCalibrateType int
const (
// specific time
CalibrateStartTime = iota
CalibrateEndTime
CalibrateDuration
)
type DynamicCalibrateResourceOption struct {
stmtNode
Tp DynamicCalibrateType
StrValue string
Ts ExprNode
Unit TimeUnitType
}
func (n *DynamicCalibrateResourceOption) Restore(ctx *format.RestoreCtx) error {
switch n.Tp {
case CalibrateStartTime:
ctx.WriteKeyWord("START_TIME ")
if err := n.Ts.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while splicing DynamicCalibrateResourceOption StartTime")
}
case CalibrateEndTime:
ctx.WriteKeyWord("END_TIME ")
if err := n.Ts.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while splicing DynamicCalibrateResourceOption EndTime")
}
case CalibrateDuration:
ctx.WriteKeyWord("DURATION ")
if len(n.StrValue) > 0 {
ctx.WriteString(n.StrValue)
} else {
ctx.WriteKeyWord("INTERVAL ")
if err := n.Ts.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore DynamicCalibrateResourceOption DURATION TS")
}
ctx.WritePlain(" ")
ctx.WriteKeyWord(n.Unit.String())
}
default:
return errors.Errorf("invalid DynamicCalibrateResourceOption: %d", n.Tp)
}
return nil
}
// Accept implements Node Accept interface.
func (n *DynamicCalibrateResourceOption) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*DynamicCalibrateResourceOption)
if n.Ts != nil {
node, ok := n.Ts.Accept(v)
if !ok {
return n, false
}
n.Ts = node.(ExprNode)
}
return v.Leave(n)
}
// DropQueryWatchStmt is a statement to drop a runaway watch item.
type DropQueryWatchStmt struct {
stmtNode
IntValue int64
GroupNameStr CIStr
GroupNameExpr ExprNode
}
func (n *DropQueryWatchStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("QUERY WATCH REMOVE ")
switch {
case n.GroupNameStr.String() != "":
ctx.WriteKeyWord("RESOURCE GROUP ")
ctx.WriteName(n.GroupNameStr.String())
case n.GroupNameExpr != nil:
ctx.WriteKeyWord("RESOURCE GROUP ")
if err := n.GroupNameExpr.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore expr: [%v]", n.GroupNameExpr)
}
default:
ctx.WritePlainf("%d", n.IntValue)
}
return nil
}
// Accept implements Node Accept interface.
func (n *DropQueryWatchStmt) Accept(v Visitor) (Node, bool) {
newNode, _ := v.Enter(n)
n = newNode.(*DropQueryWatchStmt)
return v.Leave(n)
}
// AddQueryWatchStmt is a statement to add a runaway watch item.
type AddQueryWatchStmt struct {
stmtNode
QueryWatchOptionList []*QueryWatchOption
}
func (n *AddQueryWatchStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("QUERY WATCH ADD")
for i, option := range n.QueryWatchOptionList {
ctx.WritePlain(" ")
if err := option.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while splicing QueryWatchOptionList: [%v]", i)
}
}
return nil
}
// Accept implements Node Accept interface.
func (n *AddQueryWatchStmt) Accept(v Visitor) (Node, bool) {
newNode, _ := v.Enter(n)
n = newNode.(*AddQueryWatchStmt)
for _, val := range n.QueryWatchOptionList {
_, ok := val.Accept(v)
if !ok {
return n, false
}
}
return v.Leave(n)
}
type QueryWatchOptionType int
const (
QueryWatchResourceGroup QueryWatchOptionType = iota
QueryWatchAction
QueryWatchType
)
// QueryWatchOption is used for parsing manual management of watching runaway queries option.
type QueryWatchOption struct {
stmtNode
Tp QueryWatchOptionType
ResourceGroupOption *QueryWatchResourceGroupOption
ActionOption *ResourceGroupRunawayActionOption
TextOption *QueryWatchTextOption
}
// Restore implements Node interface.
func (n *QueryWatchOption) Restore(ctx *format.RestoreCtx) error {
switch n.Tp {
case QueryWatchResourceGroup:
return n.ResourceGroupOption.restore(ctx)
case QueryWatchAction:
return n.ActionOption.Restore(ctx)
case QueryWatchType:
return n.TextOption.Restore(ctx)
}
return nil
}
// Accept implements Node Accept interface.
func (n *QueryWatchOption) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*QueryWatchOption)
if n.ResourceGroupOption != nil && n.ResourceGroupOption.GroupNameExpr != nil {
node, ok := n.ResourceGroupOption.GroupNameExpr.Accept(v)
if !ok {
return n, false
}
n.ResourceGroupOption.GroupNameExpr = node.(ExprNode)
}
if n.ActionOption != nil {
node, ok := n.ActionOption.Accept(v)
if !ok {
return n, false
}
n.ActionOption = node.(*ResourceGroupRunawayActionOption)
}
if n.TextOption != nil {
node, ok := n.TextOption.Accept(v)
if !ok {
return n, false
}
n.TextOption = node.(*QueryWatchTextOption)
}
return v.Leave(n)
}
func CheckQueryWatchAppend(ops []*QueryWatchOption, newOp *QueryWatchOption) bool {
for _, op := range ops {
if op.Tp == newOp.Tp {
return false
}
}
return true
}
// QueryWatchResourceGroupOption is used for parsing the query watch resource group name.
type QueryWatchResourceGroupOption struct {
GroupNameStr CIStr
GroupNameExpr ExprNode
}
func (n *QueryWatchResourceGroupOption) restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("RESOURCE GROUP ")
if n.GroupNameExpr != nil {
if err := n.GroupNameExpr.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while splicing ExprValue: [%v]", n.GroupNameExpr)
}
} else {
ctx.WriteName(n.GroupNameStr.String())
}
return nil
}
// QueryWatchTextOption is used for parsing the query watch text option.
type QueryWatchTextOption struct {
node
Type RunawayWatchType
PatternExpr ExprNode
TypeSpecified bool
}
// Restore implements Node interface.
func (n *QueryWatchTextOption) Restore(ctx *format.RestoreCtx) error {
if n.TypeSpecified {
ctx.WriteKeyWord("SQL TEXT ")
ctx.WriteKeyWord(n.Type.String())
ctx.WriteKeyWord(" TO ")
} else {
switch n.Type {
case WatchSimilar:
ctx.WriteKeyWord("SQL DIGEST ")
case WatchPlan:
ctx.WriteKeyWord("PLAN DIGEST ")
}
}
if err := n.PatternExpr.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while splicing ExprValue: [%v]", n.PatternExpr)
}
return nil
}
// Accept implements Node Accept interface.
func (n *QueryWatchTextOption) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*QueryWatchTextOption)
if n.PatternExpr != nil {
node, ok := n.PatternExpr.Accept(v)
if !ok {
return n, false
}
n.PatternExpr = node.(ExprNode)
}
return v.Leave(n)
}
// Copyright 2015 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// See the License for the specific language governing permissions and
// limitations under the License.
package ast
import (
"encoding/json"
"strings"
"unsafe"
"github.com/pingcap/errors"
"github.com/pingcap/tidb/pkg/parser/util"
)
// TableLockType is the type of the table lock.
type TableLockType byte
const (
// TableLockNone means this table lock is absent.
TableLockNone TableLockType = iota
// TableLockRead means the session with this lock can read the table (but not write it).
// Multiple sessions can acquire a READ lock for the table at the same time.
// Other sessions can read the table without explicitly acquiring a READ lock.
TableLockRead
// TableLockReadLocal is not supported.
TableLockReadLocal
// TableLockReadOnly is used to set a table into read-only status,
// when the session exits, it will not release its lock automatically.
TableLockReadOnly
// TableLockWrite means only the session with this lock has write/read permission.
// Only the session that holds the lock can access the table. No other session can access it until the lock is released.
TableLockWrite
// TableLockWriteLocal means the session with this lock has write/read permission, and the other session still has read permission.
TableLockWriteLocal
)
// String implements fmt.Stringer interface.
func (t TableLockType) String() string {
switch t {
case TableLockNone:
return "NONE"
case TableLockRead:
return "READ"
case TableLockReadLocal:
return "READ LOCAL"
case TableLockReadOnly:
return "READ ONLY"
case TableLockWriteLocal:
return "WRITE LOCAL"
case TableLockWrite:
return "WRITE"
}
return ""
}
// ViewAlgorithm is VIEW's SQL ALGORITHM characteristic.
// See https://dev.mysql.com/doc/refman/5.7/en/view-algorithms.html
type ViewAlgorithm int
// ViewAlgorithm values.
const (
AlgorithmUndefined ViewAlgorithm = iota
AlgorithmMerge
AlgorithmTemptable
)
// String implements fmt.Stringer interface.
func (v *ViewAlgorithm) String() string {
switch *v {
case AlgorithmMerge:
return "MERGE"
case AlgorithmTemptable:
return "TEMPTABLE"
case AlgorithmUndefined:
return "UNDEFINED"
default:
return "UNDEFINED"
}
}
// ViewSecurity is VIEW's SQL SECURITY characteristic.
// See https://dev.mysql.com/doc/refman/5.7/en/create-view.html
type ViewSecurity int
// ViewSecurity values.
const (
SecurityDefiner ViewSecurity = iota
SecurityInvoker
)
// String implements fmt.Stringer interface.
func (v *ViewSecurity) String() string {
switch *v {
case SecurityInvoker:
return "INVOKER"
case SecurityDefiner:
return "DEFINER"
default:
return "DEFINER"
}
}
// ViewCheckOption is VIEW's WITH CHECK OPTION clause part.
// See https://dev.mysql.com/doc/refman/5.7/en/view-check-option.html
type ViewCheckOption int
// ViewCheckOption values.
const (
CheckOptionLocal ViewCheckOption = iota
CheckOptionCascaded
)
// String implements fmt.Stringer interface.
func (v *ViewCheckOption) String() string {
switch *v {
case CheckOptionLocal:
return "LOCAL"
case CheckOptionCascaded:
return "CASCADED"
default:
return "CASCADED"
}
}
// PartitionType is the type for PartitionInfo
type PartitionType int
// PartitionType types.
const (
// Actually non-partitioned, but during DDL keeping the table as
// a single partition
PartitionTypeNone PartitionType = 0
PartitionTypeRange PartitionType = 1
PartitionTypeHash PartitionType = 2
PartitionTypeList PartitionType = 3
PartitionTypeKey PartitionType = 4
PartitionTypeSystemTime PartitionType = 5
)
// String implements fmt.Stringer interface.
func (p PartitionType) String() string {
switch p {
case PartitionTypeRange:
return "RANGE"
case PartitionTypeHash:
return "HASH"
case PartitionTypeList:
return "LIST"
case PartitionTypeKey:
return "KEY"
case PartitionTypeSystemTime:
return "SYSTEM_TIME"
case PartitionTypeNone:
return "NONE"
default:
return ""
}
}
// PrimaryKeyType is the type of primary key.
// Available values are "clustered", "nonclustered", and ""(default).
type PrimaryKeyType int8
// String implements fmt.Stringer interface.
func (p PrimaryKeyType) String() string {
switch p {
case PrimaryKeyTypeClustered:
return "CLUSTERED"
case PrimaryKeyTypeNonClustered:
return "NONCLUSTERED"
default:
return ""
}
}
// PrimaryKeyType values.
const (
PrimaryKeyTypeDefault PrimaryKeyType = iota
PrimaryKeyTypeClustered
PrimaryKeyTypeNonClustered
)
// IndexType is the type of index
type IndexType int
// String implements Stringer interface.
func (t IndexType) String() string {
switch t {
case IndexTypeBtree:
return "BTREE"
case IndexTypeHash:
return "HASH"
case IndexTypeRtree:
return "RTREE"
case IndexTypeHypo:
return "HYPO"
case IndexTypeHNSW:
return "HNSW"
case IndexTypeVector:
return "VECTOR"
case IndexTypeInverted:
return "INVERTED"
case IndexTypeFulltext:
return "FULLTEXT"
default:
return ""
}
}
// IndexTypes
// Warning: 1) Also used in TiFlash 2) May come from a previous version persisted in TableInfo.
// So you must keep it compatible when modifying it.
const (
IndexTypeInvalid IndexType = iota
IndexTypeBtree
IndexTypeHash
IndexTypeRtree
IndexTypeHypo
IndexTypeVector
IndexTypeInverted
// IndexTypeHNSW is only used in AST.
// It will be rewritten into IndexTypeVector after preprocessor phase.
IndexTypeHNSW
IndexTypeFulltext
)
// ReferOptionType is the type for refer options.
type ReferOptionType int
// Refer option types.
const (
ReferOptionNoOption ReferOptionType = iota
ReferOptionRestrict
ReferOptionCascade
ReferOptionSetNull
ReferOptionNoAction
ReferOptionSetDefault
)
// String implements fmt.Stringer interface.
func (r ReferOptionType) String() string {
switch r {
case ReferOptionRestrict:
return "RESTRICT"
case ReferOptionCascade:
return "CASCADE"
case ReferOptionSetNull:
return "SET NULL"
case ReferOptionNoAction:
return "NO ACTION"
case ReferOptionSetDefault:
return "SET DEFAULT"
}
return ""
}
// CIStr is case insensitive string.
type CIStr struct {
O string `json:"O"` // Original string.
L string `json:"L"` // Lower case string.
}
// Hash64 implements HashEquals interface.
func (cis *CIStr) Hash64(h util.IHasher) {
h.HashString(cis.L)
}
// Equals implements HashEquals interface.
func (cis *CIStr) Equals(other any) bool {
cis2, ok := other.(*CIStr)
if !ok {
return false
}
if cis == nil {
return cis2 == nil
}
if cis2 == nil {
return false
}
return cis.L == cis2.L
}
// String implements fmt.Stringer interface.
func (cis CIStr) String() string {
return cis.O
}
// NewCIStr creates a new CIStr.
func NewCIStr(s string) (cs CIStr) {
cs.O = s
cs.L = strings.ToLower(s)
return
}
// UnmarshalJSON implements the user defined unmarshal method.
// CIStr can be unmarshaled from a single string, so PartitionDefinition.Name
// in this change https://github.com/pingcap/tidb/pull/6460/files would be
// compatible during TiDB upgrading.
func (cis *CIStr) UnmarshalJSON(b []byte) error {
type T CIStr
if err := json.Unmarshal(b, (*T)(cis)); err == nil {
return nil
}
// Unmarshal CIStr from a single string.
err := json.Unmarshal(b, &cis.O)
if err != nil {
return errors.Trace(err)
}
cis.L = strings.ToLower(cis.O)
return nil
}
// MemoryUsage return the memory usage of CIStr
func (cis *CIStr) MemoryUsage() (sum int64) {
if cis == nil {
return
}
return int64(unsafe.Sizeof(cis.O))*2 + int64(len(cis.O)+len(cis.L))
}
// RunawayActionType is the type of runaway action.
type RunawayActionType int32
// RunawayActionType values.
const (
RunawayActionNone RunawayActionType = iota
RunawayActionDryRun
RunawayActionCooldown
RunawayActionKill
RunawayActionSwitchGroup
)
// RunawayWatchType is the type of runaway watch.
type RunawayWatchType int32
// RunawayWatchType values.
const (
WatchNone RunawayWatchType = iota
WatchExact
WatchSimilar
WatchPlan
)
// String implements fmt.Stringer interface.
func (t RunawayWatchType) String() string {
switch t {
case WatchExact:
return "EXACT"
case WatchSimilar:
return "SIMILAR"
case WatchPlan:
return "PLAN"
default:
return "NONE"
}
}
// RunawayOptionType is the runaway's option type.
type RunawayOptionType int
// RunawayOptionType values.
const (
RunawayRule RunawayOptionType = iota
RunawayAction
RunawayWatch
)
// String implements fmt.Stringer interface.
func (t RunawayActionType) String() string {
switch t {
case RunawayActionDryRun:
return "DRYRUN"
case RunawayActionCooldown:
return "COOLDOWN"
case RunawayActionKill:
return "KILL"
case RunawayActionSwitchGroup:
return "SWITCH_GROUP"
default:
return "DRYRUN"
}
}
// ColumnChoice is the type of the column choice.
type ColumnChoice byte
// ColumnChoice values.
const (
DefaultChoice ColumnChoice = iota
AllColumns
PredicateColumns
ColumnList
)
// String implements fmt.Stringer interface.
func (s ColumnChoice) String() string {
switch s {
case AllColumns:
return "ALL"
case PredicateColumns:
return "PREDICATE"
case ColumnList:
return "LIST"
default:
return "DEFAULT"
}
}
// Priority values.
const (
LowPriorityValue = 1
MediumPriorityValue = 8
HighPriorityValue = 16
)
// PriorityValueToName converts the priority value to corresponding name
func PriorityValueToName(value uint64) string {
switch value {
case LowPriorityValue:
return "LOW"
case MediumPriorityValue:
return "MEDIUM"
case HighPriorityValue:
return "HIGH"
default:
return "MEDIUM"
}
}
// Copyright 2023 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// See the License for the specific language governing permissions and
// limitations under the License.
package ast
import (
"strconv"
"github.com/pingcap/errors"
"github.com/pingcap/tidb/pkg/parser/format"
"github.com/pingcap/tidb/pkg/parser/types"
)
var (
_ Node = &StoreParameter{}
_ Node = &ProcedureDecl{}
_ StmtNode = &ProcedureBlock{}
_ StmtNode = &ProcedureInfo{}
_ StmtNode = &DropProcedureStmt{}
_ StmtNode = &ProcedureElseIfBlock{}
_ StmtNode = &ProcedureElseBlock{}
_ StmtNode = &ProcedureIfBlock{}
_ StmtNode = &SimpleWhenThenStmt{}
_ StmtNode = &ProcedureIfInfo{}
_ StmtNode = &ProcedureLabelBlock{}
_ StmtNode = &ProcedureLabelLoop{}
_ StmtNode = &ProcedureJump{}
_ DeclNode = &ProcedureErrorControl{}
_ DeclNode = &ProcedureCursor{}
_ DeclNode = &ProcedureDecl{}
_ LabelInfo = &ProcedureLabelBlock{}
_ LabelInfo = &ProcedureLabelLoop{}
_ ErrNode = &ProcedureErrorCon{}
_ ErrNode = &ProcedureErrorVal{}
_ ErrNode = &ProcedureErrorState{}
)
// procedure param type.
const (
MODE_IN = iota
MODE_OUT
MODE_INOUT
)
// procedure handler operation type.
const (
PROCEDUR_CONTINUE = iota
PROCEDUR_EXIT
)
// procedure handler value string.
const (
PROCEDUR_SQLWARNING = iota
PROCEDUR_NOT_FOUND
PROCEDUR_SQLEXCEPTION
PROCEDUR_END
)
// DeclNode expresses procedure block variable interface(include handler\cursor\sp variable)
type DeclNode interface {
Node
}
// ErrNode expresses all types of handler condition value.
type ErrNode interface {
StmtNode
}
// ProcedureDeclInfo is the base node of a procedure variable.
type ProcedureDeclInfo struct {
node
}
// ProcedureErrorCondition is the base node of a condition value.
type ProcedureErrorCondition struct {
stmtNode
}
// LabelInfo is the interface of loop and block label.
type LabelInfo interface {
// GetErrorStatus gets label status, if error, return end label name and true.
// if normal,The returned string has no meaning and false.
GetErrorStatus() (string, bool)
// GetLabelName gets label name.
GetLabelName() string
// IsBlock gets type flag, true is block, false is loop.
IsBlock() bool
// GetBlock gets block stmtnode
GetBlock() StmtNode
}
// StoreParameter is the parameter of stored procedure.
type StoreParameter struct {
node
Paramstatus int
ParamType *types.FieldType
ParamName string
}
// Restore implements Node interface.
func (n *StoreParameter) Restore(ctx *format.RestoreCtx) error {
switch n.Paramstatus {
case MODE_IN:
ctx.WriteKeyWord(" IN ")
case MODE_OUT:
ctx.WriteKeyWord(" OUT ")
case MODE_INOUT:
ctx.WriteKeyWord(" INOUT ")
}
ctx.WriteName(n.ParamName)
ctx.WritePlain(" ")
ctx.WriteKeyWord(n.ParamType.CompactStr())
return nil
}
// Accept implements Node Accept interface.
func (n *StoreParameter) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*StoreParameter)
return v.Leave(n)
}
// ProcedureDecl represents the internal variables of stored procedure .
type ProcedureDecl struct {
ProcedureDeclInfo
DeclNames []string
DeclType *types.FieldType
DeclDefault ExprNode
}
// Restore implements Node interface.
func (n *ProcedureDecl) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("DECLARE ")
for i, name := range n.DeclNames {
if i != 0 {
ctx.WritePlain(",")
}
ctx.WriteName(name)
}
ctx.WritePlain(" ")
ctx.WriteKeyWord(n.DeclType.CompactStr())
if n.DeclDefault != nil {
ctx.WriteKeyWord(" DEFAULT ")
if err := n.DeclDefault.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occur while restore expr")
}
}
return nil
}
// Accept implements Node Accept interface.
func (n *ProcedureDecl) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*ProcedureDecl)
if n.DeclDefault != nil {
node, ok := n.DeclDefault.Accept(v)
if !ok {
return n, false
}
n.DeclDefault = node.(ExprNode)
}
return v.Leave(n)
}
// ProcedureBlock represents a procedure block.
type ProcedureBlock struct {
stmtNode
ProcedureVars []DeclNode // include handler && cursor && variable
ProcedureProcStmts []StmtNode // procedure statement
}
// Restore implements Node interface.
func (n *ProcedureBlock) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("BEGIN ")
for _, ProcedureVar := range n.ProcedureVars {
err := ProcedureVar.Restore(ctx)
if err != nil {
return err
}
ctx.WritePlain(";")
}
for _, ProcedureProcStmt := range n.ProcedureProcStmts {
err := ProcedureProcStmt.Restore(ctx)
if err != nil {
return err
}
ctx.WritePlain(";")
}
ctx.WriteKeyWord(" END")
return nil
}
// Accept implements Node interface.
func (n *ProcedureBlock) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*ProcedureBlock)
for i, ProcedureVar := range n.ProcedureVars {
node, ok := ProcedureVar.Accept(v)
if !ok {
return n, false
}
n.ProcedureVars[i] = node.(DeclNode)
}
// Store Procedure doesn't check the justifiability for statements, so don't traverse ProcedureProcStmts.
return v.Leave(n)
}
// ProcedureInfo stores all procedure information.
type ProcedureInfo struct {
stmtNode
IfNotExists bool
ProcedureName *TableName
ProcedureParam []*StoreParameter //procedure param
ProcedureBody StmtNode //procedure body statement
ProcedureParamStr string //procedure parameter string
}
// Restore implements Node interface.
func (n *ProcedureInfo) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("CREATE PROCEDURE ")
if n.IfNotExists {
ctx.WriteKeyWord("IF NOT EXISTS ")
}
err := n.ProcedureName.Restore(ctx)
if err != nil {
return err
}
ctx.WritePlain("(")
for i, ProcedureParam := range n.ProcedureParam {
if i > 0 {
ctx.WritePlain(",")
}
err := ProcedureParam.Restore(ctx)
if err != nil {
return err
}
}
ctx.WritePlain(") ")
err = (n.ProcedureBody).Restore(ctx)
if err != nil {
return err
}
return nil
}
// Accept implements Node Accept interface.
func (n *ProcedureInfo) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*ProcedureInfo)
for i, ProcedureParam := range n.ProcedureParam {
node, ok := ProcedureParam.Accept(v)
if !ok {
return n, false
}
n.ProcedureParam[i] = node.(*StoreParameter)
}
node, ok := n.ProcedureBody.Accept(v)
if !ok {
return n, false
}
n.ProcedureBody = node.(StmtNode)
return v.Leave(n)
}
// DropProcedureStmt represents the ast of `drop procedure`
type DropProcedureStmt struct {
stmtNode
IfExists bool
ProcedureName *TableName
}
// Restore implements DropProcedureStmt interface.
func (n *DropProcedureStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("DROP PROCEDURE ")
if n.IfExists {
ctx.WriteKeyWord("IF EXISTS ")
}
err := n.ProcedureName.Restore(ctx)
if err != nil {
return err
}
return nil
}
// Accept implements Node interface.
func (n *DropProcedureStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*DropProcedureStmt)
return v.Leave(n)
}
// ProcedureIfInfo stores the `if statement` of procedure.
type ProcedureIfInfo struct {
stmtNode
IfBody *ProcedureIfBlock
}
// Restore implements Node interface.
func (n *ProcedureIfInfo) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("IF ")
err := n.IfBody.Restore(ctx)
if err != nil {
return err
}
ctx.WriteKeyWord("END IF")
return nil
}
// Accept implements ProcedureIfInfo Accept interface.
func (n *ProcedureIfInfo) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*ProcedureIfInfo)
node, ok := n.IfBody.Accept(v)
if !ok {
return n, false
}
n.IfBody = node.(*ProcedureIfBlock)
return v.Leave(n)
}
// ProcedureElseIfBlock stores the `elseif` statement info of procedure.
type ProcedureElseIfBlock struct {
stmtNode
ProcedureIfStmt *ProcedureIfBlock
}
// Restore implements Node interface.
func (n *ProcedureElseIfBlock) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("ELSEIF ")
err := n.ProcedureIfStmt.Restore(ctx)
if err != nil {
return err
}
return nil
}
// Accept implements ProcedureElseIfBlock Accept interface.
func (n *ProcedureElseIfBlock) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*ProcedureElseIfBlock)
node, ok := n.ProcedureIfStmt.Accept(v)
if !ok {
return n, false
}
n.ProcedureIfStmt = node.(*ProcedureIfBlock)
return v.Leave(n)
}
// ProcedureElseBlock stores procedure `else` statement info.
type ProcedureElseBlock struct {
stmtNode
ProcedureIfStmts []StmtNode
}
// Restore implements ProcedureElseBlock interface.
func (n *ProcedureElseBlock) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("ELSE ")
for _, stmt := range n.ProcedureIfStmts {
err := stmt.Restore(ctx)
if err != nil {
return err
}
ctx.WriteKeyWord(";")
}
return nil
}
// Accept implements ProcedureElseBlock Accept interface.
func (n *ProcedureElseBlock) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*ProcedureElseBlock)
return v.Leave(n)
}
// ProcedureIfBlock stores `expr ... else if ... else ...` statement in procedure.
type ProcedureIfBlock struct {
stmtNode
IfExpr ExprNode
ProcedureIfStmts []StmtNode
ProcedureElseStmt StmtNode
}
// Restore implements ProcedureIfBlock interface.
func (n *ProcedureIfBlock) Restore(ctx *format.RestoreCtx) error {
err := n.IfExpr.Restore(ctx)
if err != nil {
return err
}
ctx.WriteKeyWord(" THEN ")
for _, stmt := range n.ProcedureIfStmts {
err := stmt.Restore(ctx)
if err != nil {
return err
}
ctx.WriteKeyWord(";")
}
if n.ProcedureElseStmt != nil {
err = n.ProcedureElseStmt.Restore(ctx)
if err != nil {
return err
}
}
return nil
}
// Accept implements ProcedureIfBlock Accept interface.
func (n *ProcedureIfBlock) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*ProcedureIfBlock)
if n.IfExpr != nil {
node, ok := n.IfExpr.Accept(v)
if !ok {
return n, false
}
n.IfExpr = node.(ExprNode)
}
if n.ProcedureElseStmt != nil {
node, ok := n.ProcedureElseStmt.Accept(v)
if !ok {
return n, false
}
n.ProcedureElseStmt = node.(StmtNode)
}
return v.Leave(n)
}
// SimpleWhenThenStmt stores `case expr then ...` statement.
type SimpleWhenThenStmt struct {
stmtNode
Expr ExprNode
ProcedureStmts []StmtNode
}
// Restore implements SimpleWhenThenStmt interface.
func (n *SimpleWhenThenStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("WHEN ")
err := n.Expr.Restore(ctx)
if err != nil {
return err
}
ctx.WriteKeyWord(" THEN ")
for _, stmt := range n.ProcedureStmts {
err := stmt.Restore(ctx)
if err != nil {
return err
}
ctx.WriteKeyWord(";")
}
return nil
}
// Accept implements SimpleWhenThenStmt Accept interface.
func (n *SimpleWhenThenStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*SimpleWhenThenStmt)
if n.Expr != nil {
node, ok := n.Expr.Accept(v)
if !ok {
return n, false
}
n.Expr = node.(ExprNode)
}
// Store Procedure do not check sql justifiability, so don't traverse ProcedureStmts.
return v.Leave(n)
}
// SimpleCaseStmt store WhenCases SimpleWhenThenStmt `case expr SimpleWhenThenStmt else ...` statement.
type SimpleCaseStmt struct {
stmtNode
Condition ExprNode
WhenCases []*SimpleWhenThenStmt
ElseCases []StmtNode
}
// Restore implements SimpleCaseStmt interface.
func (n *SimpleCaseStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("CASE ")
err := n.Condition.Restore(ctx)
if err != nil {
return err
}
ctx.WriteKeyWord(" ")
for _, stmt := range n.WhenCases {
err := stmt.Restore(ctx)
if err != nil {
return err
}
}
if n.ElseCases != nil {
ctx.WriteKeyWord(" ELSE ")
for _, stmt := range n.ElseCases {
err := stmt.Restore(ctx)
if err != nil {
return err
}
ctx.WriteKeyWord(";")
}
}
ctx.WriteKeyWord(" END CASE")
return nil
}
// Accept implements SimpleCaseStmt Accept interface.
func (n *SimpleCaseStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*SimpleCaseStmt)
node, ok := n.Condition.Accept(v)
if !ok {
return n, false
}
n.Condition = node.(ExprNode)
for i, stmt := range n.WhenCases {
node, ok := stmt.Accept(v)
if !ok {
return n, false
}
n.WhenCases[i] = node.(*SimpleWhenThenStmt)
}
if n.ElseCases != nil {
for i, stmt := range n.ElseCases {
node, ok := stmt.Accept(v)
if !ok {
return n, false
}
n.ElseCases[i] = node.(StmtNode)
}
}
return v.Leave(n)
}
// SearchWhenThenStmt stores SearchCaseStmt whencase `case expr then ...` statement.
type SearchWhenThenStmt struct {
stmtNode
Expr ExprNode
ProcedureStmts []StmtNode
}
// Restore implements SearchWhenThenStmt interface.
func (n *SearchWhenThenStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("WHEN ")
err := n.Expr.Restore(ctx)
if err != nil {
return err
}
ctx.WriteKeyWord(" THEN ")
for _, stmt := range n.ProcedureStmts {
err := stmt.Restore(ctx)
if err != nil {
return err
}
ctx.WriteKeyWord(";")
}
return nil
}
// Accept implements SearchWhenThenStmt Accept interface.
func (n *SearchWhenThenStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*SearchWhenThenStmt)
if n.Expr != nil {
node, ok := n.Expr.Accept(v)
if !ok {
return n, false
}
n.Expr = node.(ExprNode)
}
// Store Procedure do not check sql justifiability, so don't traverse ProcedureStmts.
return v.Leave(n)
}
// SearchCaseStmt store `case SimpleWhenThenStmt else ...` statement.
type SearchCaseStmt struct {
stmtNode
WhenCases []*SearchWhenThenStmt
ElseCases []StmtNode
}
// Restore implements SearchCaseStmt interface.
func (n *SearchCaseStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("CASE ")
for _, stmt := range n.WhenCases {
err := stmt.Restore(ctx)
if err != nil {
return err
}
}
if n.ElseCases != nil {
ctx.WriteKeyWord(" ELSE ")
for _, stmt := range n.ElseCases {
err := stmt.Restore(ctx)
if err != nil {
return err
}
ctx.WriteKeyWord(";")
}
}
ctx.WriteKeyWord(" END CASE")
return nil
}
// Accept implements SimpleCaseStmt Accept interface.
func (n *SearchCaseStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*SearchCaseStmt)
for i, stmt := range n.WhenCases {
node, ok := stmt.Accept(v)
if !ok {
return n, false
}
n.WhenCases[i] = node.(*SearchWhenThenStmt)
}
// Store Procedure do not check sql justifiability, so don't traverse ElseCases.
return v.Leave(n)
}
// ProcedureRepeatStmt store `repeat ... until expr end repeat` statement.
type ProcedureRepeatStmt struct {
stmtNode
Body []StmtNode
Condition ExprNode
}
// Restore implements ProcedureRepeatStmt interface.
func (n *ProcedureRepeatStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("REPEAT ")
for _, stmt := range n.Body {
err := stmt.Restore(ctx)
if err != nil {
return err
}
ctx.WriteKeyWord(";")
}
ctx.WriteKeyWord("UNTIL ")
err := n.Condition.Restore(ctx)
if err != nil {
return err
}
ctx.WriteKeyWord(" END REPEAT")
return nil
}
// Accept implements ProcedureRepeatStmt Accept interface.
func (n *ProcedureRepeatStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*ProcedureRepeatStmt)
for i, stmt := range n.Body {
node, ok := stmt.Accept(v)
if !ok {
return n, false
}
n.Body[i] = node.(StmtNode)
}
node, ok := n.Condition.Accept(v)
if !ok {
return n, false
}
n.Condition = node.(ExprNode)
return v.Leave(n)
}
// ProcedureWhileStmt stores `while expr do ... end while` statement.
type ProcedureWhileStmt struct {
stmtNode
Condition ExprNode
Body []StmtNode
}
// Restore implements ProcedureWhileStmt interface.
func (n *ProcedureWhileStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("WHILE ")
err := n.Condition.Restore(ctx)
if err != nil {
return err
}
ctx.WriteKeyWord(" DO ")
for _, stmt := range n.Body {
err := stmt.Restore(ctx)
if err != nil {
return err
}
ctx.WriteKeyWord(";")
}
ctx.WriteKeyWord("END WHILE")
return nil
}
// Accept implements ProcedureWhileStmt Accept interface.
func (n *ProcedureWhileStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*ProcedureWhileStmt)
node, ok := n.Condition.Accept(v)
if !ok {
return n, false
}
n.Condition = node.(ExprNode)
for i, stmt := range n.Body {
node, ok := stmt.Accept(v)
if !ok {
return n, false
}
n.Body[i] = node.(StmtNode)
}
return v.Leave(n)
}
// ProcedureCursor stores procedure cursor statement.
type ProcedureCursor struct {
ProcedureDeclInfo
CurName string
Selectstring StmtNode
}
// Restore implements ProcedureCursor interface.
func (n *ProcedureCursor) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("DECLARE ")
ctx.WriteKeyWord(n.CurName)
ctx.WriteKeyWord(" CURSOR FOR ")
err := n.Selectstring.Restore(ctx)
if err != nil {
return err
}
return nil
}
// Accept implements ProcedureCursor Accept interface.
func (n *ProcedureCursor) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*ProcedureCursor)
return v.Leave(n)
}
// ProcedureErrorControl stored procedure handler statement.
type ProcedureErrorControl struct {
ProcedureDeclInfo
ControlHandle int // handler operation (exit\continue).
ErrorCon []ErrNode //handler condition value.
Operate StmtNode // handler block.
}
// Restore implements ProcedureErrorControl interface.
func (n *ProcedureErrorControl) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("DECLARE ")
switch n.ControlHandle {
case PROCEDUR_CONTINUE:
ctx.WriteKeyWord("CONTINUE ")
case PROCEDUR_EXIT:
ctx.WriteKeyWord("EXIT ")
}
ctx.WriteKeyWord("HANDLER FOR ")
for i, errorInfo := range n.ErrorCon {
err := errorInfo.Restore(ctx)
if err != nil {
return err
}
if i+1 != len(n.ErrorCon) {
ctx.WritePlain(", ")
}
}
ctx.WritePlain(" ")
err := n.Operate.Restore(ctx)
if err != nil {
return err
}
return nil
}
// Accept implements ProcedureErrorControl Accept interface.
func (n *ProcedureErrorControl) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*ProcedureErrorControl)
for i, errorInfo := range n.ErrorCon {
node, ok := errorInfo.Accept(v)
if !ok {
return n, false
}
n.ErrorCon[i] = node.(ErrNode)
}
return v.Leave(n)
}
// ProcedureOpenCur store open cursor statement.
type ProcedureOpenCur struct {
stmtNode
CurName string
}
// Restore implements ProcedureOpenCur interface.
func (n *ProcedureOpenCur) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("OPEN ")
ctx.WriteKeyWord(n.CurName)
return nil
}
// Accept implements ProcedureOpenCur Accept interface.
func (n *ProcedureOpenCur) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*ProcedureOpenCur)
return v.Leave(n)
}
// ProcedureCloseCur store close cursor statement.
type ProcedureCloseCur struct {
stmtNode
CurName string
}
// Restore implements ProcedureCloseCur interface.
func (n *ProcedureCloseCur) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("CLOSE ")
ctx.WriteKeyWord(n.CurName)
return nil
}
// Accept implements ProcedureCloseCur Accept interface.
func (n *ProcedureCloseCur) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*ProcedureCloseCur)
return v.Leave(n)
}
// ProcedureFetchInto store cursor read data command.
type ProcedureFetchInto struct {
stmtNode
CurName string
Variables []string
}
// Restore implements ProcedureFetchInto interface.
func (n *ProcedureFetchInto) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("FETCH ")
ctx.WriteKeyWord(n.CurName)
ctx.WriteKeyWord(" INTO ")
for i, varName := range n.Variables {
ctx.WriteKeyWord(varName)
if i+1 < len(n.Variables) {
ctx.WriteKeyWord(", ")
}
}
return nil
}
// Accept implements ProcedureFetchInto Accept interface.
func (n *ProcedureFetchInto) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*ProcedureFetchInto)
return v.Leave(n)
}
// ProcedureErrorVal store procedure handler error code.
type ProcedureErrorVal struct {
ProcedureErrorCondition
ErrorNum uint64
}
// Restore implements ProcedureErrorVal interface.
func (n *ProcedureErrorVal) Restore(ctx *format.RestoreCtx) error {
ctx.WritePlain(strconv.FormatUint(n.ErrorNum, 10))
return nil
}
// Accept implements ProcedureErrorVal Accept interface.
func (n *ProcedureErrorVal) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*ProcedureErrorVal)
return v.Leave(n)
}
// ProcedureErrorState store procedure handler SQLSTATE string.
type ProcedureErrorState struct {
ProcedureErrorCondition
CodeStatus string
}
// Restore implements ProcedureErrorState interface.
func (n *ProcedureErrorState) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("SQLSTATE ")
ctx.WriteString(n.CodeStatus)
return nil
}
// Accept implements ProcedureErrorState Accept interface.
func (n *ProcedureErrorState) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*ProcedureErrorState)
return v.Leave(n)
}
// ProcedureErrorCon stores procedure handler status info.
type ProcedureErrorCon struct {
ProcedureErrorCondition
ErrorCon int
}
// Restore implements ProcedureErrorCon interface.
func (n *ProcedureErrorCon) Restore(ctx *format.RestoreCtx) error {
switch n.ErrorCon {
case PROCEDUR_SQLWARNING:
ctx.WriteKeyWord("SQLWARNING")
case PROCEDUR_NOT_FOUND:
ctx.WriteKeyWord("NOT FOUND")
case PROCEDUR_SQLEXCEPTION:
ctx.WriteKeyWord("SQLEXCEPTION")
}
return nil
}
// Accept implements ProcedureErrorCon Accept interface.
func (n *ProcedureErrorCon) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*ProcedureErrorCon)
return v.Leave(n)
}
// ProcedureLabelBlock stored procedure block label statement.
type ProcedureLabelBlock struct {
stmtNode
LabelName string
Block *ProcedureBlock
LabelError bool
LabelEnd string
}
// Restore implements ProcedureLabelBlock interface.
func (n *ProcedureLabelBlock) Restore(ctx *format.RestoreCtx) error {
ctx.WriteName(n.LabelName)
ctx.WriteKeyWord(": ")
err := n.Block.Restore(ctx)
if err != nil {
return err
}
if n.LabelError {
return errors.Errorf("the same label has different names,begin: %s,end: %s", n.LabelName, n.LabelEnd)
}
ctx.WriteKeyWord(" ")
ctx.WriteName(n.LabelName)
return nil
}
// Accept implements ProcedureLabelBlock Accept interface.
func (n *ProcedureLabelBlock) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*ProcedureLabelBlock)
node, ok := n.Block.Accept(v)
if !ok {
return n, false
}
n.Block = node.(*ProcedureBlock)
// Store Procedure do not check sql justifiability, so don't traverse ProcedureProcStmts.
return v.Leave(n)
}
// GetErrorStatus gets label error info.
func (n *ProcedureLabelBlock) GetErrorStatus() (string, bool) {
return n.LabelEnd, n.LabelError
}
// GetLabelName gets label name.
func (n *ProcedureLabelBlock) GetLabelName() string {
return n.LabelName
}
// IsBlock gets block flag.
func (n *ProcedureLabelBlock) IsBlock() bool {
return true
}
// GetBlock gets the block stmtnode
func (n *ProcedureLabelBlock) GetBlock() StmtNode {
return n.Block
}
// ProcedureLabelLoop stores the labeled loop block info in procedure.
type ProcedureLabelLoop struct {
stmtNode
LabelName string
Block StmtNode
LabelError bool
LabelEnd string
}
// Restore implements ProcedureLabelLoop interface.
func (n *ProcedureLabelLoop) Restore(ctx *format.RestoreCtx) error {
ctx.WriteName(n.LabelName)
ctx.WriteKeyWord(": ")
err := n.Block.Restore(ctx)
if err != nil {
return err
}
if n.LabelError {
return errors.Errorf("the same label has different names,begin: %s,end: %s", n.LabelName, n.LabelEnd)
}
ctx.WriteKeyWord(" ")
ctx.WriteName(n.LabelName)
return nil
}
// Accept implements ProcedureLabelBlock Accept interface.
func (n *ProcedureLabelLoop) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*ProcedureLabelLoop)
node, ok := n.Block.Accept(v)
if !ok {
return n, false
}
n.Block = node.(StmtNode)
// Store Procedure do not check sql justifiability, so don't traverse ProcedureProcStmts.
return v.Leave(n)
}
// GetErrorStatus get label error info.
func (n *ProcedureLabelLoop) GetErrorStatus() (string, bool) {
return n.LabelEnd, n.LabelError
}
// GetLabelName get label name.
func (n *ProcedureLabelLoop) GetLabelName() string {
return n.LabelName
}
// IsBlock get block flag.
func (n *ProcedureLabelLoop) IsBlock() bool {
return false
}
// GetBlock get label stmtnode
func (n *ProcedureLabelLoop) GetBlock() StmtNode {
return n.Block
}
// ProcedureJump stores the Jump statements(leave and iterate) in procedure.
type ProcedureJump struct {
stmtNode
Name string
IsLeave bool
}
// Restore implements ProcedureJump interface.
func (n *ProcedureJump) Restore(ctx *format.RestoreCtx) error {
if n.IsLeave {
ctx.WriteKeyWord("LEAVE ")
} else {
ctx.WriteKeyWord("ITERATE ")
}
ctx.WriteString(n.Name)
return nil
}
// Accept implements ProcedureJump Accept interface.
func (n *ProcedureJump) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*ProcedureJump)
return v.Leave(n)
}
// Copyright 2025 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// See the License for the specific language governing permissions and
// limitations under the License.
package ast
// DDL Statements
const (
// AlterDatabaseCommand represents ALTER DATABASE statement
AlterDatabaseCommand = "ALTER DATABASE"
// AlterInstanceCommand represents ALTER INSTANCE statement
AlterInstanceCommand = "ALTER INSTANCE"
// AlterPlacementPolicyCommand represents ALTER PLACEMENT POLICY statement
AlterPlacementPolicyCommand = "ALTER PLACEMENT POLICY"
// AlterRangeCommand represents ALTER RANGE statement
AlterRangeCommand = "ALTER RANGE"
// AlterResourceGroupCommand represents ALTER RESOURCE GROUP statement
AlterResourceGroupCommand = "ALTER RESOURCE GROUP"
// AlterSequenceCommand represents ALTER SEQUENCE statement
AlterSequenceCommand = "ALTER SEQUENCE"
// AlterTableCommand represents ALTER TABLE statement
AlterTableCommand = "ALTER TABLE"
// AlterUserCommand represents ALTER USER statement
AlterUserCommand = "ALTER USER"
// AdminCleanupTableLockCommand represents ADMIN CLEANUP TABLE LOCK statement
AdminCleanupTableLockCommand = "ADMIN CLEANUP TABLE LOCK"
// CreateDatabaseCommand represents CREATE DATABASE statement
CreateDatabaseCommand = "CREATE DATABASE"
// CreateIndexCommand represents CREATE INDEX statement
CreateIndexCommand = "CREATE INDEX"
// CreatePlacementPolicyCommand represents CREATE PLACEMENT POLICY statement
CreatePlacementPolicyCommand = "CREATE PLACEMENT POLICY"
// CreateResourceGroupCommand represents CREATE RESOURCE GROUP statement
CreateResourceGroupCommand = "CREATE RESOURCE GROUP"
// CreateSequenceCommand represents CREATE SEQUENCE statement
CreateSequenceCommand = "CREATE SEQUENCE"
// CreateTableCommand represents CREATE TABLE statement
CreateTableCommand = "CREATE TABLE"
// CreateUserCommand represents CREATE USER statement
CreateUserCommand = "CREATE USER"
// CreateViewCommand represents CREATE VIEW statement
CreateViewCommand = "CREATE VIEW"
// DropDatabaseCommand represents DROP DATABASE statement
DropDatabaseCommand = "DROP DATABASE"
// DropIndexCommand represents DROP INDEX statement
DropIndexCommand = "DROP INDEX"
// DropPlacementPolicyCommand represents DROP PLACEMENT POLICY statement
DropPlacementPolicyCommand = "DROP PLACEMENT POLICY"
// DropResourceGroupCommand represents DROP RESOURCE GROUP statement
DropResourceGroupCommand = "DROP RESOURCE GROUP"
// DropSequenceCommand represents DROP SEQUENCE statement
DropSequenceCommand = "DROP SEQUENCE"
// DropTableCommand represents DROP TABLE statement
DropTableCommand = "DROP TABLE"
// DropViewCommand represents DROP VIEW statement
DropViewCommand = "DROP VIEW"
// DropUserCommand represents DROP USER statement
DropUserCommand = "DROP USER"
// FlashBackDatabaseCommand represents FLASHBACK DATABASE statement
FlashBackDatabaseCommand = "FLASHBACK DATABASE"
// FlashBackTableCommand represents FLASHBACK TABLE statement
FlashBackTableCommand = "FLASHBACK TABLE"
// FlashBackClusterCommand represents FLASHBACK CLUSTER statement
FlashBackClusterCommand = "FLASHBACK CLUSTER"
// LockTablesCommand represents LOCK TABLES statement
LockTablesCommand = "LOCK TABLES"
// OptimizeTableCommand represents OPTIMIZE TABLE statement
OptimizeTableCommand = "OPTIMIZE TABLE"
// RecoverTableCommand represents RECOVER TABLE statement
RecoverTableCommand = "RECOVER TABLE"
// RenameTableCommand represents RENAME TABLE statement
RenameTableCommand = "RENAME TABLE"
// RenameUserCommand represents RENAME USER statement
RenameUserCommand = "RENAME USER"
// AdminRepairTableCommand represents ADMIN REPAIR TABLE statement
AdminRepairTableCommand = "ADMIN REPAIR TABLE"
// TruncateTableCommand represents TRUNCATE TABLE statement
TruncateTableCommand = "TRUNCATE TABLE"
// UnlockTablesCommand represents UNLOCK TABLES statement
UnlockTablesCommand = "UNLOCK TABLES"
)
// DML Statements
const (
// CallCommand represents CALL statement
CallCommand = "CALL"
// DeleteCommand represents DELETE statement
DeleteCommand = "DELETE"
// DistributeTableCommand represents DISTRIBUTE TABLE statement
DistributeTableCommand = "DISTRIBUTE TABLE"
// ImportIntoCommand represents IMPORT INTO statement
ImportIntoCommand = "IMPORT INTO"
// ReplaceCommand represents REPLACE statement
ReplaceCommand = "REPLACE"
// InsertCommand represents INSERT statement
InsertCommand = "INSERT"
// LoadDataCommand represents LOAD DATA statement
LoadDataCommand = "LOAD DATA"
// BatchCommand represents BATCH statement
BatchCommand = "BATCH"
// SelectCommand represents SELECT statement
SelectCommand = "SELECT"
// SplitRegionCommand represents SPLIT REGION statement
SplitRegionCommand = "SPLIT REGION"
// UpdateCommand represents UPDATE statement
UpdateCommand = "UPDATE"
)
// Show Statements
const (
// ShowCommand represents SHOW statement
ShowCommand = "SHOW"
// ShowCreateTableCommand represents SHOW CREATE TABLE statement
ShowCreateTableCommand = "SHOW CREATE TABLE"
// ShowCreateViewCommand represents SHOW CREATE VIEW statement
ShowCreateViewCommand = "SHOW CREATE VIEW"
// ShowCreateDatabaseCommand represents SHOW CREATE DATABASE statement
ShowCreateDatabaseCommand = "SHOW CREATE DATABASE"
// ShowCreateUserCommand represents SHOW CREATE USER statement
ShowCreateUserCommand = "SHOW CREATE USER"
// ShowCreateSequenceCommand represents SHOW CREATE SEQUENCE statement
ShowCreateSequenceCommand = "SHOW CREATE SEQUENCE"
// ShowCreatePlacementPolicyCommand represents SHOW CREATE PLACEMENT POLICY statement
ShowCreatePlacementPolicyCommand = "SHOW CREATE PLACEMENT POLICY"
// ShowCreateResourceGroupCommand represents SHOW CREATE RESOURCE GROUP statement
ShowCreateResourceGroupCommand = "SHOW CREATE RESOURCE GROUP"
// ShowCreateProcedureCommand represents SHOW CREATE PROCEDURE statement
ShowCreateProcedureCommand = "SHOW CREATE PROCEDURE"
// ShowDatabasesCommand represents SHOW DATABASES statement
ShowDatabasesCommand = "SHOW DATABASES"
// ShowTableCommand represents SHOW TABLES statement
ShowTableCommand = "SHOW TABLE"
// ShowTableStatusCommand represents SHOW TABLE STATUS statement
ShowTableStatusCommand = "SHOW TABLE STATUS"
// ShowColumnsCommand represents SHOW COLUMNS statement
ShowColumnsCommand = "SHOW COLUMNS"
// ShowIndexCommand represents SHOW INDEX statement
ShowIndexCommand = "SHOW INDEX"
// ShowVariablesCommand represents SHOW VARIABLES statement
ShowVariablesCommand = "SHOW VARIABLES"
// ShowStatusCommand represents SHOW STATUS statement
ShowStatusCommand = "SHOW STATUS"
// ShowProcessListCommand represents SHOW PROCESSLIST statement
ShowProcessListCommand = "SHOW PROCESSLIST"
// ShowEnginesCommand represents SHOW ENGINES statement
ShowEnginesCommand = "SHOW ENGINES"
// ShowCharsetCommand represents SHOW CHARSET statement
ShowCharsetCommand = "SHOW CHARSET"
// ShowCollationCommand represents SHOW COLLATION statement
ShowCollationCommand = "SHOW COLLATION"
// ShowWarningsCommand represents SHOW WARNINGS statement
ShowWarningsCommand = "SHOW WARNINGS"
// ShowErrorsCommand represents SHOW ERRORS statement
ShowErrorsCommand = "SHOW ERRORS"
// ShowGrantsCommand represents SHOW GRANTS statement
ShowGrantsCommand = "SHOW GRANTS"
// ShowPrivilegesCommand represents SHOW PRIVILEGES statement
ShowPrivilegesCommand = "SHOW PRIVILEGES"
// ShowTriggersCommand represents SHOW TRIGGERS statement
ShowTriggersCommand = "SHOW TRIGGERS"
// ShowProcedureStatusCommand represents SHOW PROCEDURE STATUS statement
ShowProcedureStatusCommand = "SHOW PROCEDURE STATUS"
// ShowFunctionStatusCommand represents SHOW FUNCTION STATUS statement
ShowFunctionStatusCommand = "SHOW FUNCTION STATUS"
// ShowEventsCommand represents SHOW EVENTS statement
ShowEventsCommand = "SHOW EVENTS"
// ShowPluginsCommand represents SHOW PLUGINS statement
ShowPluginsCommand = "SHOW PLUGINS"
// ShowProfileCommand represents SHOW PROFILE statement
ShowProfileCommand = "SHOW PROFILE"
// ShowProfilesCommand represents SHOW PROFILES statement
ShowProfilesCommand = "SHOW PROFILES"
// ShowMasterStatusCommand represents SHOW MASTER STATUS statement
ShowMasterStatusCommand = "SHOW MASTER STATUS"
// ShowBinaryLogStatusCommand represents SHOW BINARY LOG STATUS statement
ShowBinaryLogStatusCommand = "SHOW BINARY LOG STATUS"
// ShowOpenTablesCommand represents SHOW OPEN TABLES statement
ShowOpenTablesCommand = "SHOW OPEN TABLES"
// ShowConfigCommand represents SHOW CONFIG statement
ShowConfigCommand = "SHOW CONFIG"
// ShowStatsExtendedCommand represents SHOW STATS_EXTENDED statement
ShowStatsExtendedCommand = "SHOW STATS_EXTENDED"
// ShowStatsMetaCommand represents SHOW STATS_META statement
ShowStatsMetaCommand = "SHOW STATS_META"
// ShowStatsHistogramsCommand represents SHOW STATS_HISTOGRAMS statement
ShowStatsHistogramsCommand = "SHOW STATS_HISTOGRAMS"
// ShowStatsTopNCommand represents SHOW STATS_TOPN statement
ShowStatsTopNCommand = "SHOW STATS_TOPN"
// ShowStatsBucketsCommand represents SHOW STATS_BUCKETS statement
ShowStatsBucketsCommand = "SHOW STATS_BUCKETS"
// ShowStatsHealthyCommand represents SHOW STATS_HEALTHY statement
ShowStatsHealthyCommand = "SHOW STATS_HEALTHY"
// ShowStatsLockedCommand represents SHOW STATS_LOCKED statement
ShowStatsLockedCommand = "SHOW STATS_LOCKED"
// ShowHistogramsInFlightCommand represents SHOW HISTOGRAMS_IN_FLIGHT statement
ShowHistogramsInFlightCommand = "SHOW HISTOGRAMS_IN_FLIGHT"
// ShowColumnStatsUsageCommand represents SHOW COLUMN_STATS_USAGE statement
ShowColumnStatsUsageCommand = "SHOW COLUMN_STATS_USAGE"
// ShowBindingsCommand represents SHOW BINDINGS statement
ShowBindingsCommand = "SHOW BINDINGS"
// ShowBindingCacheStatusCommand represents SHOW BINDING_CACHE STATUS statement
ShowBindingCacheStatusCommand = "SHOW BINDING_CACHE STATUS"
// ShowAnalyzeStatusCommand represents SHOW ANALYZE STATUS statement
ShowAnalyzeStatusCommand = "SHOW ANALYZE STATUS"
// ShowRegionsCommand represents SHOW TABLE REGIONS statement
ShowRegionsCommand = "SHOW TABLE REGIONS"
// ShowBuiltinsCommand represents SHOW BUILTINS statement
ShowBuiltinsCommand = "SHOW BUILTINS"
// ShowTableNextRowIdCommand represents SHOW TABLE NEXT_ROW_ID statement
ShowTableNextRowIdCommand = "SHOW TABLE NEXT_ROW_ID"
// ShowBackupsCommand represents SHOW BACKUPS statement
ShowBackupsCommand = "SHOW BACKUPS"
// ShowRestoresCommand represents SHOW RESTORES statement
ShowRestoresCommand = "SHOW RESTORES"
// ShowImportsCommand represents SHOW IMPORTS statement
ShowImportsCommand = "SHOW IMPORTS"
// ShowCreateImportCommand represents SHOW CREATE IMPORT statement
ShowCreateImportCommand = "SHOW CREATE IMPORT"
// ShowImportJobsCommand represents SHOW IMPORT JOBS statement
ShowImportJobsCommand = "SHOW IMPORT JOBS"
// ShowImportGroupsCommand represents SHOW IMPORT GROUPS statement
ShowImportGroupsCommand = "SHOW IMPORT GROUPS"
// ShowPlacementCommand represents SHOW PLACEMENT statement
ShowPlacementCommand = "SHOW PLACEMENT"
// ShowPlacementForDatabaseCommand represents SHOW PLACEMENT FOR DATABASE statement
ShowPlacementForDatabaseCommand = "SHOW PLACEMENT FOR DATABASE"
// ShowPlacementForTableCommand represents SHOW PLACEMENT FOR TABLE statement
ShowPlacementForTableCommand = "SHOW PLACEMENT FOR TABLE"
// ShowPlacementForPartitionCommand represents SHOW PLACEMENT FOR PARTITION statement
ShowPlacementForPartitionCommand = "SHOW PLACEMENT FOR PARTITION"
// ShowPlacementLabelsCommand represents SHOW PLACEMENT LABELS statement
ShowPlacementLabelsCommand = "SHOW PLACEMENT LABELS"
// ShowSessionStatesCommand represents SHOW SESSION_STATES statement
ShowSessionStatesCommand = "SHOW SESSION_STATES"
// ShowDistributionsCommand represents SHOW DISTRIBUTIONS statement
ShowDistributionsCommand = "SHOW DISTRIBUTIONS"
// ShowPlanCommand represents SHOW PLAN statement
ShowPlanCommand = "SHOW PLAN"
// ShowDistributionJobsCommand represents SHOW DISTRIBUTION JOBS statement
ShowDistributionJobsCommand = "SHOW DISTRIBUTION JOB"
)
// Admin Commands
const (
// AdminShowDDLCommand represents ADMIN SHOW DDL statement
AdminShowDDLCommand = "ADMIN SHOW DDL"
// AdminCheckTableCommand represents ADMIN CHECK TABLE statement
AdminCheckTableCommand = "ADMIN CHECK TABLE"
// AdminShowDDLJobsCommand represents ADMIN SHOW DDL JOBS statement
AdminShowDDLJobsCommand = "ADMIN SHOW DDL JOBS"
// AdminCancelDDLJobsCommand represents ADMIN CANCEL DDL JOBS statement
AdminCancelDDLJobsCommand = "ADMIN CANCEL DDL JOBS"
// AdminPauseDDLJobsCommand represents ADMIN PAUSE DDL JOBS statement
AdminPauseDDLJobsCommand = "ADMIN PAUSE DDL JOBS"
// AdminResumeDDLJobsCommand represents ADMIN RESUME DDL JOBS statement
AdminResumeDDLJobsCommand = "ADMIN RESUME DDL JOBS"
// AdminCheckIndexCommand represents ADMIN CHECK INDEX statement
AdminCheckIndexCommand = "ADMIN CHECK INDEX"
// AdminRecoverIndexCommand represents ADMIN RECOVER INDEX statement
AdminRecoverIndexCommand = "ADMIN RECOVER INDEX"
// AdminCleanupIndexCommand represents ADMIN CLEANUP INDEX statement
AdminCleanupIndexCommand = "ADMIN CLEANUP INDEX"
// AdminCheckIndexRangeCommand represents ADMIN CHECK INDEX RANGE statement
AdminCheckIndexRangeCommand = "ADMIN CHECK INDEX RANGE"
// AdminShowDDLJobQueriesCommand represents ADMIN SHOW DDL JOB QUERIES statement
AdminShowDDLJobQueriesCommand = "ADMIN SHOW DDL JOB QUERIES"
// AdminChecksumTableCommand represents ADMIN CHECKSUM TABLE statement
AdminChecksumTableCommand = "ADMIN CHECKSUM TABLE"
// AdminShowSlowCommand represents ADMIN SHOW SLOW statement
AdminShowSlowCommand = "ADMIN SHOW SLOW"
// AdminShowNextRowIDCommand represents ADMIN SHOW NEXT_ROW_ID statement
AdminShowNextRowIDCommand = "ADMIN SHOW NEXT_ROW_ID"
// AdminReloadExprPushdownBlacklistCommand represents ADMIN RELOAD EXPR_PUSHDOWN_BLACKLIST statement
AdminReloadExprPushdownBlacklistCommand = "ADMIN RELOAD EXPR_PUSHDOWN_BLACKLIST"
// AdminReloadOptRuleBlacklistCommand represents ADMIN RELOAD OPT_RULE_BLACKLIST statement
AdminReloadOptRuleBlacklistCommand = "ADMIN RELOAD OPT_RULE_BLACKLIST"
// AdminPluginsDisableCommand represents ADMIN PLUGINS DISABLE statement
AdminPluginsDisableCommand = "ADMIN PLUGINS DISABLE"
// AdminPluginsEnableCommand represents ADMIN PLUGINS ENABLE statement
AdminPluginsEnableCommand = "ADMIN PLUGINS ENABLE"
// AdminFlushBindingsCommand represents ADMIN FLUSH BINDINGS statement
AdminFlushBindingsCommand = "ADMIN FLUSH BINDINGS"
// AdminCaptureBindingsCommand represents ADMIN CAPTURE BINDINGS statement
AdminCaptureBindingsCommand = "ADMIN CAPTURE BINDINGS"
// AdminEvolveBindingsCommand represents ADMIN EVOLVE BINDINGS statement
AdminEvolveBindingsCommand = "ADMIN EVOLVE BINDINGS"
// AdminReloadBindingsCommand represents ADMIN RELOAD BINDINGS statement
AdminReloadBindingsCommand = "ADMIN RELOAD BINDINGS"
// AdminReloadStatsExtendedCommand represents ADMIN RELOAD STATS_EXTENDED statement
AdminReloadStatsExtendedCommand = "ADMIN RELOAD STATS_EXTENDED"
// AdminFlushPlanCacheCommand represents ADMIN FLUSH PLAN_CACHE statement
AdminFlushPlanCacheCommand = "ADMIN FLUSH PLAN_CACHE"
// AdminSetBDRRoleCommand represents ADMIN SET BDR ROLE statement
AdminSetBDRRoleCommand = "ADMIN SET BDR ROLE"
// AdminShowBDRRoleCommand represents ADMIN SHOW BDR ROLE statement
AdminShowBDRRoleCommand = "ADMIN SHOW BDR ROLE"
// AdminUnsetBDRRoleCommand represents ADMIN UNSET BDR ROLE statement
AdminUnsetBDRRoleCommand = "ADMIN UNSET BDR ROLE"
// AdminAlterDDLJobsCommand represents ADMIN ALTER DDL JOBS statement
AdminAlterDDLJobsCommand = "ADMIN ALTER DDL JOBS"
// AdminCreateWorkloadSnapshotCommand represents ADMIN CREATE WORKLOAD SNAPSHOT statement
AdminCreateWorkloadSnapshotCommand = "ADMIN CREATE WORKLOAD SNAPSHOT"
)
// BRIE Commands
const (
// BackupCommand represents BACKUP statement
BackupCommand = "BACKUP"
// RestoreCommand represents RESTORE statement
RestoreCommand = "RESTORE"
// RestorePITCommand represents RESTORE POINT IN TIME statement
RestorePITCommand = "RESTORE POINT"
// StreamStartCommand represents STREAM START statement
StreamStartCommand = "BACKUP LOGS"
// StreamStopCommand represents STREAM STOP statement
StreamStopCommand = "STOP BACKUP LOGS"
// StreamPauseCommand represents STREAM PAUSE statement
StreamPauseCommand = "PAUSE BACKUP LOGS"
// StreamResumeCommand represents STREAM RESUME statement
StreamResumeCommand = "RESUME BACKUP LOGS"
// StreamStatusCommand represents STREAM STATUS statement
StreamStatusCommand = "SHOW BACKUP LOGS STATUS"
// StreamMetaDataCommand represents STREAM METADATA statement
StreamMetaDataCommand = "SHOW BACKUP LOGS METADATA"
// StreamPurgeCommand represents STREAM PURGE statement
StreamPurgeCommand = "PURGE BACKUP LOGS"
// ShowBRJobCommand represents SHOW BR JOB statement
ShowBRJobCommand = "SHOW BR JOB"
// ShowBRJobQueryCommand represents SHOW BR JOB QUERY statement
ShowBRJobQueryCommand = "SHOW BR JOB QUERY"
// CancelBRJobCommand represents CANCEL BR JOB statement
CancelBRJobCommand = "CANCEL BR JOB"
// ShowBackupMetaCommand represents SHOW BACKUP META statement
ShowBackupMetaCommand = "SHOW BACKUP META"
)
// Miscellaneous Commands
const (
// AddQueryWatchCommand represents ADD QUERY WATCH statement
AddQueryWatchCommand = "ADD QUERY WATCH"
// AnalyzeTableCommand represents ANALYZE TABLE statement
AnalyzeTableCommand = "ANALYZE TABLE"
// BeginCommand represents BEGIN statement
BeginCommand = "BEGIN"
// BinlogCommand represents BINLOG statement
BinlogCommand = "BINLOG"
// CalibrateResourceCommand represents CALIBRATE RESOURCE statement
CalibrateResourceCommand = "CALIBRATE RESOURCE"
// CancelDistributionJobCommand represents CANCEL DISTRIBUTION JOB statement
CancelDistributionJobCommand = "CANCEL DISTRIBUTION JOB"
// CommitCommand represents COMMIT statement
CommitCommand = "COMMIT"
// AlterTableCompactCommand represents ALTER TABLE COMPACT statement
AlterTableCompactCommand = "ALTER TABLE COMPACT"
// CreateBindingCommand represents CREATE BINDING statement
CreateBindingCommand = "CREATE BINDING"
// CreateStatisticsCommand represents CREATE STATISTICS statement
CreateStatisticsCommand = "CREATE STATISTICS"
// DeallocateCommand represents DEALLOCATE statement
DeallocateCommand = "DEALLOCATE"
// DoCommand represents DO statement
DoCommand = "DO"
// DropBindingCommand represents DROP BINDING statement
DropBindingCommand = "DROP BINDING"
// DropQueryWatchCommand represents DROP QUERY WATCH statement
DropQueryWatchCommand = "DROP QUERY WATCH"
// DropStatisticsCommand represents DROP STATISTICS statement
DropStatisticsCommand = "DROP STATISTICS"
// ExecuteCommand represents EXECUTE statement
ExecuteCommand = "EXECUTE"
// ExplainForConnectionCommand represents EXPLAIN FOR CONNECTION statement
ExplainForConnectionCommand = "EXPLAIN FOR CONNECTION"
// ExplainAnalyzeCommand represents EXPLAIN ANALYZE statement
ExplainAnalyzeCommand = "EXPLAIN ANALYZE"
// ExplainCommand represents EXPLAIN statement
ExplainCommand = "EXPLAIN"
// FlushCommand represents FLUSH statement
FlushCommand = "FLUSH"
// GrantCommand represents GRANT statement
GrantCommand = "GRANT"
// GrantProxyCommand represents GRANT PROXY statement
GrantProxyCommand = "GRANT PROXY"
// GrantRoleCommand represents GRANT ROLE statement
GrantRoleCommand = "GRANT ROLE"
// HelpCommand represents HELP statement
HelpCommand = "HELP"
// CancelImportIntoJobCommand represents CANCEL IMPORT INTO JOB statement
CancelImportIntoJobCommand = "CANCEL IMPORT INTO JOB"
// KillCommand represents KILL statement
KillCommand = "KILL"
// PlanReplayerCommand represents PLAN REPLAYER statement
PlanReplayerCommand = "PLAN REPLAYER"
// PrepareCommand represents PREPARE statement
PrepareCommand = "PREPARE"
// ReleaseSavepointCommand represents RELEASE SAVEPOINT statement
ReleaseSavepointCommand = "RELEASE SAVEPOINT"
// RestartCommand represents RESTART statement
RestartCommand = "RESTART"
// RevokeCommand represents REVOKE statement
RevokeCommand = "REVOKE"
// RevokeRoleCommand represents REVOKE ROLE statement
RevokeRoleCommand = "REVOKE ROLE"
// RollbackCommand represents ROLLBACK statement
RollbackCommand = "ROLLBACK"
// SavepointCommand represents SAVEPOINT statement
SavepointCommand = "SAVEPOINT"
// SetBindingCommand represents SET BINDING statement
SetBindingCommand = "SET BINDING"
// SetConfigCommand represents SET CONFIG statement
SetConfigCommand = "SET CONFIG"
// SetDefaultRoleCommand represents SET DEFAULT ROLE statement
SetDefaultRoleCommand = "SET DEFAULT ROLE"
// SetPasswordCommand represents SET PASSWORD statement
SetPasswordCommand = "SET PASSWORD"
// SetResourceGroupCommand represents SET RESOURCE GROUP statement
SetResourceGroupCommand = "SET RESOURCE GROUP"
// SetRoleCommand represents SET ROLE statement
SetRoleCommand = "SET ROLE"
// SetSessionStatesCommand represents SET SESSION_STATES statement
SetSessionStatesCommand = "SET SESSION_STATES"
// SetCommand represents SET statement
SetCommand = "SET"
// ShutdownCommand represents SHUTDOWN statement
ShutdownCommand = "SHUTDOWN"
// TraceCommand represents TRACE statement
TraceCommand = "TRACE"
// TrafficCommand represents TRAFFIC statement
TrafficCommand = "TRAFFIC"
// UseCommand represents USE statement
UseCommand = "USE"
// LoadStatsCommand represents LOAD STATS statement
LoadStatsCommand = "LOAD STATS"
// DropStatsCommand represents DROP STATS statement
DropStatsCommand = "DROP STATS"
// LockStatsCommand represents LOCK STATS statement
LockStatsCommand = "LOCK STATS"
// UnlockStatsCommand represents UNLOCK STATS statement
UnlockStatsCommand = "UNLOCK STATS"
// RefreshStatsCommand represents REFRESH STATS statement
RefreshStatsCommand = "REFRESH STATS"
// RecommendIndexCommand represents RECOMMEND INDEX statement
RecommendIndexCommand = "RECOMMEND INDEX"
// ProcedureCommand represents all statements in procedure. It's too rough
// but still fine for now.
ProcedureCommand = "PROCEDURE"
// UnknownCommand represents unknown statements
UnknownCommand = "UNKNOWN"
// SetOprCommand represents UNION/INTERSECT/EXCEPT statement
SetOprCommand = "SET OPERATION"
)
// SEMCommand returns the command string for the statement.
func (n *AlterDatabaseStmt) SEMCommand() string {
return AlterDatabaseCommand
}
// SEMCommand returns the command string for the statement.
func (n *AlterInstanceStmt) SEMCommand() string {
return AlterInstanceCommand
}
// SEMCommand returns the command string for the statement.
func (n *AlterPlacementPolicyStmt) SEMCommand() string {
return AlterPlacementPolicyCommand
}
// SEMCommand returns the command string for the statement.
func (n *AlterRangeStmt) SEMCommand() string {
return AlterRangeCommand
}
// SEMCommand returns the command string for the statement.
func (n *AlterResourceGroupStmt) SEMCommand() string {
return AlterResourceGroupCommand
}
// SEMCommand returns the command string for the statement.
func (n *AlterSequenceStmt) SEMCommand() string {
return AlterSequenceCommand
}
// SEMCommand returns the command string for the statement.
func (n *AlterTableStmt) SEMCommand() string {
return AlterTableCommand
}
// SEMCommand returns the command string for the statement.
func (n *AlterUserStmt) SEMCommand() string {
return AlterUserCommand
}
// SEMCommand returns the command string for the statement.
func (n *CleanupTableLockStmt) SEMCommand() string {
return AdminCleanupTableLockCommand
}
// SEMCommand returns the command string for the statement.
func (n *CreateDatabaseStmt) SEMCommand() string {
return CreateDatabaseCommand
}
// SEMCommand returns the command string for the statement.
func (n *CreateIndexStmt) SEMCommand() string {
return CreateIndexCommand
}
// SEMCommand returns the command string for the statement.
func (n *CreatePlacementPolicyStmt) SEMCommand() string {
return CreatePlacementPolicyCommand
}
// SEMCommand returns the command string for the statement.
func (n *CreateResourceGroupStmt) SEMCommand() string {
return CreateResourceGroupCommand
}
// SEMCommand returns the command string for the statement.
func (n *CreateSequenceStmt) SEMCommand() string {
return CreateSequenceCommand
}
// SEMCommand returns the command string for the statement.
func (n *CreateTableStmt) SEMCommand() string {
return CreateTableCommand
}
// SEMCommand returns the command string for the statement.
func (n *CreateUserStmt) SEMCommand() string {
return CreateUserCommand
}
// SEMCommand returns the command string for the statement.
func (n *CreateViewStmt) SEMCommand() string {
return CreateViewCommand
}
// SEMCommand returns the command string for the statement.
func (n *DropDatabaseStmt) SEMCommand() string {
return DropDatabaseCommand
}
// SEMCommand returns the command string for the statement.
func (n *DropIndexStmt) SEMCommand() string {
return DropIndexCommand
}
// SEMCommand returns the command string for the statement.
func (n *DropPlacementPolicyStmt) SEMCommand() string {
return DropPlacementPolicyCommand
}
// SEMCommand returns the command string for the statement.
func (n *DropResourceGroupStmt) SEMCommand() string {
return DropResourceGroupCommand
}
// SEMCommand returns the command string for the statement.
func (n *DropSequenceStmt) SEMCommand() string {
return DropSequenceCommand
}
// SEMCommand returns the command string for the statement.
func (n *DropTableStmt) SEMCommand() string {
if n.IsView {
return DropViewCommand
}
return DropTableCommand
}
// SEMCommand returns the command string for the statement.
func (n *DropUserStmt) SEMCommand() string {
return DropUserCommand
}
// SEMCommand returns the command string for the statement.
func (n *FlashBackDatabaseStmt) SEMCommand() string {
return FlashBackDatabaseCommand
}
// SEMCommand returns the command string for the statement.
func (n *FlashBackTableStmt) SEMCommand() string {
return FlashBackTableCommand
}
// SEMCommand returns the command string for the statement.
func (n *FlashBackToTimestampStmt) SEMCommand() string {
return FlashBackClusterCommand
}
// SEMCommand returns the command string for the statement.
func (n *LockTablesStmt) SEMCommand() string {
return LockTablesCommand
}
// SEMCommand returns the command string for the statement.
func (n *OptimizeTableStmt) SEMCommand() string {
return OptimizeTableCommand
}
// SEMCommand returns the command string for the statement.
func (n *RecoverTableStmt) SEMCommand() string {
return RecoverTableCommand
}
// SEMCommand returns the command string for the statement.
func (n *RenameTableStmt) SEMCommand() string {
return RenameTableCommand
}
// SEMCommand returns the command string for the statement.
func (n *RenameUserStmt) SEMCommand() string {
return RenameUserCommand
}
// SEMCommand returns the command string for the statement.
func (n *RepairTableStmt) SEMCommand() string {
return AdminRepairTableCommand
}
// SEMCommand returns the command string for the statement.
func (n *TruncateTableStmt) SEMCommand() string {
return TruncateTableCommand
}
// SEMCommand returns the command string for the statement.
func (n *UnlockTablesStmt) SEMCommand() string {
return UnlockTablesCommand
}
// DML Statements
// SEMCommand returns the command string for the statement.
func (n *CallStmt) SEMCommand() string {
return CallCommand
}
// SEMCommand returns the command string for the statement.
func (n *DeleteStmt) SEMCommand() string {
return DeleteCommand
}
// SEMCommand returns the command string for the statement.
func (n *DistributeTableStmt) SEMCommand() string {
return DistributeTableCommand
}
// SEMCommand returns the command string for the statement.
func (n *ImportIntoStmt) SEMCommand() string {
return ImportIntoCommand
}
// SEMCommand returns the command string for the statement.
func (n *InsertStmt) SEMCommand() string {
if n.IsReplace {
return ReplaceCommand
}
return InsertCommand
}
// SEMCommand returns the command string for the statement.
func (n *LoadDataStmt) SEMCommand() string {
return LoadDataCommand
}
// SEMCommand returns the command string for the statement.
func (n *NonTransactionalDMLStmt) SEMCommand() string {
return BatchCommand
}
// SEMCommand returns the command string for the statement.
func (n *SelectStmt) SEMCommand() string {
return SelectCommand
}
// SEMCommand returns the command string for the statement.
func (n *SetOprStmt) SEMCommand() string {
return SetOprCommand
}
// SEMCommand returns the command string for the statement.
func (n *ShowStmt) SEMCommand() string {
switch n.Tp {
case ShowCreateTable:
return ShowCreateTableCommand
case ShowCreateView:
return ShowCreateViewCommand
case ShowCreateDatabase:
return ShowCreateDatabaseCommand
case ShowCreateUser:
return ShowCreateUserCommand
case ShowCreateSequence:
return ShowCreateSequenceCommand
case ShowCreatePlacementPolicy:
return ShowCreatePlacementPolicyCommand
case ShowCreateResourceGroup:
return ShowCreateResourceGroupCommand
case ShowCreateProcedure:
return ShowCreateProcedureCommand
case ShowDatabases:
return ShowDatabasesCommand
case ShowTables:
return ShowTableCommand
case ShowTableStatus:
return ShowTableStatusCommand
case ShowColumns:
return ShowColumnsCommand
case ShowIndex:
return ShowIndexCommand
case ShowVariables:
return ShowVariablesCommand
case ShowStatus:
return ShowStatusCommand
case ShowProcessList:
return ShowProcessListCommand
case ShowEngines:
return ShowEnginesCommand
case ShowCharset:
return ShowCharsetCommand
case ShowCollation:
return ShowCollationCommand
case ShowWarnings:
return ShowWarningsCommand
case ShowErrors:
return ShowErrorsCommand
case ShowGrants:
return ShowGrantsCommand
case ShowPrivileges:
return ShowPrivilegesCommand
case ShowTriggers:
return ShowTriggersCommand
case ShowProcedureStatus:
return ShowProcedureStatusCommand
case ShowFunctionStatus:
return ShowFunctionStatusCommand
case ShowEvents:
return ShowEventsCommand
case ShowPlugins:
return ShowPluginsCommand
case ShowProfile:
return ShowProfileCommand
case ShowProfiles:
return ShowProfilesCommand
case ShowMasterStatus:
return ShowMasterStatusCommand
case ShowBinlogStatus:
return ShowBinaryLogStatusCommand
case ShowReplicaStatus:
return ShowCommand
case ShowOpenTables:
return ShowOpenTablesCommand
case ShowConfig:
return ShowConfigCommand
case ShowStatsExtended:
return ShowStatsExtendedCommand
case ShowStatsMeta:
return ShowStatsMetaCommand
case ShowStatsHistograms:
return ShowStatsHistogramsCommand
case ShowStatsTopN:
return ShowStatsTopNCommand
case ShowStatsBuckets:
return ShowStatsBucketsCommand
case ShowStatsHealthy:
return ShowStatsHealthyCommand
case ShowStatsLocked:
return ShowStatsLockedCommand
case ShowHistogramsInFlight:
return ShowHistogramsInFlightCommand
case ShowColumnStatsUsage:
return ShowColumnStatsUsageCommand
case ShowBindings:
return ShowBindingsCommand
case ShowBindingCacheStatus:
return ShowBindingCacheStatusCommand
case ShowAnalyzeStatus:
return ShowAnalyzeStatusCommand
case ShowRegions:
return ShowRegionsCommand
case ShowBuiltins:
return ShowBuiltinsCommand
case ShowTableNextRowId:
return ShowTableNextRowIdCommand
case ShowBackups:
return ShowBackupsCommand
case ShowRestores:
return ShowRestoresCommand
case ShowImports:
return ShowImportsCommand
case ShowCreateImport:
return ShowCreateImportCommand
case ShowImportJobs:
return ShowImportJobsCommand
case ShowImportGroups:
return ShowImportGroupsCommand
case ShowPlacement:
return ShowPlacementCommand
case ShowPlacementForDatabase:
return ShowPlacementForDatabaseCommand
case ShowPlacementForTable:
return ShowPlacementForTableCommand
case ShowPlacementForPartition:
return ShowPlacementForPartitionCommand
case ShowPlacementLabels:
return ShowPlacementLabelsCommand
case ShowSessionStates:
return ShowSessionStatesCommand
case ShowDistributions:
return ShowDistributionsCommand
case ShowDistributionJobs:
return ShowDistributionJobsCommand
default:
return UnknownCommand
}
}
// SEMCommand returns the command string for the statement.
func (n *SplitRegionStmt) SEMCommand() string {
return SplitRegionCommand
}
// SEMCommand returns the command string for the statement.
func (n *UpdateStmt) SEMCommand() string {
return UpdateCommand
}
// Miscellaneous Statements
// SEMCommand returns the command string for the statement.
func (n *AddQueryWatchStmt) SEMCommand() string {
return AddQueryWatchCommand
}
// SEMCommand returns the command string for the statement.
func (n *AdminStmt) SEMCommand() string {
switch n.Tp {
case AdminShowDDL:
return AdminShowDDLCommand
case AdminCheckTable:
return AdminCheckTableCommand
case AdminShowDDLJobs:
return AdminShowDDLJobsCommand
case AdminCancelDDLJobs:
return AdminCancelDDLJobsCommand
case AdminPauseDDLJobs:
return AdminPauseDDLJobsCommand
case AdminResumeDDLJobs:
return AdminResumeDDLJobsCommand
case AdminCheckIndex:
return AdminCheckIndexCommand
case AdminRecoverIndex:
return AdminRecoverIndexCommand
case AdminCleanupIndex:
return AdminCleanupIndexCommand
case AdminCheckIndexRange:
return AdminCheckIndexRangeCommand
case AdminShowDDLJobQueries:
return AdminShowDDLJobQueriesCommand
case AdminShowDDLJobQueriesWithRange:
return AdminShowDDLJobQueriesCommand
case AdminChecksumTable:
return AdminChecksumTableCommand
case AdminShowSlow:
return AdminShowSlowCommand
case AdminShowNextRowID:
return AdminShowNextRowIDCommand
case AdminReloadExprPushdownBlacklist:
return AdminReloadExprPushdownBlacklistCommand
case AdminReloadOptRuleBlacklist:
return AdminReloadOptRuleBlacklistCommand
case AdminPluginDisable:
return AdminPluginsDisableCommand
case AdminPluginEnable:
return AdminPluginsEnableCommand
case AdminFlushBindings:
return AdminFlushBindingsCommand
case AdminCaptureBindings:
return AdminCaptureBindingsCommand
case AdminEvolveBindings:
return AdminEvolveBindingsCommand
case AdminReloadBindings:
return AdminReloadBindingsCommand
case AdminReloadStatistics:
return AdminReloadStatsExtendedCommand
case AdminFlushPlanCache:
return AdminFlushPlanCacheCommand
case AdminSetBDRRole:
return AdminSetBDRRoleCommand
case AdminShowBDRRole:
return AdminShowBDRRoleCommand
case AdminUnsetBDRRole:
return AdminUnsetBDRRoleCommand
case AdminAlterDDLJob:
return AdminAlterDDLJobsCommand
case AdminWorkloadRepoCreate:
return AdminCreateWorkloadSnapshotCommand
default:
return UnknownCommand
}
}
// SEMCommand returns the command string for the statement.
func (n *AnalyzeTableStmt) SEMCommand() string {
return AnalyzeTableCommand
}
// SEMCommand returns the command string for the statement.
func (n *BeginStmt) SEMCommand() string {
return BeginCommand
}
// SEMCommand returns the command string for the statement.
func (n *BinlogStmt) SEMCommand() string {
return BinlogCommand
}
// SEMCommand returns the command string for the statement.
func (n *BRIEStmt) SEMCommand() string {
switch n.Kind {
case BRIEKindBackup:
return BackupCommand
case BRIEKindRestore:
return RestoreCommand
case BRIEKindRestorePIT:
return RestorePITCommand
case BRIEKindStreamStart:
return StreamStartCommand
case BRIEKindStreamStop:
return StreamStopCommand
case BRIEKindStreamPause:
return StreamPauseCommand
case BRIEKindStreamResume:
return StreamResumeCommand
case BRIEKindStreamStatus:
return StreamStatusCommand
case BRIEKindStreamMetaData:
return StreamMetaDataCommand
case BRIEKindStreamPurge:
return StreamPurgeCommand
case BRIEKindShowJob:
return ShowBRJobCommand
case BRIEKindShowQuery:
return ShowBRJobQueryCommand
case BRIEKindCancelJob:
return CancelBRJobCommand
case BRIEKindShowBackupMeta:
return ShowBackupMetaCommand
default:
return UnknownCommand
}
}
// SEMCommand returns the command string for the statement.
func (n *CalibrateResourceStmt) SEMCommand() string {
return CalibrateResourceCommand
}
// SEMCommand returns the command string for the statement.
func (n *CancelDistributionJobStmt) SEMCommand() string {
return CancelDistributionJobCommand
}
// SEMCommand returns the command string for the statement.
func (n *CommitStmt) SEMCommand() string {
return CommitCommand
}
// SEMCommand returns the command string for the statement.
func (n *CompactTableStmt) SEMCommand() string {
return AlterTableCompactCommand
}
// SEMCommand returns the command string for the statement.
func (n *CreateBindingStmt) SEMCommand() string {
return CreateBindingCommand
}
// SEMCommand returns the command string for the statement.
func (n *CreateStatisticsStmt) SEMCommand() string {
return CreateStatisticsCommand
}
// SEMCommand returns the command string for the statement.
func (n *DeallocateStmt) SEMCommand() string {
return DeallocateCommand
}
// SEMCommand returns the command string for the statement.
func (n *DoStmt) SEMCommand() string {
return DoCommand
}
// SEMCommand returns the command string for the statement.
func (n *DropBindingStmt) SEMCommand() string {
return DropBindingCommand
}
// SEMCommand returns the command string for the statement.
func (n *DropQueryWatchStmt) SEMCommand() string {
return DropQueryWatchCommand
}
// SEMCommand returns the command string for the statement.
func (n *DropStatisticsStmt) SEMCommand() string {
return DropStatisticsCommand
}
// SEMCommand returns the command string for the statement.
func (n *ExecuteStmt) SEMCommand() string {
return ExecuteCommand
}
// SEMCommand returns the command string for the statement.
func (n *ExplainForStmt) SEMCommand() string {
return ExplainForConnectionCommand
}
// SEMCommand returns the command string for the statement.
func (n *ExplainStmt) SEMCommand() string {
if n.Analyze {
return ExplainAnalyzeCommand
}
return ExplainCommand
}
// SEMCommand returns the command string for the statement.
func (n *FlushStmt) SEMCommand() string {
return FlushCommand
}
// SEMCommand returns the command string for the statement.
func (n *GrantStmt) SEMCommand() string {
return GrantCommand
}
// SEMCommand returns the command string for the statement.
func (n *GrantProxyStmt) SEMCommand() string {
return GrantProxyCommand
}
// SEMCommand returns the command string for the statement.
func (n *GrantRoleStmt) SEMCommand() string {
return GrantRoleCommand
}
// SEMCommand returns the command string for the statement.
func (n *HelpStmt) SEMCommand() string {
return HelpCommand
}
// SEMCommand returns the command string for the statement.
func (n *ImportIntoActionStmt) SEMCommand() string {
return CancelImportIntoJobCommand
}
// SEMCommand returns the command string for the statement.
func (n *KillStmt) SEMCommand() string {
return KillCommand
}
// SEMCommand returns the command string for the statement.
func (n *PlanReplayerStmt) SEMCommand() string {
return PlanReplayerCommand
}
// SEMCommand returns the command string for the statement.
func (n *PrepareStmt) SEMCommand() string {
return PrepareCommand
}
// SEMCommand returns the command string for the statement.
func (n *ReleaseSavepointStmt) SEMCommand() string {
return ReleaseSavepointCommand
}
// SEMCommand returns the command string for the statement.
func (n *RestartStmt) SEMCommand() string {
return RestartCommand
}
// SEMCommand returns the command string for the statement.
func (n *RevokeStmt) SEMCommand() string {
return RevokeCommand
}
// SEMCommand returns the command string for the statement.
func (n *RevokeRoleStmt) SEMCommand() string {
return RevokeRoleCommand
}
// SEMCommand returns the command string for the statement.
func (n *RollbackStmt) SEMCommand() string {
return RollbackCommand
}
// SEMCommand returns the command string for the statement.
func (n *SavepointStmt) SEMCommand() string {
return SavepointCommand
}
// SEMCommand returns the command string for the statement.
func (n *SetBindingStmt) SEMCommand() string {
return SetBindingCommand
}
// SEMCommand returns the command string for the statement.
func (n *SetConfigStmt) SEMCommand() string {
return SetConfigCommand
}
// SEMCommand returns the command string for the statement.
func (n *SetDefaultRoleStmt) SEMCommand() string {
return SetDefaultRoleCommand
}
// SEMCommand returns the command string for the statement.
func (n *SetPwdStmt) SEMCommand() string {
return SetPasswordCommand
}
// SEMCommand returns the command string for the statement.
func (n *SetResourceGroupStmt) SEMCommand() string {
return SetResourceGroupCommand
}
// SEMCommand returns the command string for the statement.
func (n *SetRoleStmt) SEMCommand() string {
return SetRoleCommand
}
// SEMCommand returns the command string for the statement.
func (n *SetSessionStatesStmt) SEMCommand() string {
return SetSessionStatesCommand
}
// SEMCommand returns the command string for the statement.
func (n *SetStmt) SEMCommand() string {
return SetCommand
}
// SEMCommand returns the command string for the statement.
func (n *ShutdownStmt) SEMCommand() string {
return ShutdownCommand
}
// SEMCommand returns the command string for the statement.
func (n *TraceStmt) SEMCommand() string {
return TraceCommand
}
// SEMCommand returns the command string for the statement.
func (n *TrafficStmt) SEMCommand() string {
return TrafficCommand
}
// SEMCommand returns the command string for the statement.
func (n *UseStmt) SEMCommand() string {
return UseCommand
}
// SEMCommand returns the command string for the statement.
func (n *RecommendIndexStmt) SEMCommand() string {
return RecommendIndexCommand
}
// Stats
// SEMCommand returns the command string for the statement.
func (n *LoadStatsStmt) SEMCommand() string {
return LoadStatsCommand
}
// SEMCommand returns the command string for the statement.
func (n *DropStatsStmt) SEMCommand() string {
return DropStatsCommand
}
// SEMCommand returns the command string for the statement.
func (n *LockStatsStmt) SEMCommand() string {
return LockStatsCommand
}
// SEMCommand returns the command string for the statement.
func (n *UnlockStatsStmt) SEMCommand() string {
return UnlockStatsCommand
}
// SEMCommand returns the command string for the statement.
func (n *RefreshStatsStmt) SEMCommand() string {
return RefreshStatsCommand
}
// Procedure Statements
// SEMCommand returns the command string for the statement.
func (n *ProcedureBlock) SEMCommand() string {
return ProcedureCommand
}
// SEMCommand returns the command string for the statement.
func (n *ProcedureInfo) SEMCommand() string {
return ProcedureCommand
}
// SEMCommand returns the command string for the statement.
func (n *DropProcedureStmt) SEMCommand() string {
return ProcedureCommand
}
// SEMCommand returns the command string for the statement.
func (n *ProcedureIfInfo) SEMCommand() string {
return ProcedureCommand
}
// SEMCommand returns the command string for the statement.
func (n *ProcedureElseIfBlock) SEMCommand() string {
return ProcedureCommand
}
// SEMCommand returns the command string for the statement.
func (n *ProcedureElseBlock) SEMCommand() string {
return ProcedureCommand
}
// SEMCommand returns the command string for the statement.
func (n *ProcedureIfBlock) SEMCommand() string {
return ProcedureCommand
}
// SEMCommand returns the command string for the statement.
func (n *SimpleWhenThenStmt) SEMCommand() string {
return ProcedureCommand
}
// SEMCommand returns the command string for the statement.
func (n *SimpleCaseStmt) SEMCommand() string {
return ProcedureCommand
}
// SEMCommand returns the command string for the statement.
func (n *SearchWhenThenStmt) SEMCommand() string {
return ProcedureCommand
}
// SEMCommand returns the command string for the statement.
func (n *SearchCaseStmt) SEMCommand() string {
return ProcedureCommand
}
// SEMCommand returns the command string for the statement.
func (n *ProcedureRepeatStmt) SEMCommand() string {
return ProcedureCommand
}
// SEMCommand returns the command string for the statement.
func (n *ProcedureWhileStmt) SEMCommand() string {
return ProcedureCommand
}
// SEMCommand returns the command string for the statement.
func (n *ProcedureOpenCur) SEMCommand() string {
return ProcedureCommand
}
// SEMCommand returns the command string for the statement.
func (n *ProcedureCloseCur) SEMCommand() string {
return ProcedureCommand
}
// SEMCommand returns the command string for the statement.
func (n *ProcedureFetchInto) SEMCommand() string {
return ProcedureCommand
}
// SEMCommand returns the command string for the statement.
func (n *ProcedureLabelBlock) SEMCommand() string {
return ProcedureCommand
}
// SEMCommand returns the command string for the statement.
func (n *ProcedureLabelLoop) SEMCommand() string {
return ProcedureCommand
}
// SEMCommand returns the command string for the statement.
func (n *ProcedureJump) SEMCommand() string {
return ProcedureCommand
}
// SEMCommand returns the command string for the statement.
func (n *ProcedureErrorCon) SEMCommand() string {
return ProcedureCommand
}
// SEMCommand returns the command string for the statement.
func (n *ProcedureErrorVal) SEMCommand() string {
return ProcedureCommand
}
// SEMCommand returns the command string for the statement.
func (n *ProcedureErrorState) SEMCommand() string {
return ProcedureCommand
}
// Copyright 2017 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// See the License for the specific language governing permissions and
// limitations under the License.
package ast
import (
"github.com/pingcap/errors"
"github.com/pingcap/tidb/pkg/parser/format"
)
var (
_ StmtNode = &AnalyzeTableStmt{}
_ StmtNode = &DropStatsStmt{}
_ StmtNode = &LoadStatsStmt{}
_ StmtNode = &RefreshStatsStmt{}
_ StmtNode = &LockStatsStmt{}
_ StmtNode = &UnlockStatsStmt{}
)
// AnalyzeTableStmt is used to create table statistics.
type AnalyzeTableStmt struct {
stmtNode
TableNames []*TableName
PartitionNames []CIStr
IndexNames []CIStr
AnalyzeOpts []AnalyzeOpt
// IndexFlag is true when we only analyze indices for a table.
IndexFlag bool
Incremental bool
NoWriteToBinLog bool
// HistogramOperation is set in "ANALYZE TABLE ... UPDATE/DROP HISTOGRAM ..." statement.
HistogramOperation HistogramOperationType
// ColumnNames indicate the columns whose statistics need to be collected.
ColumnNames []CIStr
ColumnChoice ColumnChoice
}
// AnalyzeOptType is the type for analyze options.
type AnalyzeOptionType int
// Analyze option types.
const (
AnalyzeOptNumBuckets = iota
AnalyzeOptNumTopN
AnalyzeOptCMSketchDepth
AnalyzeOptCMSketchWidth
AnalyzeOptNumSamples
AnalyzeOptSampleRate
)
// AnalyzeOptionString stores the string form of analyze options.
var AnalyzeOptionString = map[AnalyzeOptionType]string{
AnalyzeOptNumBuckets: "BUCKETS",
AnalyzeOptNumTopN: "TOPN",
AnalyzeOptCMSketchWidth: "CMSKETCH WIDTH",
AnalyzeOptCMSketchDepth: "CMSKETCH DEPTH",
AnalyzeOptNumSamples: "SAMPLES",
AnalyzeOptSampleRate: "SAMPLERATE",
}
// HistogramOperationType is the type for histogram operation.
type HistogramOperationType int
// Histogram operation types.
const (
// HistogramOperationNop shows no operation in histogram. Default value.
HistogramOperationNop HistogramOperationType = iota
HistogramOperationUpdate
HistogramOperationDrop
)
// String implements fmt.Stringer for HistogramOperationType.
func (hot HistogramOperationType) String() string {
switch hot {
case HistogramOperationUpdate:
return "UPDATE HISTOGRAM"
case HistogramOperationDrop:
return "DROP HISTOGRAM"
}
return ""
}
// AnalyzeOpt stores the analyze option type and value.
type AnalyzeOpt struct {
Type AnalyzeOptionType
Value ValueExpr
}
// Restore implements Node interface.
func (n *AnalyzeTableStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("ANALYZE ")
if n.NoWriteToBinLog {
ctx.WriteKeyWord("NO_WRITE_TO_BINLOG ")
}
if n.Incremental {
ctx.WriteKeyWord("INCREMENTAL TABLE ")
} else {
ctx.WriteKeyWord("TABLE ")
}
for i, table := range n.TableNames {
if i != 0 {
ctx.WritePlain(",")
}
if err := table.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore AnalyzeTableStmt.TableNames[%d]", i)
}
}
if len(n.PartitionNames) != 0 {
ctx.WriteKeyWord(" PARTITION ")
}
for i, partition := range n.PartitionNames {
if i != 0 {
ctx.WritePlain(",")
}
ctx.WriteName(partition.O)
}
if n.HistogramOperation != HistogramOperationNop {
ctx.WritePlain(" ")
ctx.WriteKeyWord(n.HistogramOperation.String())
ctx.WritePlain(" ")
if len(n.ColumnNames) > 0 {
ctx.WriteKeyWord("ON ")
for i, columnName := range n.ColumnNames {
if i != 0 {
ctx.WritePlain(",")
}
ctx.WriteName(columnName.O)
}
}
}
switch n.ColumnChoice {
case AllColumns:
ctx.WriteKeyWord(" ALL COLUMNS")
case PredicateColumns:
ctx.WriteKeyWord(" PREDICATE COLUMNS")
case ColumnList:
ctx.WriteKeyWord(" COLUMNS ")
for i, columnName := range n.ColumnNames {
if i != 0 {
ctx.WritePlain(",")
}
ctx.WriteName(columnName.O)
}
}
if n.IndexFlag {
ctx.WriteKeyWord(" INDEX")
}
for i, index := range n.IndexNames {
if i != 0 {
ctx.WritePlain(",")
} else {
ctx.WritePlain(" ")
}
ctx.WriteName(index.O)
}
if len(n.AnalyzeOpts) != 0 {
ctx.WriteKeyWord(" WITH")
for i, opt := range n.AnalyzeOpts {
if i != 0 {
ctx.WritePlain(",")
}
ctx.WritePlainf(" %v ", opt.Value.GetValue())
ctx.WritePlain(AnalyzeOptionString[opt.Type])
}
}
return nil
}
// Accept implements Node Accept interface.
func (n *AnalyzeTableStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*AnalyzeTableStmt)
for i, val := range n.TableNames {
node, ok := val.Accept(v)
if !ok {
return n, false
}
n.TableNames[i] = node.(*TableName)
}
return v.Leave(n)
}
// DropStatsStmt is used to drop table statistics.
// if the PartitionNames is not empty, or IsGlobalStats is true, it will contain exactly one table
type DropStatsStmt struct {
stmtNode
Tables []*TableName
PartitionNames []CIStr
IsGlobalStats bool
}
// Restore implements Node interface.
func (n *DropStatsStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("DROP STATS ")
for index, table := range n.Tables {
if index != 0 {
ctx.WritePlain(", ")
}
if err := table.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore DropStatsStmt.Tables[%d]", index)
}
}
if n.IsGlobalStats {
ctx.WriteKeyWord(" GLOBAL")
return nil
}
if len(n.PartitionNames) != 0 {
ctx.WriteKeyWord(" PARTITION ")
}
for i, partition := range n.PartitionNames {
if i != 0 {
ctx.WritePlain(",")
}
ctx.WriteName(partition.O)
}
return nil
}
// Accept implements Node Accept interface.
func (n *DropStatsStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*DropStatsStmt)
for i, val := range n.Tables {
node, ok := val.Accept(v)
if !ok {
return n, false
}
n.Tables[i] = node.(*TableName)
}
return v.Leave(n)
}
// LoadStatsStmt is the statement node for loading statistic.
type LoadStatsStmt struct {
stmtNode
Path string
}
// Restore implements Node interface.
func (n *LoadStatsStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("LOAD STATS ")
ctx.WriteString(n.Path)
return nil
}
// Accept implements Node Accept interface.
func (n *LoadStatsStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*LoadStatsStmt)
return v.Leave(n)
}
// LockStatsStmt is the statement node for lock table statistic
type LockStatsStmt struct {
stmtNode
Tables []*TableName
}
// Restore implements Node interface.
func (n *LockStatsStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("LOCK STATS ")
for index, table := range n.Tables {
if index != 0 {
ctx.WritePlain(", ")
}
if err := table.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore LockStatsStmt.Tables[%d]", index)
}
}
return nil
}
// Accept implements Node Accept interface.
func (n *LockStatsStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*LockStatsStmt)
for i, val := range n.Tables {
node, ok := val.Accept(v)
if !ok {
return n, false
}
n.Tables[i] = node.(*TableName)
}
return v.Leave(n)
}
// UnlockStatsStmt is the statement node for unlock table statistic
type UnlockStatsStmt struct {
stmtNode
Tables []*TableName
}
// Restore implements Node interface.
func (n *UnlockStatsStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("UNLOCK STATS ")
for index, table := range n.Tables {
if index != 0 {
ctx.WritePlain(", ")
}
if err := table.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore UnlockStatsStmt.Tables[%d]", index)
}
}
return nil
}
// Accept implements Node Accept interface.
func (n *UnlockStatsStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*UnlockStatsStmt)
for i, val := range n.Tables {
node, ok := val.Accept(v)
if !ok {
return n, false
}
n.Tables[i] = node.(*TableName)
}
return v.Leave(n)
}
// RefreshStatsStmt is the statement node for refreshing statistics.
// It is used to refresh the statistics of a table, database, or all databases.
// For example:
// REFRESH STATS table1, db1.*
// REFRESH STATS *.*
type RefreshStatsStmt struct {
stmtNode
RefreshObjects []*RefreshObject
// RefreshMode is non-nil when a refresh strategy is explicitly specified.
RefreshMode *RefreshStatsMode
// IsClusterWide indicates whether the refresh operation is for the entire cluster.
IsClusterWide bool
}
// RefreshStatsMode represents the refresh strategy requested by the user.
type RefreshStatsMode int
const (
// RefreshStatsModeLite forces a lite statistics refresh.
// Same as lite-init-stats=true in the configuration file.
RefreshStatsModeLite RefreshStatsMode = iota
// RefreshStatsModeFull forces a full statistics refresh.
// Same as lite-init-stats=false in the configuration file.
RefreshStatsModeFull
)
func (n *RefreshStatsStmt) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord("REFRESH STATS ")
for index, refreshObject := range n.RefreshObjects {
if index != 0 {
ctx.WritePlain(", ")
}
if err := refreshObject.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore RefreshStatsStmt.RefreshObjects[%d]", index)
}
}
if n.RefreshMode != nil {
switch *n.RefreshMode {
case RefreshStatsModeLite:
ctx.WritePlain(" ")
ctx.WriteKeyWord("LITE")
case RefreshStatsModeFull:
ctx.WritePlain(" ")
ctx.WriteKeyWord("FULL")
default:
return errors.Errorf("invalid refresh stats mode: %d", *n.RefreshMode)
}
}
if n.IsClusterWide {
ctx.WritePlain(" ")
ctx.WriteKeyWord("CLUSTER")
}
return nil
}
func (n *RefreshStatsStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*RefreshStatsStmt)
return v.Leave(n)
}
type RefreshObjectScopeType int
const (
// RefreshObjectScopeTable is the scope of a table.
RefreshObjectScopeTable RefreshObjectScopeType = iota + 1
// RefreshObjectScopeDatabase is the scope of a database.
RefreshObjectScopeDatabase
// RefreshObjectScopeGlobal is the scope of all databases.
RefreshObjectScopeGlobal
)
type RefreshObject struct {
RefreshObjectScope RefreshObjectScopeType
DBName CIStr
TableName CIStr
}
func (o *RefreshObject) Restore(ctx *format.RestoreCtx) error {
switch o.RefreshObjectScope {
case RefreshObjectScopeTable:
if o.DBName.O != "" {
ctx.WriteName(o.DBName.O)
ctx.WritePlain(".")
}
ctx.WriteName(o.TableName.O)
case RefreshObjectScopeDatabase:
ctx.WriteName(o.DBName.O)
ctx.WritePlain(".*")
case RefreshObjectScopeGlobal:
ctx.WritePlain("*.*")
default:
// This should never happen.
return errors.Errorf("invalid refresh object scope: %d", o.RefreshObjectScope)
}
return nil
}
// Copyright 2018 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// See the License for the specific language governing permissions and
// limitations under the License.
package ast
import "math"
// UnspecifiedSize is unspecified size.
const (
UnspecifiedSize = math.MaxUint64
)
// IsReadOnly checks that the ast is readonly. If checkGlobalVars is set to
// true, then updates to global variables are counted as writes. Otherwise, if
// this flag is false, they are ignored.
func IsReadOnly(node Node, checkGlobalVars bool) bool {
switch st := node.(type) {
case *SelectStmt:
if st.LockInfo != nil {
switch st.LockInfo.LockType {
case SelectLockForUpdate, SelectLockForUpdateNoWait, SelectLockForUpdateWaitN,
SelectLockForShare, SelectLockForShareNoWait:
return false
}
}
if !checkGlobalVars {
return true
}
checker := readOnlyChecker{
readOnly: true,
}
node.Accept(&checker)
return checker.readOnly
case *ExplainStmt:
return !st.Analyze || IsReadOnly(st.Stmt, checkGlobalVars)
case *DoStmt, *ShowStmt:
return true
case *SetOprStmt:
for _, sel := range node.(*SetOprStmt).SelectList.Selects {
if !IsReadOnly(sel, checkGlobalVars) {
return false
}
}
return true
case *SetOprSelectList:
for _, sel := range node.(*SetOprSelectList).Selects {
if !IsReadOnly(sel, checkGlobalVars) {
return false
}
}
return true
case *AdminStmt:
switch node.(*AdminStmt).Tp {
case AdminShowDDL, AdminShowDDLJobs, AdminShowSlow,
AdminCaptureBindings, AdminShowNextRowID, AdminShowDDLJobQueries,
AdminShowDDLJobQueriesWithRange:
return true
default:
return false
}
case *TraceStmt:
return IsReadOnly(st.Stmt, checkGlobalVars)
default:
return false
}
}
// readOnlyChecker checks whether a query's ast is readonly, if it satisfied
// 1. selectstmt;
// 2. need not to set var;
// it is readonly statement.
type readOnlyChecker struct {
readOnly bool
}
// Enter implements Visitor interface.
func (checker *readOnlyChecker) Enter(in Node) (out Node, skipChildren bool) {
if node, ok := in.(*VariableExpr); ok {
// like func rewriteVariable(), this stands for SetVar.
if node.IsSystem && node.Value != nil {
checker.readOnly = false
return in, true
}
}
return in, false
}
// Leave implements Visitor interface.
func (checker *readOnlyChecker) Leave(in Node) (out Node, ok bool) {
return in, checker.readOnly
}
// Copyright 2015 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// See the License for the specific language governing permissions and
// limitations under the License.
package auth
import (
"fmt"
"github.com/pingcap/tidb/pkg/parser/format"
)
const (
// UserNameMaxLength is the max length of username.
UserNameMaxLength = 32
// HostNameMaxLength is the max length of host name.
HostNameMaxLength = 255
)
// UserIdentity represents username and hostname.
type UserIdentity struct {
Username string
Hostname string
CurrentUser bool
AuthUsername string // Username matched in privileges system
AuthHostname string // Match in privs system (i.e. could be a wildcard)
AuthPlugin string // The plugin specified in handshake, only used during authentication.
}
// Restore implements Node interface.
func (user *UserIdentity) Restore(ctx *format.RestoreCtx) error {
if user.CurrentUser {
ctx.WriteKeyWord("CURRENT_USER")
} else {
ctx.WriteName(user.Username)
ctx.WritePlain("@")
ctx.WriteName(user.Hostname)
}
return nil
}
// String converts UserIdentity to the format user@host.
// It defaults to providing the AuthIdentity (the matching entry in priv tables)
// To use the actual identity use LoginString()
func (user *UserIdentity) String() string {
// TODO: Escape username and hostname.
if user == nil {
return ""
}
if user.AuthUsername != "" {
return fmt.Sprintf("%s@%s", user.AuthUsername, user.AuthHostname)
}
return fmt.Sprintf("%s@%s", user.Username, user.Hostname)
}
// LoginString returns matched identity in user@host format
// It matches the login user.
func (user *UserIdentity) LoginString() string {
// TODO: Escape username and hostname.
if user == nil {
return ""
}
return fmt.Sprintf("%s@%s", user.Username, user.Hostname)
}
// RoleIdentity represents a role name.
type RoleIdentity struct {
Username string
Hostname string
}
// Restore implements Node interface.
func (role *RoleIdentity) Restore(ctx *format.RestoreCtx) error {
ctx.WriteName(role.Username)
if role.Hostname != "" {
ctx.WritePlain("@")
ctx.WriteName(role.Hostname)
}
return nil
}
// String converts UserIdentity to the format user@host.
func (role *RoleIdentity) String() string {
// TODO: Escape username and hostname.
return fmt.Sprintf("`%s`@`%s`", role.Username, role.Hostname)
}
// Copyright 2021 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// See the License for the specific language governing permissions and
// limitations under the License.
package auth
// Resources:
// - https://dev.mysql.com/doc/refman/8.0/en/caching-sha2-pluggable-authentication.html
// - https://dev.mysql.com/doc/dev/mysql-server/latest/page_caching_sha2_authentication_exchanges.html
// - https://dev.mysql.com/doc/dev/mysql-server/latest/namespacesha2__password.html
// - https://www.akkadia.org/drepper/SHA-crypt.txt
// - https://dev.mysql.com/worklog/task/?id=9591
//
// CREATE USER 'foo'@'%' IDENTIFIED BY 'foobar';
// SELECT HEX(authentication_string) FROM mysql.user WHERE user='foo';
// 24412430303524031A69251C34295C4B35167C7F1E5A7B63091349503974624D34504B5A424679354856336868686F52485A736E4A733368786E427575516C73446469496537
//
// Format:
// Split on '$':
// - digest type ("A")
// - iterations (divided by ITERATION_MULTIPLIER)
// - salt+hash
//
import (
"bytes"
"crypto/rand"
"crypto/sha256"
"errors"
"fmt"
"strconv"
"github.com/pingcap/tidb/pkg/parser/mysql"
)
const (
// MIXCHARS is the number of characters to use in the mix
MIXCHARS = 32
// SALT_LENGTH is the length of the salt
SALT_LENGTH = 20 //nolint: revive
// ITERATION_MULTIPLIER is the number of iterations to use
ITERATION_MULTIPLIER = 1000 //nolint: revive
)
func b64From24bit(b []byte, n int, buf *bytes.Buffer) {
b64t := []byte("./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")
w := (int64(b[0]) << 16) | (int64(b[1]) << 8) | int64(b[2])
for n > 0 {
n--
buf.WriteByte(b64t[w&0x3f])
w >>= 6
}
}
// Sha256Hash is an util function to calculate sha256 hash.
func Sha256Hash(input []byte) []byte {
res := sha256.Sum256(input)
return res[:]
}
// 'hash' function should return an array with 32 bytes, the same as SHA-256
func hashCrypt(plaintext string, salt []byte, iterations int, hash func([]byte) []byte) string {
// Numbers in the comments refer to the description of the algorithm on https://www.akkadia.org/drepper/SHA-crypt.txt
// 1, 2, 3
bufA := bytes.NewBuffer(make([]byte, 0, 4096))
bufA.WriteString(plaintext)
bufA.Write(salt)
// 4, 5, 6, 7, 8
bufB := bytes.NewBuffer(make([]byte, 0, 4096))
bufB.WriteString(plaintext)
bufB.Write(salt)
bufB.WriteString(plaintext)
sumB := hash(bufB.Bytes())
bufB.Reset()
// 9, 10
var i int
for i = len(plaintext); i > MIXCHARS; i -= MIXCHARS {
bufA.Write(sumB[:MIXCHARS])
}
bufA.Write(sumB[:i])
// 11
for i = len(plaintext); i > 0; i >>= 1 {
if i%2 == 0 {
bufA.WriteString(plaintext)
} else {
bufA.Write(sumB[:])
}
}
// 12
sumA := hash(bufA.Bytes())
bufA.Reset()
// 13, 14, 15
bufDP := bufA
for range []byte(plaintext) {
bufDP.WriteString(plaintext)
}
sumDP := hash(bufDP.Bytes())
bufDP.Reset()
// 16
p := make([]byte, 0, sha256.Size)
for i = len(plaintext); i > 0; i -= MIXCHARS {
if i > MIXCHARS {
p = append(p, sumDP[:]...)
} else {
p = append(p, sumDP[0:i]...)
}
}
// 17, 18, 19
bufDS := bufA
for range 16 + int(sumA[0]) {
bufDS.Write(salt)
}
sumDS := hash(bufDS.Bytes())
bufDS.Reset()
// 20
s := make([]byte, 0, 32)
for i = len(salt); i > 0; i -= MIXCHARS {
if i > MIXCHARS {
s = append(s, sumDS[:]...)
} else {
s = append(s, sumDS[0:i]...)
}
}
// 21
bufC := bufA
var sumC []byte
for i = range iterations {
bufC.Reset()
if i&1 != 0 {
bufC.Write(p)
} else {
bufC.Write(sumA[:])
}
if i%3 != 0 {
bufC.Write(s)
}
if i%7 != 0 {
bufC.Write(p)
}
if i&1 != 0 {
bufC.Write(sumA[:])
} else {
bufC.Write(p)
}
sumC = hash(bufC.Bytes())
sumA = sumC
}
// 22
buf := bytes.NewBuffer(make([]byte, 0, 100))
buf.Write([]byte{'$', 'A', '$'})
rounds := fmt.Sprintf("%03X", iterations/ITERATION_MULTIPLIER)
buf.WriteString(rounds)
buf.Write([]byte{'$'})
buf.Write(salt)
b64From24bit([]byte{sumC[0], sumC[10], sumC[20]}, 4, buf)
b64From24bit([]byte{sumC[21], sumC[1], sumC[11]}, 4, buf)
b64From24bit([]byte{sumC[12], sumC[22], sumC[2]}, 4, buf)
b64From24bit([]byte{sumC[3], sumC[13], sumC[23]}, 4, buf)
b64From24bit([]byte{sumC[24], sumC[4], sumC[14]}, 4, buf)
b64From24bit([]byte{sumC[15], sumC[25], sumC[5]}, 4, buf)
b64From24bit([]byte{sumC[6], sumC[16], sumC[26]}, 4, buf)
b64From24bit([]byte{sumC[27], sumC[7], sumC[17]}, 4, buf)
b64From24bit([]byte{sumC[18], sumC[28], sumC[8]}, 4, buf)
b64From24bit([]byte{sumC[9], sumC[19], sumC[29]}, 4, buf)
b64From24bit([]byte{0, sumC[31], sumC[30]}, 3, buf)
return buf.String()
}
// CheckHashingPassword checks if a caching_sha2_password or tidb_sm3_password authentication string matches a password
func CheckHashingPassword(pwhash []byte, password string, hash string) (bool, error) {
pwhashParts := bytes.Split(pwhash, []byte("$"))
if len(pwhashParts) != 4 {
return false, errors.New("failed to decode hash parts")
}
hashType := string(pwhashParts[1])
if hashType != "A" {
return false, errors.New("digest type is incompatible")
}
iterations, err := strconv.ParseInt(string(pwhashParts[2]), 16, 64)
if err != nil {
return false, errors.New("failed to decode iterations")
}
iterations = iterations * ITERATION_MULTIPLIER
salt := pwhashParts[3][:SALT_LENGTH]
var newHash string
switch hash {
case mysql.AuthCachingSha2Password:
newHash = hashCrypt(password, salt, int(iterations), Sha256Hash)
case mysql.AuthTiDBSM3Password:
newHash = hashCrypt(password, salt, int(iterations), Sm3Hash)
}
return bytes.Equal(pwhash, []byte(newHash)), nil
}
// NewHashPassword creates a new password for caching_sha2_password or tidb_sm3_password
func NewHashPassword(pwd string, hash string) string {
salt := make([]byte, SALT_LENGTH)
rand.Read(salt)
// Restrict to 7-bit to avoid multi-byte UTF-8
for i := range salt {
salt[i] = salt[i] &^ 128
for salt[i] == 36 || salt[i] == 0 { // '$' or NUL
newval := make([]byte, 1)
rand.Read(newval)
salt[i] = newval[0] &^ 128
}
}
switch hash {
case mysql.AuthCachingSha2Password:
return hashCrypt(pwd, salt, 5*ITERATION_MULTIPLIER, Sha256Hash)
case mysql.AuthTiDBSM3Password:
return hashCrypt(pwd, salt, 5*ITERATION_MULTIPLIER, Sm3Hash)
default:
return ""
}
}
// Copyright 2015 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// See the License for the specific language governing permissions and
// limitations under the License.
package auth
import (
"bytes"
"crypto/sha1" //nolint: gosec
"encoding/hex"
"fmt"
"github.com/pingcap/errors"
"github.com/pingcap/tidb/pkg/parser/terror"
)
// CheckScrambledPassword check scrambled password received from client.
// The new authentication is performed in following manner:
//
// SERVER: public_seed=create_random_string()
// send(public_seed)
// CLIENT: recv(public_seed)
// hash_stage1=sha1("password")
// hash_stage2=sha1(hash_stage1)
// reply=xor(hash_stage1, sha1(public_seed,hash_stage2)
// // this three steps are done in scramble()
// send(reply)
// SERVER: recv(reply)
// hash_stage1=xor(reply, sha1(public_seed,hash_stage2))
// candidate_hash2=sha1(hash_stage1)
// check(candidate_hash2==hash_stage2)
// // this three steps are done in check_scramble()
func CheckScrambledPassword(salt, hpwd, auth []byte) bool {
//nolint: gosec
crypt := sha1.New()
_, err := crypt.Write(salt)
terror.Log(errors.Trace(err))
_, err = crypt.Write(hpwd)
terror.Log(errors.Trace(err))
hash := crypt.Sum(nil)
// token = scrambleHash XOR stage1Hash
if len(auth) != len(hash) {
return false
}
for i := range hash {
hash[i] ^= auth[i]
}
return bytes.Equal(hpwd, Sha1Hash(hash))
}
// Sha1Hash is an util function to calculate sha1 hash.
func Sha1Hash(bs []byte) []byte {
//nolint: gosec
crypt := sha1.New()
_, err := crypt.Write(bs)
terror.Log(errors.Trace(err))
return crypt.Sum(nil)
}
// EncodePassword converts plaintext password(type is string) to hashed hex string.
func EncodePassword(pwd string) string {
if len(pwd) == 0 {
return ""
}
hash1 := Sha1Hash([]byte(pwd))
hash2 := Sha1Hash(hash1)
return fmt.Sprintf("*%X", hash2)
}
// EncodePasswordBytes converts plaintext password(type is []byte) to hashed hex string.
func EncodePasswordBytes(pwd []byte) string {
if len(pwd) == 0 {
return ""
}
hash1 := Sha1Hash(pwd)
hash2 := Sha1Hash(hash1)
return fmt.Sprintf("*%X", hash2)
}
// DecodePassword converts hex string password without prefix '*' to byte array.
func DecodePassword(pwd string) ([]byte, error) {
x, err := hex.DecodeString(pwd[1:])
if err != nil {
return nil, errors.Trace(err)
}
return x, nil
}
// Copyright 2022 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// See the License for the specific language governing permissions and
// limitations under the License.
package auth
import (
"encoding/binary"
"hash"
)
// The concrete Sm3Hash Cryptographic Hash Algorithm can be accessed in http://www.sca.gov.cn/sca/xwdt/2010-12/17/content_1002389.shtml
// This implementation of 'type sm3 struct' is modified from https://github.com/tjfoc/gmsm/tree/601ddb090dcf53d7951cc4dcc66276e2b817837c/sm3
// Some other references:
// https://datatracker.ietf.org/doc/draft-sca-cfrg-sm3/
/*
Copyright Suzhou Tongji Fintech Research Institute 2017 All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
type sm3 struct {
digest [8]uint32 // digest represents the partial evaluation of V
length uint64 // length of the message
unhandleMsg []byte
blockSize int
size int
}
func ff0(x, y, z uint32) uint32 { return x ^ y ^ z }
func ff1(x, y, z uint32) uint32 { return (x & y) | (x & z) | (y & z) }
func gg0(x, y, z uint32) uint32 { return x ^ y ^ z }
func gg1(x, y, z uint32) uint32 { return (x & y) | (^x & z) }
func p0(x uint32) uint32 { return x ^ leftRotate(x, 9) ^ leftRotate(x, 17) }
func p1(x uint32) uint32 { return x ^ leftRotate(x, 15) ^ leftRotate(x, 23) }
func leftRotate(x uint32, i uint32) uint32 { return x<<(i%32) | x>>(32-i%32) }
func (sm3 *sm3) pad() []byte {
msg := sm3.unhandleMsg
// Append '1'
msg = append(msg, 0x80)
// Append until the resulting message length (in bits) is congruent to 448 (mod 512)
blockSize := 64
for i := len(msg); i%blockSize != 56; i++ {
msg = append(msg, 0x00)
}
// append message length
msg = append(msg, uint8(sm3.length>>56&0xff))
msg = append(msg, uint8(sm3.length>>48&0xff))
msg = append(msg, uint8(sm3.length>>40&0xff))
msg = append(msg, uint8(sm3.length>>32&0xff))
msg = append(msg, uint8(sm3.length>>24&0xff))
msg = append(msg, uint8(sm3.length>>16&0xff))
msg = append(msg, uint8(sm3.length>>8&0xff))
msg = append(msg, uint8(sm3.length>>0&0xff))
return msg
}
func (sm3 *sm3) update(msg []byte) [8]uint32 {
var w [68]uint32
var w1 [64]uint32
a, b, c, d, e, f, g, h := sm3.digest[0], sm3.digest[1], sm3.digest[2], sm3.digest[3], sm3.digest[4], sm3.digest[5], sm3.digest[6], sm3.digest[7]
for len(msg) >= 64 {
for i := range 16 {
w[i] = binary.BigEndian.Uint32(msg[4*i : 4*(i+1)])
}
for i := 16; i < 68; i++ {
w[i] = p1(w[i-16]^w[i-9]^leftRotate(w[i-3], 15)) ^ leftRotate(w[i-13], 7) ^ w[i-6]
}
for i := range 64 {
w1[i] = w[i] ^ w[i+4]
}
a1, b1, c1, d1, e1, f1, g1, h1 := a, b, c, d, e, f, g, h
for i := range 16 {
ss1 := leftRotate(leftRotate(a1, 12)+e1+leftRotate(0x79cc4519, uint32(i)), 7)
ss2 := ss1 ^ leftRotate(a1, 12)
tt1 := ff0(a1, b1, c1) + d1 + ss2 + w1[i]
tt2 := gg0(e1, f1, g1) + h1 + ss1 + w[i]
d1 = c1
c1 = leftRotate(b1, 9)
b1 = a1
a1 = tt1
h1 = g1
g1 = leftRotate(f1, 19)
f1 = e1
e1 = p0(tt2)
}
for i := 16; i < 64; i++ {
ss1 := leftRotate(leftRotate(a1, 12)+e1+leftRotate(0x7a879d8a, uint32(i)), 7)
ss2 := ss1 ^ leftRotate(a1, 12)
tt1 := ff1(a1, b1, c1) + d1 + ss2 + w1[i]
tt2 := gg1(e1, f1, g1) + h1 + ss1 + w[i]
d1 = c1
c1 = leftRotate(b1, 9)
b1 = a1
a1 = tt1
h1 = g1
g1 = leftRotate(f1, 19)
f1 = e1
e1 = p0(tt2)
}
a ^= a1
b ^= b1
c ^= c1
d ^= d1
e ^= e1
f ^= f1
g ^= g1
h ^= h1
msg = msg[64:]
}
var digest [8]uint32
digest[0], digest[1], digest[2], digest[3], digest[4], digest[5], digest[6], digest[7] = a, b, c, d, e, f, g, h
return digest
}
// BlockSize returns the hash's underlying block size.
// The Write method must be able to accept any amount of data,
// but it may operate more efficiently if all writes are a multiple of the block size.
func (sm3 *sm3) BlockSize() int { return sm3.blockSize }
// Size returns the number of bytes Sum will return.
func (sm3 *sm3) Size() int { return sm3.size }
// Reset clears the internal state by zeroing bytes in the state buffer.
// This can be skipped for a newly-created hash state; the default zero-allocated state is correct.
func (sm3 *sm3) Reset() {
// Reset digest
sm3.digest[0] = 0x7380166f
sm3.digest[1] = 0x4914b2b9
sm3.digest[2] = 0x172442d7
sm3.digest[3] = 0xda8a0600
sm3.digest[4] = 0xa96f30bc
sm3.digest[5] = 0x163138aa
sm3.digest[6] = 0xe38dee4d
sm3.digest[7] = 0xb0fb0e4e
sm3.length = 0
sm3.unhandleMsg = []byte{}
sm3.blockSize = 64
sm3.size = 32
}
// Write (via the embedded io.Writer interface) adds more data to the running hash.
// It never returns an error.
func (sm3 *sm3) Write(p []byte) (int, error) {
toWrite := len(p)
sm3.length += uint64(len(p) * 8)
msg := append(sm3.unhandleMsg, p...)
nblocks := len(msg) / sm3.BlockSize()
sm3.digest = sm3.update(msg)
sm3.unhandleMsg = msg[nblocks*sm3.BlockSize():]
return toWrite, nil
}
// Sum appends the current hash to b and returns the resulting slice.
// It does not change the underlying hash state.
func (sm3 *sm3) Sum(in []byte) []byte {
_, _ = sm3.Write(in)
msg := sm3.pad()
// Finalize
digest := sm3.update(msg)
// save hash to in
needed := sm3.Size()
if cap(in)-len(in) < needed {
newIn := make([]byte, len(in), len(in)+needed)
copy(newIn, in)
in = newIn
}
out := in[len(in) : len(in)+needed]
for i := range 8 {
binary.BigEndian.PutUint32(out[i*4:], digest[i])
}
return out
}
// NewSM3 returns a new hash.Hash computing the Sm3Hash checksum.
func NewSM3() hash.Hash {
var h sm3
h.Reset()
return &h
}
// Sm3Hash returns the sm3 checksum of the data.
func Sm3Hash(data []byte) []byte {
h := NewSM3()
h.Write(data)
return h.Sum(nil)
}
// Copyright 2015 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// See the License for the specific language governing permissions and
// limitations under the License.
package charset
import (
"slices"
"strings"
"github.com/pingcap/errors"
"github.com/pingcap/log"
"github.com/pingcap/tidb/pkg/parser/mysql"
"github.com/pingcap/tidb/pkg/parser/terror"
"go.uber.org/zap"
)
var (
// ErrUnknownCollation is unknown collation.
ErrUnknownCollation = terror.ClassDDL.NewStd(mysql.ErrUnknownCollation)
// ErrCollationCharsetMismatch is collation charset mismatch.
ErrCollationCharsetMismatch = terror.ClassDDL.NewStd(mysql.ErrCollationCharsetMismatch)
)
var (
// PadSpace is to mark that trailing spaces are insignificant in comparisons
PadSpace = "PAD SPACE"
// PadNone is to mark that trailing spaces are significant in comparisons
PadNone = "NO PAD"
)
// Charset is a charset.
// Now we only support MySQL.
type Charset struct {
Name string
DefaultCollation string
Collations map[string]*Collation
Desc string
Maxlen int
}
// Collation is a collation.
// Now we only support MySQL.
type Collation struct {
ID int
CharsetName string
Name string
IsDefault bool
Sortlen int
PadAttribute string
}
var collationsIDMap = make(map[int]*Collation)
var collationsNameMap = make(map[string]*Collation)
var supportedCollations = make([]*Collation, 0, len(supportedCollationNames))
// CharacterSetInfos contains all the supported charsets.
var CharacterSetInfos = map[string]*Charset{
CharsetUTF8: {CharsetUTF8, CollationUTF8, make(map[string]*Collation), "UTF-8 Unicode", 3},
CharsetUTF8MB4: {CharsetUTF8MB4, CollationUTF8MB4, make(map[string]*Collation), "UTF-8 Unicode", 4},
CharsetASCII: {CharsetASCII, CollationASCII, make(map[string]*Collation), "US ASCII", 1},
CharsetLatin1: {CharsetLatin1, CollationLatin1, make(map[string]*Collation), "Latin1", 1},
CharsetBin: {CharsetBin, CollationBin, make(map[string]*Collation), "binary", 1},
CharsetGBK: {CharsetGBK, CollationGBKBin, make(map[string]*Collation), "Chinese Internal Code Specification", 2},
CharsetGB18030: {CharsetGB18030, CollationGB18030Bin, make(map[string]*Collation), "China National Standard GB18030", 4},
}
// All the names supported collations should be in the following table.
var supportedCollationNames = map[string]struct{}{
CollationUTF8: {},
CollationUTF8MB4: {},
CollationASCII: {},
CollationLatin1: {},
CollationBin: {},
CollationGBKBin: {},
CollationGB18030Bin: {},
}
// TiFlashSupportedCharsets is a map which contains TiFlash supports charsets.
var TiFlashSupportedCharsets = map[string]struct{}{
CharsetUTF8: {},
CharsetUTF8MB4: {},
CharsetASCII: {},
CharsetLatin1: {},
CharsetBin: {},
}
// GetSupportedCharsets gets descriptions for all charsets supported so far.
func GetSupportedCharsets() []*Charset {
charsets := make([]*Charset, 0, len(CharacterSetInfos))
for _, ch := range CharacterSetInfos {
charsets = append(charsets, ch)
}
// sort charset by name.
slices.SortFunc(charsets, func(i, j *Charset) int {
return strings.Compare(i.Name, j.Name)
})
return charsets
}
// GetSupportedCollations gets information for all collations supported so far.
func GetSupportedCollations() []*Collation {
return supportedCollations
}
// ValidCharsetAndCollation checks the charset and the collation validity
// and returns a boolean.
func ValidCharsetAndCollation(cs string, co string) bool {
// We will use utf8 as a default charset.
if cs == "" || cs == CharsetUTF8MB3 {
cs = CharsetUTF8
}
chs, err := GetCharsetInfo(cs)
if err != nil {
return false
}
if co == "" {
return true
}
co = utf8Alias(strings.ToLower(co))
_, ok := chs.Collations[co]
return ok
}
// GetDefaultCollationLegacy is compatible with the charset support in old version parser.
func GetDefaultCollationLegacy(charset string) (string, error) {
switch strings.ToLower(charset) {
case CharsetUTF8MB3:
return GetDefaultCollation(CharsetUTF8)
case CharsetUTF8, CharsetUTF8MB4, CharsetASCII, CharsetLatin1, CharsetBin:
return GetDefaultCollation(charset)
default:
return "", errors.Errorf("Unknown charset %s", charset)
}
}
// GetDefaultCollation returns the default collation for charset.
func GetDefaultCollation(charset string) (string, error) {
cs, err := GetCharsetInfo(charset)
if err != nil {
return "", err
}
return cs.DefaultCollation, nil
}
// GetDefaultCharsetAndCollate returns the default charset and collation.
func GetDefaultCharsetAndCollate() (defaultCharset string, defaultCollationName string) {
return mysql.DefaultCharset, mysql.DefaultCollationName
}
// GetCharsetInfo returns charset and collation for cs as name.
func GetCharsetInfo(cs string) (*Charset, error) {
if strings.ToLower(cs) == CharsetUTF8MB3 {
cs = CharsetUTF8
}
if c, ok := CharacterSetInfos[strings.ToLower(cs)]; ok {
return c, nil
}
if c, ok := charsets[strings.ToLower(cs)]; ok {
return c, errors.Errorf("Unsupported charset %s", cs)
}
return nil, errors.Errorf("Unknown charset %s", cs)
}
// GetCharsetInfoByID returns charset and collation for id as cs_number.
func GetCharsetInfoByID(coID int) (charsetStr string, collateStr string, err error) {
if coID == mysql.DefaultCollationID {
return mysql.DefaultCharset, mysql.DefaultCollationName, nil
}
if collation, ok := collationsIDMap[coID]; ok {
return collation.CharsetName, collation.Name, nil
}
log.Warn(
"unable to get collation name from collation ID, return default charset and collation instead",
zap.Int("ID", coID),
zap.Stack("stack"))
return mysql.DefaultCharset, mysql.DefaultCollationName, errors.Errorf("Unknown collation id %d", coID)
}
func utf8Alias(csname string) string {
switch csname {
case "utf8mb3_bin":
csname = "utf8_bin"
case "utf8mb3_unicode_ci":
csname = "utf8_unicode_ci"
case "utf8mb3_general_ci":
csname = "utf8_general_ci"
default:
}
return csname
}
// GetCollationByName returns the collation by name.
func GetCollationByName(name string) (*Collation, error) {
csname := utf8Alias(strings.ToLower(name))
collation, ok := collationsNameMap[csname]
if !ok {
return nil, ErrUnknownCollation.GenWithStackByArgs(name)
}
return collation, nil
}
// GetCollationByID returns collations by given id.
func GetCollationByID(id int) (*Collation, error) {
collation, ok := collationsIDMap[id]
if !ok {
return nil, errors.Errorf("Unknown collation id %d", id)
}
return collation, nil
}
const (
// CollationBin is the default collation for CharsetBin.
CollationBin = "binary"
// CollationUTF8 is the default collation for CharsetUTF8.
CollationUTF8 = "utf8_bin"
// CollationUTF8MB4 is the default collation for CharsetUTF8MB4.
CollationUTF8MB4 = "utf8mb4_bin"
// CollationASCII is the default collation for CharsetACSII.
CollationASCII = "ascii_bin"
// CollationLatin1 is the default collation for CharsetLatin1.
CollationLatin1 = "latin1_bin"
// CollationGBKBin is the default collation for CharsetGBK when new collation is disabled.
CollationGBKBin = "gbk_bin"
// CollationGBKChineseCI is the default collation for CharsetGBK when new collation is enabled.
CollationGBKChineseCI = "gbk_chinese_ci"
// CollationGB18030Bin is the default collation for CharsetGB18030 when new collation is disabled.
CollationGB18030Bin = "gb18030_bin"
// CollationGB18030ChineseCI is the default collation for CharsetGB18030 when new collation is enabled.
CollationGB18030ChineseCI = "gb18030_chinese_ci"
)
const (
// CharsetASCII is a subset of UTF8.
CharsetASCII = "ascii"
// CharsetBin is used for marking binary charset.
CharsetBin = "binary"
// CharsetLatin1 is a single byte charset.
CharsetLatin1 = "latin1"
// CharsetUTF8 is the default charset for string types.
CharsetUTF8 = "utf8"
// CharsetUTF8MB3 is 3 bytes utf8, a MySQL legacy encoding. "utf8" and "utf8mb3" are aliases.
CharsetUTF8MB3 = "utf8mb3"
// CharsetUTF8MB4 represents 4 bytes utf8, which works the same way as utf8 in Go.
CharsetUTF8MB4 = "utf8mb4"
// CharsetGB18030 represents 4 bytes gb18030.
CharsetGB18030 = "gb18030"
//revive:disable:exported
CharsetARMSCII8 = "armscii8"
CharsetBig5 = "big5"
CharsetCP1250 = "cp1250"
CharsetCP1251 = "cp1251"
CharsetCP1256 = "cp1256"
CharsetCP1257 = "cp1257"
CharsetCP850 = "cp850"
CharsetCP852 = "cp852"
CharsetCP866 = "cp866"
CharsetCP932 = "cp932"
CharsetDEC8 = "dec8"
CharsetEUCJPMS = "eucjpms"
CharsetEUCKR = "euckr"
CharsetGB2312 = "gb2312"
CharsetGBK = "gbk"
CharsetGEOSTD8 = "geostd8"
CharsetGreek = "greek"
CharsetHebrew = "hebrew"
CharsetHP8 = "hp8"
CharsetKEYBCS2 = "keybcs2"
CharsetKOI8R = "koi8r"
CharsetKOI8U = "koi8u"
CharsetLatin2 = "latin2"
CharsetLatin5 = "latin5"
CharsetLatin7 = "latin7"
CharsetMacCE = "macce"
CharsetMacRoman = "macroman"
CharsetSJIS = "sjis"
CharsetSWE7 = "swe7"
CharsetTIS620 = "tis620"
CharsetUCS2 = "ucs2"
CharsetUJIS = "ujis"
CharsetUTF16 = "utf16"
CharsetUTF16LE = "utf16le"
CharsetUTF32 = "utf32"
//revive:enable:exported
)
var charsets = map[string]*Charset{
CharsetARMSCII8: {Name: CharsetARMSCII8, Maxlen: 1, DefaultCollation: "armscii8_general_ci", Desc: "ARMSCII-8 Armenian", Collations: make(map[string]*Collation)},
CharsetASCII: {Name: CharsetASCII, Maxlen: 1, DefaultCollation: "ascii_general_ci", Desc: "US ASCII", Collations: make(map[string]*Collation)},
CharsetBig5: {Name: CharsetBig5, Maxlen: 2, DefaultCollation: "big5_chinese_ci", Desc: "Big5 Traditional Chinese", Collations: make(map[string]*Collation)},
CharsetBin: {Name: CharsetBin, Maxlen: 1, DefaultCollation: "binary", Desc: "Binary pseudo charset", Collations: make(map[string]*Collation)},
CharsetCP1250: {Name: CharsetCP1250, Maxlen: 1, DefaultCollation: "cp1250_general_ci", Desc: "Windows Central European", Collations: make(map[string]*Collation)},
CharsetCP1251: {Name: CharsetCP1251, Maxlen: 1, DefaultCollation: "cp1251_general_ci", Desc: "Windows Cyrillic", Collations: make(map[string]*Collation)},
CharsetCP1256: {Name: CharsetCP1256, Maxlen: 1, DefaultCollation: "cp1256_general_ci", Desc: "Windows Arabic", Collations: make(map[string]*Collation)},
CharsetCP1257: {Name: CharsetCP1257, Maxlen: 1, DefaultCollation: "cp1257_general_ci", Desc: "Windows Baltic", Collations: make(map[string]*Collation)},
CharsetCP850: {Name: CharsetCP850, Maxlen: 1, DefaultCollation: "cp850_general_ci", Desc: "DOS West European", Collations: make(map[string]*Collation)},
CharsetCP852: {Name: CharsetCP852, Maxlen: 1, DefaultCollation: "cp852_general_ci", Desc: "DOS Central European", Collations: make(map[string]*Collation)},
CharsetCP866: {Name: CharsetCP866, Maxlen: 1, DefaultCollation: "cp866_general_ci", Desc: "DOS Russian", Collations: make(map[string]*Collation)},
CharsetCP932: {Name: CharsetCP932, Maxlen: 2, DefaultCollation: "cp932_japanese_ci", Desc: "SJIS for Windows Japanese", Collations: make(map[string]*Collation)},
CharsetDEC8: {Name: CharsetDEC8, Maxlen: 1, DefaultCollation: "dec8_swedish_ci", Desc: "DEC West European", Collations: make(map[string]*Collation)},
CharsetEUCJPMS: {Name: CharsetEUCJPMS, Maxlen: 3, DefaultCollation: "eucjpms_japanese_ci", Desc: "UJIS for Windows Japanese", Collations: make(map[string]*Collation)},
CharsetEUCKR: {Name: CharsetEUCKR, Maxlen: 2, DefaultCollation: "euckr_korean_ci", Desc: "EUC-KR Korean", Collations: make(map[string]*Collation)},
CharsetGB18030: {Name: CharsetGB18030, Maxlen: 4, DefaultCollation: "gb18030_chinese_ci", Desc: "China National Standard GB18030", Collations: make(map[string]*Collation)},
CharsetGB2312: {Name: CharsetGB2312, Maxlen: 2, DefaultCollation: "gb2312_chinese_ci", Desc: "GB2312 Simplified Chinese", Collations: make(map[string]*Collation)},
CharsetGBK: {Name: CharsetGBK, Maxlen: 2, DefaultCollation: "gbk_chinese_ci", Desc: "GBK Simplified Chinese", Collations: make(map[string]*Collation)},
CharsetGEOSTD8: {Name: CharsetGEOSTD8, Maxlen: 1, DefaultCollation: "geostd8_general_ci", Desc: "GEOSTD8 Georgian", Collations: make(map[string]*Collation)},
CharsetGreek: {Name: CharsetGreek, Maxlen: 1, DefaultCollation: "greek_general_ci", Desc: "ISO 8859-7 Greek", Collations: make(map[string]*Collation)},
CharsetHebrew: {Name: CharsetHebrew, Maxlen: 1, DefaultCollation: "hebrew_general_ci", Desc: "ISO 8859-8 Hebrew", Collations: make(map[string]*Collation)},
CharsetHP8: {Name: CharsetHP8, Maxlen: 1, DefaultCollation: "hp8_english_ci", Desc: "HP West European", Collations: make(map[string]*Collation)},
CharsetKEYBCS2: {Name: CharsetKEYBCS2, Maxlen: 1, DefaultCollation: "keybcs2_general_ci", Desc: "DOS Kamenicky Czech-Slovak", Collations: make(map[string]*Collation)},
CharsetKOI8R: {Name: CharsetKOI8R, Maxlen: 1, DefaultCollation: "koi8u_general_ci", Desc: "KOI8-U Ukrainian", Collations: make(map[string]*Collation)},
CharsetKOI8U: {Name: CharsetKOI8U, Maxlen: 1, DefaultCollation: "koi8r_general_ci", Desc: "KOI8-R Relcom Russian", Collations: make(map[string]*Collation)},
CharsetLatin1: {Name: CharsetLatin1, Maxlen: 1, DefaultCollation: "latin1_swedish_ci", Desc: "cp1252 West European", Collations: make(map[string]*Collation)},
CharsetLatin2: {Name: CharsetLatin2, Maxlen: 1, DefaultCollation: "latin2_general_ci", Desc: "ISO 8859-2 Central European", Collations: make(map[string]*Collation)},
CharsetLatin5: {Name: CharsetLatin5, Maxlen: 1, DefaultCollation: "latin5_turkish_ci", Desc: "ISO 8859-9 Turkish", Collations: make(map[string]*Collation)},
CharsetLatin7: {Name: CharsetLatin7, Maxlen: 1, DefaultCollation: "latin7_general_ci", Desc: "ISO 8859-13 Baltic", Collations: make(map[string]*Collation)},
CharsetMacCE: {Name: CharsetMacCE, Maxlen: 1, DefaultCollation: "macce_general_ci", Desc: "Mac Central European", Collations: make(map[string]*Collation)},
CharsetMacRoman: {Name: CharsetMacRoman, Maxlen: 1, DefaultCollation: "macroman_general_ci", Desc: "Mac West European", Collations: make(map[string]*Collation)},
CharsetSJIS: {Name: CharsetSJIS, Maxlen: 2, DefaultCollation: "sjis_japanese_ci", Desc: "Shift-JIS Japanese", Collations: make(map[string]*Collation)},
CharsetSWE7: {Name: CharsetSWE7, Maxlen: 1, DefaultCollation: "swe7_swedish_ci", Desc: "7bit Swedish", Collations: make(map[string]*Collation)},
CharsetTIS620: {Name: CharsetTIS620, Maxlen: 1, DefaultCollation: "tis620_thai_ci", Desc: "TIS620 Thai", Collations: make(map[string]*Collation)},
CharsetUCS2: {Name: CharsetUCS2, Maxlen: 2, DefaultCollation: "ucs2_general_ci", Desc: "UCS-2 Unicode", Collations: make(map[string]*Collation)},
CharsetUJIS: {Name: CharsetUJIS, Maxlen: 3, DefaultCollation: "ujis_japanese_ci", Desc: "EUC-JP Japanese", Collations: make(map[string]*Collation)},
CharsetUTF16: {Name: CharsetUTF16, Maxlen: 4, DefaultCollation: "utf16_general_ci", Desc: "UTF-16 Unicode", Collations: make(map[string]*Collation)},
CharsetUTF16LE: {Name: CharsetUTF16LE, Maxlen: 4, DefaultCollation: "utf16le_general_ci", Desc: "UTF-16LE Unicode", Collations: make(map[string]*Collation)},
CharsetUTF32: {Name: CharsetUTF32, Maxlen: 4, DefaultCollation: "utf32_general_ci", Desc: "UTF-32 Unicode", Collations: make(map[string]*Collation)},
CharsetUTF8: {Name: CharsetUTF8, Maxlen: 3, DefaultCollation: "utf8_general_ci", Desc: "UTF-8 Unicode", Collations: make(map[string]*Collation)},
CharsetUTF8MB4: {Name: CharsetUTF8MB4, Maxlen: 4, DefaultCollation: "utf8mb4_0900_ai_ci", Desc: "UTF-8 Unicode", Collations: make(map[string]*Collation)},
}
var collations = []*Collation{
{1, "big5", "big5_chinese_ci", true, 1, PadSpace},
{2, "latin2", "latin2_czech_cs", false, 1, PadSpace},
{3, "dec8", "dec8_swedish_ci", true, 1, PadSpace},
{4, "cp850", "cp850_general_ci", true, 1, PadSpace},
{5, "latin1", "latin1_german1_ci", false, 1, PadSpace},
{6, "hp8", "hp8_english_ci", true, 1, PadSpace},
{7, "koi8r", "koi8r_general_ci", true, 1, PadSpace},
{8, "latin1", "latin1_swedish_ci", false, 1, PadSpace},
{9, "latin2", "latin2_general_ci", true, 1, PadSpace},
{10, "swe7", "swe7_swedish_ci", true, 1, PadSpace},
{11, "ascii", "ascii_general_ci", false, 1, PadSpace},
{12, "ujis", "ujis_japanese_ci", true, 1, PadSpace},
{13, "sjis", "sjis_japanese_ci", true, 1, PadSpace},
{14, "cp1251", "cp1251_bulgarian_ci", false, 1, PadSpace},
{15, "latin1", "latin1_danish_ci", false, 1, PadSpace},
{16, "hebrew", "hebrew_general_ci", true, 1, PadSpace},
{18, "tis620", "tis620_thai_ci", true, 1, PadSpace},
{19, "euckr", "euckr_korean_ci", true, 1, PadSpace},
{20, "latin7", "latin7_estonian_cs", false, 1, PadSpace},
{21, "latin2", "latin2_hungarian_ci", false, 1, PadSpace},
{22, "koi8u", "koi8u_general_ci", true, 1, PadSpace},
{23, "cp1251", "cp1251_ukrainian_ci", false, 1, PadSpace},
{24, "gb2312", "gb2312_chinese_ci", true, 1, PadSpace},
{25, "greek", "greek_general_ci", true, 1, PadSpace},
{26, "cp1250", "cp1250_general_ci", true, 1, PadSpace},
{27, "latin2", "latin2_croatian_ci", false, 1, PadSpace},
{28, "gbk", "gbk_chinese_ci", false, 1, PadSpace},
{29, "cp1257", "cp1257_lithuanian_ci", false, 1, PadSpace},
{30, "latin5", "latin5_turkish_ci", true, 1, PadSpace},
{31, "latin1", "latin1_german2_ci", false, 1, PadSpace},
{32, "armscii8", "armscii8_general_ci", true, 1, PadSpace},
{33, "utf8", "utf8_general_ci", false, 1, PadSpace},
{34, "cp1250", "cp1250_czech_cs", false, 1, PadSpace},
{35, "ucs2", "ucs2_general_ci", true, 1, PadSpace},
{36, "cp866", "cp866_general_ci", true, 1, PadSpace},
{37, "keybcs2", "keybcs2_general_ci", true, 1, PadSpace},
{38, "macce", "macce_general_ci", true, 1, PadSpace},
{39, "macroman", "macroman_general_ci", true, 1, PadSpace},
{40, "cp852", "cp852_general_ci", true, 1, PadSpace},
{41, "latin7", "latin7_general_ci", true, 1, PadSpace},
{42, "latin7", "latin7_general_cs", false, 1, PadSpace},
{43, "macce", "macce_bin", false, 1, PadSpace},
{44, "cp1250", "cp1250_croatian_ci", false, 1, PadSpace},
{45, "utf8mb4", "utf8mb4_general_ci", false, 1, PadSpace},
{46, "utf8mb4", "utf8mb4_bin", true, 1, PadSpace},
{47, "latin1", "latin1_bin", true, 1, PadSpace},
{48, "latin1", "latin1_general_ci", false, 1, PadSpace},
{49, "latin1", "latin1_general_cs", false, 1, PadSpace},
{50, "cp1251", "cp1251_bin", false, 1, PadSpace},
{51, "cp1251", "cp1251_general_ci", true, 1, PadSpace},
{52, "cp1251", "cp1251_general_cs", false, 1, PadSpace},
{53, "macroman", "macroman_bin", false, 1, PadSpace},
{54, "utf16", "utf16_general_ci", true, 1, PadSpace},
{55, "utf16", "utf16_bin", false, 1, PadSpace},
{56, "utf16le", "utf16le_general_ci", true, 1, PadSpace},
{57, "cp1256", "cp1256_general_ci", true, 1, PadSpace},
{58, "cp1257", "cp1257_bin", false, 1, PadSpace},
{59, "cp1257", "cp1257_general_ci", true, 1, PadSpace},
{60, "utf32", "utf32_general_ci", true, 1, PadSpace},
{61, "utf32", "utf32_bin", false, 1, PadSpace},
{62, "utf16le", "utf16le_bin", false, 1, PadSpace},
{63, "binary", "binary", true, 1, PadNone},
{64, "armscii8", "armscii8_bin", false, 1, PadSpace},
{65, "ascii", "ascii_bin", true, 1, PadSpace},
{66, "cp1250", "cp1250_bin", false, 1, PadSpace},
{67, "cp1256", "cp1256_bin", false, 1, PadSpace},
{68, "cp866", "cp866_bin", false, 1, PadSpace},
{69, "dec8", "dec8_bin", false, 1, PadSpace},
{70, "greek", "greek_bin", false, 1, PadSpace},
{71, "hebrew", "hebrew_bin", false, 1, PadSpace},
{72, "hp8", "hp8_bin", false, 1, PadSpace},
{73, "keybcs2", "keybcs2_bin", false, 1, PadSpace},
{74, "koi8r", "koi8r_bin", false, 1, PadSpace},
{75, "koi8u", "koi8u_bin", false, 1, PadSpace},
{76, "utf8", "utf8_tolower_ci", false, 1, PadNone},
{77, "latin2", "latin2_bin", false, 1, PadSpace},
{78, "latin5", "latin5_bin", false, 1, PadSpace},
{79, "latin7", "latin7_bin", false, 1, PadSpace},
{80, "cp850", "cp850_bin", false, 1, PadSpace},
{81, "cp852", "cp852_bin", false, 1, PadSpace},
{82, "swe7", "swe7_bin", false, 1, PadSpace},
{83, "utf8", "utf8_bin", true, 1, PadSpace},
{84, "big5", "big5_bin", false, 1, PadSpace},
{85, "euckr", "euckr_bin", false, 1, PadSpace},
{86, "gb2312", "gb2312_bin", false, 1, PadSpace},
{87, "gbk", "gbk_bin", true, 1, PadSpace},
{88, "sjis", "sjis_bin", false, 1, PadSpace},
{89, "tis620", "tis620_bin", false, 1, PadSpace},
{90, "ucs2", "ucs2_bin", false, 1, PadSpace},
{91, "ujis", "ujis_bin", false, 1, PadSpace},
{92, "geostd8", "geostd8_general_ci", true, 1, PadSpace},
{93, "geostd8", "geostd8_bin", false, 1, PadSpace},
{94, "latin1", "latin1_spanish_ci", false, 1, PadSpace},
{95, "cp932", "cp932_japanese_ci", true, 1, PadSpace},
{96, "cp932", "cp932_bin", false, 1, PadSpace},
{97, "eucjpms", "eucjpms_japanese_ci", true, 1, PadSpace},
{98, "eucjpms", "eucjpms_bin", false, 1, PadSpace},
{99, "cp1250", "cp1250_polish_ci", false, 1, PadSpace},
{101, "utf16", "utf16_unicode_ci", false, 1, PadSpace},
{102, "utf16", "utf16_icelandic_ci", false, 1, PadSpace},
{103, "utf16", "utf16_latvian_ci", false, 1, PadSpace},
{104, "utf16", "utf16_romanian_ci", false, 1, PadSpace},
{105, "utf16", "utf16_slovenian_ci", false, 1, PadSpace},
{106, "utf16", "utf16_polish_ci", false, 1, PadSpace},
{107, "utf16", "utf16_estonian_ci", false, 1, PadSpace},
{108, "utf16", "utf16_spanish_ci", false, 1, PadSpace},
{109, "utf16", "utf16_swedish_ci", false, 1, PadSpace},
{110, "utf16", "utf16_turkish_ci", false, 1, PadSpace},
{111, "utf16", "utf16_czech_ci", false, 1, PadSpace},
{112, "utf16", "utf16_danish_ci", false, 1, PadSpace},
{113, "utf16", "utf16_lithuanian_ci", false, 1, PadSpace},
{114, "utf16", "utf16_slovak_ci", false, 1, PadSpace},
{115, "utf16", "utf16_spanish2_ci", false, 1, PadSpace},
{116, "utf16", "utf16_roman_ci", false, 1, PadSpace},
{117, "utf16", "utf16_persian_ci", false, 1, PadSpace},
{118, "utf16", "utf16_esperanto_ci", false, 1, PadSpace},
{119, "utf16", "utf16_hungarian_ci", false, 1, PadSpace},
{120, "utf16", "utf16_sinhala_ci", false, 1, PadSpace},
{121, "utf16", "utf16_german2_ci", false, 1, PadSpace},
{122, "utf16", "utf16_croatian_ci", false, 1, PadSpace},
{123, "utf16", "utf16_unicode_520_ci", false, 1, PadSpace},
{124, "utf16", "utf16_vietnamese_ci", false, 1, PadSpace},
{128, "ucs2", "ucs2_unicode_ci", false, 1, PadSpace},
{129, "ucs2", "ucs2_icelandic_ci", false, 1, PadSpace},
{130, "ucs2", "ucs2_latvian_ci", false, 1, PadSpace},
{131, "ucs2", "ucs2_romanian_ci", false, 1, PadSpace},
{132, "ucs2", "ucs2_slovenian_ci", false, 1, PadSpace},
{133, "ucs2", "ucs2_polish_ci", false, 1, PadSpace},
{134, "ucs2", "ucs2_estonian_ci", false, 1, PadSpace},
{135, "ucs2", "ucs2_spanish_ci", false, 1, PadSpace},
{136, "ucs2", "ucs2_swedish_ci", false, 1, PadSpace},
{137, "ucs2", "ucs2_turkish_ci", false, 1, PadSpace},
{138, "ucs2", "ucs2_czech_ci", false, 1, PadSpace},
{139, "ucs2", "ucs2_danish_ci", false, 1, PadSpace},
{140, "ucs2", "ucs2_lithuanian_ci", false, 1, PadSpace},
{141, "ucs2", "ucs2_slovak_ci", false, 1, PadSpace},
{142, "ucs2", "ucs2_spanish2_ci", false, 1, PadSpace},
{143, "ucs2", "ucs2_roman_ci", false, 1, PadSpace},
{144, "ucs2", "ucs2_persian_ci", false, 1, PadSpace},
{145, "ucs2", "ucs2_esperanto_ci", false, 1, PadSpace},
{146, "ucs2", "ucs2_hungarian_ci", false, 1, PadSpace},
{147, "ucs2", "ucs2_sinhala_ci", false, 1, PadSpace},
{148, "ucs2", "ucs2_german2_ci", false, 1, PadSpace},
{149, "ucs2", "ucs2_croatian_ci", false, 1, PadSpace},
{150, "ucs2", "ucs2_unicode_520_ci", false, 1, PadSpace},
{151, "ucs2", "ucs2_vietnamese_ci", false, 1, PadSpace},
{159, "ucs2", "ucs2_general_mysql500_ci", false, 1, PadSpace},
{160, "utf32", "utf32_unicode_ci", false, 1, PadSpace},
{161, "utf32", "utf32_icelandic_ci", false, 1, PadSpace},
{162, "utf32", "utf32_latvian_ci", false, 1, PadSpace},
{163, "utf32", "utf32_romanian_ci", false, 1, PadSpace},
{164, "utf32", "utf32_slovenian_ci", false, 1, PadSpace},
{165, "utf32", "utf32_polish_ci", false, 1, PadSpace},
{166, "utf32", "utf32_estonian_ci", false, 1, PadSpace},
{167, "utf32", "utf32_spanish_ci", false, 1, PadSpace},
{168, "utf32", "utf32_swedish_ci", false, 1, PadSpace},
{169, "utf32", "utf32_turkish_ci", false, 1, PadSpace},
{170, "utf32", "utf32_czech_ci", false, 1, PadSpace},
{171, "utf32", "utf32_danish_ci", false, 1, PadSpace},
{172, "utf32", "utf32_lithuanian_ci", false, 1, PadSpace},
{173, "utf32", "utf32_slovak_ci", false, 1, PadSpace},
{174, "utf32", "utf32_spanish2_ci", false, 1, PadSpace},
{175, "utf32", "utf32_roman_ci", false, 1, PadSpace},
{176, "utf32", "utf32_persian_ci", false, 1, PadSpace},
{177, "utf32", "utf32_esperanto_ci", false, 1, PadSpace},
{178, "utf32", "utf32_hungarian_ci", false, 1, PadSpace},
{179, "utf32", "utf32_sinhala_ci", false, 1, PadSpace},
{180, "utf32", "utf32_german2_ci", false, 1, PadSpace},
{181, "utf32", "utf32_croatian_ci", false, 1, PadSpace},
{182, "utf32", "utf32_unicode_520_ci", false, 1, PadSpace},
{183, "utf32", "utf32_vietnamese_ci", false, 1, PadSpace},
{192, "utf8", "utf8_unicode_ci", false, 8, PadSpace},
{193, "utf8", "utf8_icelandic_ci", false, 1, PadNone},
{194, "utf8", "utf8_latvian_ci", false, 1, PadNone},
{195, "utf8", "utf8_romanian_ci", false, 1, PadNone},
{196, "utf8", "utf8_slovenian_ci", false, 1, PadNone},
{197, "utf8", "utf8_polish_ci", false, 1, PadNone},
{198, "utf8", "utf8_estonian_ci", false, 1, PadNone},
{199, "utf8", "utf8_spanish_ci", false, 1, PadNone},
{200, "utf8", "utf8_swedish_ci", false, 1, PadNone},
{201, "utf8", "utf8_turkish_ci", false, 1, PadNone},
{202, "utf8", "utf8_czech_ci", false, 1, PadNone},
{203, "utf8", "utf8_danish_ci", false, 1, PadNone},
{204, "utf8", "utf8_lithuanian_ci", false, 1, PadNone},
{205, "utf8", "utf8_slovak_ci", false, 1, PadNone},
{206, "utf8", "utf8_spanish2_ci", false, 1, PadNone},
{207, "utf8", "utf8_roman_ci", false, 1, PadNone},
{208, "utf8", "utf8_persian_ci", false, 1, PadNone},
{209, "utf8", "utf8_esperanto_ci", false, 1, PadNone},
{210, "utf8", "utf8_hungarian_ci", false, 1, PadNone},
{211, "utf8", "utf8_sinhala_ci", false, 1, PadNone},
{212, "utf8", "utf8_german2_ci", false, 1, PadNone},
{213, "utf8", "utf8_croatian_ci", false, 1, PadNone},
{214, "utf8", "utf8_unicode_520_ci", false, 1, PadNone},
{215, "utf8", "utf8_vietnamese_ci", false, 1, PadNone},
{223, "utf8", "utf8_general_mysql500_ci", false, 1, PadNone},
{224, "utf8mb4", "utf8mb4_unicode_ci", false, 8, PadSpace},
{225, "utf8mb4", "utf8mb4_icelandic_ci", false, 1, PadSpace},
{226, "utf8mb4", "utf8mb4_latvian_ci", false, 1, PadSpace},
{227, "utf8mb4", "utf8mb4_romanian_ci", false, 1, PadSpace},
{228, "utf8mb4", "utf8mb4_slovenian_ci", false, 1, PadSpace},
{229, "utf8mb4", "utf8mb4_polish_ci", false, 1, PadSpace},
{230, "utf8mb4", "utf8mb4_estonian_ci", false, 1, PadSpace},
{231, "utf8mb4", "utf8mb4_spanish_ci", false, 1, PadSpace},
{232, "utf8mb4", "utf8mb4_swedish_ci", false, 1, PadSpace},
{233, "utf8mb4", "utf8mb4_turkish_ci", false, 1, PadSpace},
{234, "utf8mb4", "utf8mb4_czech_ci", false, 1, PadSpace},
{235, "utf8mb4", "utf8mb4_danish_ci", false, 1, PadSpace},
{236, "utf8mb4", "utf8mb4_lithuanian_ci", false, 1, PadSpace},
{237, "utf8mb4", "utf8mb4_slovak_ci", false, 1, PadSpace},
{238, "utf8mb4", "utf8mb4_spanish2_ci", false, 1, PadSpace},
{239, "utf8mb4", "utf8mb4_roman_ci", false, 1, PadSpace},
{240, "utf8mb4", "utf8mb4_persian_ci", false, 1, PadSpace},
{241, "utf8mb4", "utf8mb4_esperanto_ci", false, 1, PadSpace},
{242, "utf8mb4", "utf8mb4_hungarian_ci", false, 1, PadSpace},
{243, "utf8mb4", "utf8mb4_sinhala_ci", false, 1, PadSpace},
{244, "utf8mb4", "utf8mb4_german2_ci", false, 1, PadSpace},
{245, "utf8mb4", "utf8mb4_croatian_ci", false, 1, PadSpace},
{246, "utf8mb4", "utf8mb4_unicode_520_ci", false, 1, PadSpace},
{247, "utf8mb4", "utf8mb4_vietnamese_ci", false, 1, PadSpace},
{248, "gb18030", "gb18030_chinese_ci", false, 1, PadSpace},
{249, "gb18030", "gb18030_bin", true, 1, PadSpace},
{250, "gb18030", "gb18030_unicode_520_ci", false, 1, PadSpace},
{255, "utf8mb4", "utf8mb4_0900_ai_ci", false, 0, PadNone},
{256, "utf8mb4", "utf8mb4_de_pb_0900_ai_ci", false, 1, PadNone},
{257, "utf8mb4", "utf8mb4_is_0900_ai_ci", false, 1, PadNone},
{258, "utf8mb4", "utf8mb4_lv_0900_ai_ci", false, 1, PadNone},
{259, "utf8mb4", "utf8mb4_ro_0900_ai_ci", false, 1, PadNone},
{260, "utf8mb4", "utf8mb4_sl_0900_ai_ci", false, 1, PadNone},
{261, "utf8mb4", "utf8mb4_pl_0900_ai_ci", false, 1, PadNone},
{262, "utf8mb4", "utf8mb4_et_0900_ai_ci", false, 1, PadNone},
{263, "utf8mb4", "utf8mb4_es_0900_ai_ci", false, 1, PadNone},
{264, "utf8mb4", "utf8mb4_sv_0900_ai_ci", false, 1, PadNone},
{265, "utf8mb4", "utf8mb4_tr_0900_ai_ci", false, 1, PadNone},
{266, "utf8mb4", "utf8mb4_cs_0900_ai_ci", false, 1, PadNone},
{267, "utf8mb4", "utf8mb4_da_0900_ai_ci", false, 1, PadNone},
{268, "utf8mb4", "utf8mb4_lt_0900_ai_ci", false, 1, PadNone},
{269, "utf8mb4", "utf8mb4_sk_0900_ai_ci", false, 1, PadNone},
{270, "utf8mb4", "utf8mb4_es_trad_0900_ai_ci", false, 1, PadNone},
{271, "utf8mb4", "utf8mb4_la_0900_ai_ci", false, 1, PadNone},
{273, "utf8mb4", "utf8mb4_eo_0900_ai_ci", false, 1, PadNone},
{274, "utf8mb4", "utf8mb4_hu_0900_ai_ci", false, 1, PadNone},
{275, "utf8mb4", "utf8mb4_hr_0900_ai_ci", false, 1, PadNone},
{277, "utf8mb4", "utf8mb4_vi_0900_ai_ci", false, 1, PadNone},
{278, "utf8mb4", "utf8mb4_0900_as_cs", false, 1, PadNone},
{279, "utf8mb4", "utf8mb4_de_pb_0900_as_cs", false, 1, PadNone},
{280, "utf8mb4", "utf8mb4_is_0900_as_cs", false, 1, PadNone},
{281, "utf8mb4", "utf8mb4_lv_0900_as_cs", false, 1, PadNone},
{282, "utf8mb4", "utf8mb4_ro_0900_as_cs", false, 1, PadNone},
{283, "utf8mb4", "utf8mb4_sl_0900_as_cs", false, 1, PadNone},
{284, "utf8mb4", "utf8mb4_pl_0900_as_cs", false, 1, PadNone},
{285, "utf8mb4", "utf8mb4_et_0900_as_cs", false, 1, PadNone},
{286, "utf8mb4", "utf8mb4_es_0900_as_cs", false, 1, PadNone},
{287, "utf8mb4", "utf8mb4_sv_0900_as_cs", false, 1, PadNone},
{288, "utf8mb4", "utf8mb4_tr_0900_as_cs", false, 1, PadNone},
{289, "utf8mb4", "utf8mb4_cs_0900_as_cs", false, 1, PadNone},
{290, "utf8mb4", "utf8mb4_da_0900_as_cs", false, 1, PadNone},
{291, "utf8mb4", "utf8mb4_lt_0900_as_cs", false, 1, PadNone},
{292, "utf8mb4", "utf8mb4_sk_0900_as_cs", false, 1, PadNone},
{293, "utf8mb4", "utf8mb4_es_trad_0900_as_cs", false, 1, PadNone},
{294, "utf8mb4", "utf8mb4_la_0900_as_cs", false, 1, PadNone},
{296, "utf8mb4", "utf8mb4_eo_0900_as_cs", false, 1, PadNone},
{297, "utf8mb4", "utf8mb4_hu_0900_as_cs", false, 1, PadNone},
{298, "utf8mb4", "utf8mb4_hr_0900_as_cs", false, 1, PadNone},
{300, "utf8mb4", "utf8mb4_vi_0900_as_cs", false, 1, PadNone},
{303, "utf8mb4", "utf8mb4_ja_0900_as_cs", false, 1, PadNone},
{304, "utf8mb4", "utf8mb4_ja_0900_as_cs_ks", false, 1, PadNone},
{305, "utf8mb4", "utf8mb4_0900_as_ci", false, 1, PadNone},
{306, "utf8mb4", "utf8mb4_ru_0900_ai_ci", false, 1, PadNone},
{307, "utf8mb4", "utf8mb4_ru_0900_as_cs", false, 1, PadNone},
{308, "utf8mb4", "utf8mb4_zh_0900_as_cs", false, 1, PadNone},
{309, "utf8mb4", "utf8mb4_0900_bin", false, 1, PadNone},
{2048, "utf8mb4", "utf8mb4_zh_pinyin_tidb_as_cs", false, 1, PadNone},
}
// AddCharset adds a new charset.
// Use only when adding a custom charset to the parser.
func AddCharset(c *Charset) {
CharacterSetInfos[c.Name] = c
}
// RemoveCharset remove a charset.
// Use only when remove a custom charset to the parser.
func RemoveCharset(c string) {
delete(CharacterSetInfos, c)
for i := range supportedCollations {
if supportedCollations[i].Name == c {
supportedCollations = slices.Delete(supportedCollations, i, i+1)
}
}
}
// AddCollation adds a new collation.
// Use only when adding a custom collation to the parser.
func AddCollation(c *Collation) {
collationsIDMap[c.ID] = c
collationsNameMap[c.Name] = c
if _, ok := supportedCollationNames[c.Name]; ok {
AddSupportedCollation(c)
}
if charset, ok := CharacterSetInfos[c.CharsetName]; ok {
charset.Collations[c.Name] = c
}
if charset, ok := charsets[c.CharsetName]; ok {
charset.Collations[c.Name] = c
}
}
// AddSupportedCollation adds a new collation into supportedCollations.
// Use only when adding a custom collation to the parser.
func AddSupportedCollation(c *Collation) {
supportedCollations = append(supportedCollations, c)
}
// init method always puts to the end of file.
func init() {
for _, c := range collations {
AddCollation(c)
}
}
// Copyright 2021 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// See the License for the specific language governing permissions and
// limitations under the License.
package charset
import "bytes"
// Make sure all of them implement Encoding interface.
var (
_ Encoding = &encodingUTF8{}
_ Encoding = &encodingUTF8MB3Strict{}
_ Encoding = &encodingASCII{}
_ Encoding = &encodingLatin1{}
_ Encoding = &encodingBin{}
_ Encoding = &encodingGBK{}
_ Encoding = &encodingGB18030{}
)
// IsSupportedEncoding checks if the charset is fully supported.
func IsSupportedEncoding(charset string) bool {
_, ok := encodingMap[charset]
return ok
}
// FindEncodingTakeUTF8AsNoop finds the encoding according to the charset
// except that utf-8 is treated as no-operation encoding. This is used to
// reduce the overhead of utf-8 validation in some cases.
func FindEncodingTakeUTF8AsNoop(charset string) Encoding {
enc := FindEncoding(charset)
if enc.Tp() == EncodingTpUTF8 {
return EncodingBinImpl
}
return enc
}
// FindEncoding finds the encoding according to charset.
func FindEncoding(charset string) Encoding {
if len(charset) == 0 {
return EncodingBinImpl
}
if e, exist := encodingMap[charset]; exist {
return e
}
return EncodingBinImpl
}
var encodingMap = map[string]Encoding{
CharsetUTF8MB4: EncodingUTF8Impl,
CharsetUTF8: EncodingUTF8Impl,
CharsetGBK: EncodingGBKImpl,
CharsetLatin1: EncodingLatin1Impl,
CharsetBin: EncodingBinImpl,
CharsetASCII: EncodingASCIIImpl,
CharsetGB18030: EncodingGB18030Impl,
}
// Encoding provide encode/decode functions for a string with a specific charset.
type Encoding interface {
// Name is the name of the encoding.
Name() string
// Tp is the type of the encoding.
Tp() EncodingTp
// Peek returns the next char.
Peek(src []byte) []byte
// MbLen returns multiple byte length, if the next character is single byte, return 0.
MbLen(string) int
// IsValid checks whether the utf-8 bytes can be convert to valid string in current encoding.
IsValid(src []byte) bool
// Foreach iterates the characters in current encoding.
Foreach(src []byte, op Op, fn func(from, to []byte, ok bool) bool)
// Transform map the bytes in src to dest according to Op.
// **the caller should initialize the dest if it wants to avoid memory alloc every time,
// or else it will always make a new one**
//
// **the returned array may be the alias of `src`, edit the returned array on your own risk**
Transform(dest *bytes.Buffer, src []byte, op Op) ([]byte, error)
// ToUpper change a string to uppercase.
ToUpper(src string) string
// ToLower change a string to lowercase.
ToLower(src string) string
}
// EncodingTp is the type of the encoding.
type EncodingTp int8
//revive:disable
const (
EncodingTpNone EncodingTp = iota
EncodingTpUTF8
EncodingTpUTF8MB3Strict
EncodingTpASCII
EncodingTpLatin1
EncodingTpBin
EncodingTpGBK
EncodingTpGB18030
)
//revive:enable
// Op is used by Encoding.Transform.
type Op int16
const (
opFromUTF8 Op = 1 << iota
opToUTF8
opTruncateTrim
opTruncateReplace
opCollectFrom
opCollectTo
opSkipError
)
//revive:disable
const (
// OpReplaceNoErr is used to replace invalid bytes with '?'.
OpReplaceNoErr = opFromUTF8 | opTruncateReplace | opCollectFrom | opSkipError
OpReplace = opFromUTF8 | opTruncateReplace | opCollectFrom
OpEncode = opFromUTF8 | opTruncateTrim | opCollectTo
OpEncodeNoErr = OpEncode | opSkipError
OpEncodeReplace = opFromUTF8 | opTruncateReplace | opCollectTo
OpDecode = opToUTF8 | opTruncateTrim | opCollectTo
OpDecodeNoErr = OpDecode | opSkipError
OpDecodeReplace = opToUTF8 | opTruncateReplace | opCollectTo
)
//revive:enable
// CountValidBytes counts the first valid bytes in src that
// can be encoded to the current encoding.
func CountValidBytes(e Encoding, src []byte) int {
nSrc := 0
e.Foreach(src, opFromUTF8, func(from, _ []byte, ok bool) bool {
if ok {
nSrc += len(from)
}
return ok
})
return nSrc
}
// CountValidBytesDecode counts the first valid bytes in src that
// can be decoded to utf-8.
func CountValidBytesDecode(e Encoding, src []byte) int {
nSrc := 0
e.Foreach(src, opToUTF8, func(from, _ []byte, ok bool) bool {
if ok {
nSrc += len(from)
}
return ok
})
return nSrc
}
// Copyright 2021 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// See the License for the specific language governing permissions and
// limitations under the License.
package charset
import (
"bytes"
go_unicode "unicode"
"golang.org/x/text/encoding"
)
// EncodingASCIIImpl is the instance of encodingASCII
var EncodingASCIIImpl = &encodingASCII{encodingBase{enc: encoding.Nop}}
func init() {
EncodingASCIIImpl.self = EncodingASCIIImpl
}
// encodingASCII is the ASCII encoding.
type encodingASCII struct {
encodingBase
}
// Name implements Encoding interface.
func (*encodingASCII) Name() string {
return CharsetASCII
}
// Tp implements Encoding interface.
func (*encodingASCII) Tp() EncodingTp {
return EncodingTpASCII
}
// Peek implements Encoding interface.
func (*encodingASCII) Peek(src []byte) []byte {
if len(src) == 0 {
return src
}
return src[:1]
}
// IsValid implements Encoding interface.
func (*encodingASCII) IsValid(src []byte) bool {
srcLen := len(src)
for i := range srcLen {
if src[i] > go_unicode.MaxASCII {
return false
}
}
return true
}
// Transform implements Encoding interface.
func (e *encodingASCII) Transform(dest *bytes.Buffer, src []byte, op Op) ([]byte, error) {
if e.IsValid(src) {
return src, nil
}
return e.encodingBase.Transform(dest, src, op)
}
// Foreach implements Encoding interface.
func (*encodingASCII) Foreach(src []byte, _ Op, fn func(from, to []byte, ok bool) bool) {
for i, w := 0, 0; i < len(src); i += w {
w = 1
ok := true
if src[i] > go_unicode.MaxASCII {
w = len(EncodingUTF8Impl.Peek(src[i:]))
ok = false
}
if !fn(src[i:i+w], src[i:i+w], ok) {
return
}
}
}
// Copyright 2021 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// See the License for the specific language governing permissions and
// limitations under the License.
package charset
import (
"bytes"
"fmt"
"strings"
"unsafe"
"github.com/pingcap/tidb/pkg/parser/mysql"
"github.com/pingcap/tidb/pkg/parser/terror"
"golang.org/x/text/encoding"
"golang.org/x/text/transform"
)
// ErrInvalidCharacterString returns when the string is invalid in the specific charset.
var ErrInvalidCharacterString = terror.ClassParser.NewStd(mysql.ErrInvalidCharacterString)
// encodingBase defines some generic functions.
type encodingBase struct {
enc encoding.Encoding
self Encoding
}
func (encodingBase) MbLen(_ string) int {
return 0
}
func (encodingBase) ToUpper(src string) string {
return strings.ToUpper(src)
}
func (encodingBase) ToLower(src string) string {
return strings.ToLower(src)
}
func (b encodingBase) IsValid(src []byte) bool {
isValid := true
b.self.Foreach(src, opFromUTF8, func(_, _ []byte, ok bool) bool {
isValid = ok
return ok
})
return isValid
}
func (b encodingBase) Transform(dest *bytes.Buffer, src []byte, op Op) (result []byte, err error) {
if dest == nil {
dest = &bytes.Buffer{}
dest.Grow(len(src))
}
dest.Reset()
b.self.Foreach(src, op, func(from, to []byte, ok bool) bool {
if !ok {
if err == nil && (op&opSkipError == 0) {
err = generateEncodingErr(b.self.Name(), from)
}
if op&opTruncateTrim != 0 {
return false
}
if op&opTruncateReplace != 0 {
dest.WriteByte('?')
return true
}
}
if op&opCollectFrom != 0 {
dest.Write(from)
} else if op&opCollectTo != 0 {
dest.Write(to)
}
return true
})
return dest.Bytes(), err
}
func (b encodingBase) Foreach(src []byte, op Op, fn func(from, to []byte, ok bool) bool) {
var tfm transform.Transformer
var peek func([]byte) []byte
if op&opFromUTF8 != 0 {
tfm = b.enc.NewEncoder()
peek = EncodingUTF8Impl.Peek
} else {
tfm = b.enc.NewDecoder()
peek = b.self.Peek
}
var buf [4]byte
for i, w := 0, 0; i < len(src); i += w {
w = len(peek(src[i:]))
nDst, _, err := tfm.Transform(buf[:], src[i:i+w], false)
meetErr := err != nil || (op&opToUTF8 != 0 && beginWithReplacementChar(buf[:nDst]))
if !fn(src[i:i+w], buf[:nDst], !meetErr) {
return
}
}
}
// replacementBytes are bytes for the replacement rune 0xfffd.
var replacementBytes = []byte{0xEF, 0xBF, 0xBD}
// beginWithReplacementChar check if dst has the prefix '0xEFBFBD'.
func beginWithReplacementChar(dst []byte) bool {
return bytes.HasPrefix(dst, replacementBytes)
}
// generateEncodingErr generates an invalid string in charset error.
func generateEncodingErr(name string, invalidBytes []byte) error {
arg := fmt.Sprintf("%X", invalidBytes)
return ErrInvalidCharacterString.FastGenByArgs(name, arg)
}
// HackSlice converts string to slice without copy.
// Use at your own risk.
func HackSlice(s string) (b []byte) {
if len(s) == 0 {
return []byte{}
}
return unsafe.Slice(unsafe.StringData(s), len(s))
}
// HackString converts slice to string without copy.
// Use it at your own risk.
func HackString(b []byte) (s string) {
if len(b) == 0 {
return ""
}
return unsafe.String(unsafe.SliceData(b), len(b))
}
// Copyright 2021 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// See the License for the specific language governing permissions and
// limitations under the License.
package charset
import (
"bytes"
"golang.org/x/text/encoding"
)
// EncodingBinImpl is the instance of encodingBin.
var EncodingBinImpl = &encodingBin{encodingBase{enc: encoding.Nop}}
func init() {
EncodingBinImpl.self = EncodingBinImpl
}
// encodingBin is the binary encoding.
type encodingBin struct {
encodingBase
}
// Name implements Encoding interface.
func (*encodingBin) Name() string {
return CharsetBin
}
// Tp implements Encoding interface.
func (*encodingBin) Tp() EncodingTp {
return EncodingTpBin
}
// Peek implements Encoding interface.
func (*encodingBin) Peek(src []byte) []byte {
if len(src) == 0 {
return src
}
return src[:1]
}
// IsValid implements Encoding interface.
func (*encodingBin) IsValid(_ []byte) bool {
return true
}
// Foreach implements Encoding interface.
func (*encodingBin) Foreach(src []byte, _ Op, fn func(from, to []byte, ok bool) bool) {
for i := range src {
if !fn(src[i:i+1], src[i:i+1], true) {
return
}
}
}
func (*encodingBin) Transform(_ *bytes.Buffer, src []byte, _ Op) ([]byte, error) {
return src, nil
}
// Copyright 2023-2024 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// See the License for the specific language governing permissions and
// limitations under the License.
package charset
import (
"encoding/binary"
"strings"
"unicode/utf8"
"golang.org/x/text/encoding"
"golang.org/x/text/encoding/simplifiedchinese"
"golang.org/x/text/transform"
)
// Current implementation meets the requirement of GB18030-2022
// EncodingGB18030Impl is the instance of encodingGB18030
var EncodingGB18030Impl = &encodingGB18030{encodingGBK{encodingBase{enc: customGB18030{}}}}
func init() {
EncodingGB18030Impl.self = EncodingGB18030Impl
}
// encodingGB18030 is GB18030 encoding.
type encodingGB18030 struct {
encodingGBK
}
// Name implements Encoding interface.
func (*encodingGB18030) Name() string {
return CharsetGB18030
}
// Tp implements Encoding interface.
func (*encodingGB18030) Tp() EncodingTp {
return EncodingTpGB18030
}
// Peek implements Encoding interface.
func (*encodingGB18030) Peek(src []byte) []byte {
return peek(src)
}
func peek(src []byte) []byte {
length := len(src)
if length == 0 {
return src
}
// skip the first byte when encountering invalid byte(s)
err := src[:1]
switch {
case src[0] == 0x80 || src[0] == 0xFF:
return err
case src[0] <= 0x7F:
return src[:1]
case 0x81 <= src[0] && src[0] <= 0xFE:
if length < 2 {
return err
}
if 0x40 <= src[1] && src[1] < 0x7F || 0x7F < src[1] && src[1] <= 0xFE {
return src[:2]
}
if length < 4 {
return err
}
if 0x30 <= src[1] && src[1] <= 0x39 && 0x81 <= src[2] && src[2] <= 0xfe && 0x30 <= src[3] && src[3] <= 0x39 {
return src[:4]
}
return err
}
return err
}
func (*encodingGB18030) MbLen(bs string) int {
if len(bs) < 2 {
return 0
}
if 0x81 <= bs[0] && bs[0] <= 0xfe {
if (0x40 <= bs[1] && bs[1] <= 0x7e) || (0x80 <= bs[1] && bs[1] <= 0xfe) {
return 2
}
if 0x30 <= bs[1] && bs[1] <= 0x39 && 0x81 <= bs[2] && bs[2] <= 0xfe && 0x30 <= bs[3] && bs[3] <= 0x39 {
return 4
}
}
return 0
}
// ToUpper implements Encoding interface.
func (*encodingGB18030) ToUpper(d string) string {
return strings.ToUpperSpecial(GB18030Case, d)
}
// ToLower implements Encoding interface.
func (*encodingGB18030) ToLower(d string) string {
return strings.ToLowerSpecial(GB18030Case, d)
}
// customGB18030 is a simplifiedchinese.GB18030 wrapper.
type customGB18030 struct{}
// NewCustomGB18030Encoder return a custom GB18030 encoder.
func NewCustomGB18030Encoder() *encoding.Encoder {
return customGB18030{}.NewEncoder()
}
// NewCustomGB18030Decoder return a custom GB18030 decoder.
func NewCustomGB18030Decoder() *encoding.Decoder {
return customGB18030{}.NewDecoder()
}
// NewDecoder returns simplifiedchinese.GB18030.NewDecoder().
func (customGB18030) NewDecoder() *encoding.Decoder {
return &encoding.Decoder{
Transformer: customGB18030Decoder{
gb18030Decoder: simplifiedchinese.GB18030.NewDecoder(),
},
}
}
// NewEncoder returns simplifiedchinese.gb18030.
func (customGB18030) NewEncoder() *encoding.Encoder {
return &encoding.Encoder{
Transformer: customGB18030Encoder{
gb18030Encoder: simplifiedchinese.GB18030.NewEncoder(),
},
}
}
type customGB18030Decoder struct {
gb18030Decoder *encoding.Decoder
}
// Transform special treatment for 0x80,
func (c customGB18030Decoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
if len(src) == 0 {
return 0, 0, nil
}
for next := 0; nSrc < len(src); nSrc += next {
if nDst >= len(dst) {
return nDst, nSrc, transform.ErrShortDst
}
next = len(peek(src[nSrc:]))
if nSrc+next > len(src) {
return nDst, nSrc, transform.ErrShortSrc
}
if src[nSrc] == 0x80 {
nDst += utf8.EncodeRune(dst[nDst:], utf8.RuneError)
} else if r, ok := gb18030ToUnicode[convertBytesToUint32(src[nSrc:nSrc+next])]; ok {
nDst += utf8.EncodeRune(dst[nDst:], r)
} else {
d, _, e := c.gb18030Decoder.Transform(dst[nDst:], src[nSrc:nSrc+next], atEOF)
if e != nil {
return nDst, nSrc, e
}
nDst += d
}
}
return
}
// Reset is same as simplifiedchinese.GB18030.Reset().
func (c customGB18030Decoder) Reset() {
c.gb18030Decoder.Reset()
}
type customGB18030Encoder struct {
gb18030Encoder *encoding.Encoder
}
// Transform special treatment for `€`,
func (c customGB18030Encoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
if len(src) == 0 {
return 0, 0, nil
}
for nSrc < len(src) {
if nDst >= len(dst) {
return nDst, nSrc, transform.ErrShortDst
}
r, size := utf8.DecodeRune(src[nSrc:])
if v, ok := unicodeToGB18030[r]; ok {
bytes := convertUint32ToBytes(v)
if nDst+len(bytes) > len(dst) {
return nDst, nSrc, transform.ErrShortDst
}
copy(dst[nDst:], bytes)
nDst += len(bytes)
nSrc += size
} else {
d, s, e := c.gb18030Encoder.Transform(dst[nDst:], src[nSrc:nSrc+size], atEOF)
if e != nil {
return nDst, nSrc, e
}
nDst += d
nSrc += s
}
}
return
}
// Reset is same as simplifiedchinese.gb18030.
func (c customGB18030Encoder) Reset() {
c.gb18030Encoder.Reset()
}
func convertBytesToUint32(b []byte) uint32 {
switch len(b) {
case 4:
return (uint32(b[0]) << 24) | (uint32(b[1]) << 16) | (uint32(b[2]) << 8) | uint32(b[3])
case 3:
return (uint32(b[0]) << 16) | (uint32(b[1]) << 8) | uint32(b[2])
case 2:
return (uint32(b[0]) << 8) | uint32(b[1])
case 1:
return uint32(b[0])
}
return 0
}
func convertUint32ToBytes(v uint32) []byte {
var b []byte
switch {
case v&0xff000000 > 0:
b = make([]byte, 4)
binary.BigEndian.PutUint32(b, v)
case v&0xff0000 > 0:
b = make([]byte, 3)
b[0] = byte(v >> 16)
b[1] = byte(v >> 8)
b[2] = byte(v)
case v&0xff00 > 0:
b = make([]byte, 2)
binary.BigEndian.PutUint16(b, uint16(v))
default:
b = make([]byte, 1)
b[0] = byte(v)
}
return b
}
// Copyright 2023-2024 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// See the License for the specific language governing permissions and
// limitations under the License.
package charset
import "unicode"
func init() {
gb18030EncodingList := []struct {
unicode rune
gb18030 uint32
}{
{'\u1e3f', 0xA8BC}, {'\u20ac', 0xA2E3}, {'\u9fb4', 0xFE59},
{'\u9fb5', 0xFE61}, {'\u9fb6', 0xFE66}, {'\u9fb7', 0xFE67},
{'\u9fb8', 0xFE6D}, {'\u9fb9', 0xFE7E}, {'\u9fba', 0xFE90},
{'\u9fbb', 0xFEA0}, {'\ue000', 0xAAA1}, {'\ue001', 0xAAA2},
{'\ue002', 0xAAA3}, {'\ue003', 0xAAA4}, {'\ue004', 0xAAA5},
{'\ue005', 0xAAA6}, {'\ue006', 0xAAA7}, {'\ue007', 0xAAA8},
{'\ue008', 0xAAA9}, {'\ue009', 0xAAAA}, {'\ue00a', 0xAAAB},
{'\ue00b', 0xAAAC}, {'\ue00c', 0xAAAD}, {'\ue00d', 0xAAAE},
{'\ue00e', 0xAAAF}, {'\ue00f', 0xAAB0}, {'\ue010', 0xAAB1},
{'\ue011', 0xAAB2}, {'\ue012', 0xAAB3}, {'\ue013', 0xAAB4},
{'\ue014', 0xAAB5}, {'\ue015', 0xAAB6}, {'\ue016', 0xAAB7},
{'\ue017', 0xAAB8}, {'\ue018', 0xAAB9}, {'\ue019', 0xAABA},
{'\ue01a', 0xAABB}, {'\ue01b', 0xAABC}, {'\ue01c', 0xAABD},
{'\ue01d', 0xAABE}, {'\ue01e', 0xAABF}, {'\ue01f', 0xAAC0},
{'\ue020', 0xAAC1}, {'\ue021', 0xAAC2}, {'\ue022', 0xAAC3},
{'\ue023', 0xAAC4}, {'\ue024', 0xAAC5}, {'\ue025', 0xAAC6},
{'\ue026', 0xAAC7}, {'\ue027', 0xAAC8}, {'\ue028', 0xAAC9},
{'\ue029', 0xAACA}, {'\ue02a', 0xAACB}, {'\ue02b', 0xAACC},
{'\ue02c', 0xAACD}, {'\ue02d', 0xAACE}, {'\ue02e', 0xAACF},
{'\ue02f', 0xAAD0}, {'\ue030', 0xAAD1}, {'\ue031', 0xAAD2},
{'\ue032', 0xAAD3}, {'\ue033', 0xAAD4}, {'\ue034', 0xAAD5},
{'\ue035', 0xAAD6}, {'\ue036', 0xAAD7}, {'\ue037', 0xAAD8},
{'\ue038', 0xAAD9}, {'\ue039', 0xAADA}, {'\ue03a', 0xAADB},
{'\ue03b', 0xAADC}, {'\ue03c', 0xAADD}, {'\ue03d', 0xAADE},
{'\ue03e', 0xAADF}, {'\ue03f', 0xAAE0}, {'\ue040', 0xAAE1},
{'\ue041', 0xAAE2}, {'\ue042', 0xAAE3}, {'\ue043', 0xAAE4},
{'\ue044', 0xAAE5}, {'\ue045', 0xAAE6}, {'\ue046', 0xAAE7},
{'\ue047', 0xAAE8}, {'\ue048', 0xAAE9}, {'\ue049', 0xAAEA},
{'\ue04a', 0xAAEB}, {'\ue04b', 0xAAEC}, {'\ue04c', 0xAAED},
{'\ue04d', 0xAAEE}, {'\ue04e', 0xAAEF}, {'\ue04f', 0xAAF0},
{'\ue050', 0xAAF1}, {'\ue051', 0xAAF2}, {'\ue052', 0xAAF3},
{'\ue053', 0xAAF4}, {'\ue054', 0xAAF5}, {'\ue055', 0xAAF6},
{'\ue056', 0xAAF7}, {'\ue057', 0xAAF8}, {'\ue058', 0xAAF9},
{'\ue059', 0xAAFA}, {'\ue05a', 0xAAFB}, {'\ue05b', 0xAAFC},
{'\ue05c', 0xAAFD}, {'\ue05d', 0xAAFE}, {'\ue05e', 0xABA1},
{'\ue05f', 0xABA2}, {'\ue060', 0xABA3}, {'\ue061', 0xABA4},
{'\ue062', 0xABA5}, {'\ue063', 0xABA6}, {'\ue064', 0xABA7},
{'\ue065', 0xABA8}, {'\ue066', 0xABA9}, {'\ue067', 0xABAA},
{'\ue068', 0xABAB}, {'\ue069', 0xABAC}, {'\ue06a', 0xABAD},
{'\ue06b', 0xABAE}, {'\ue06c', 0xABAF}, {'\ue06d', 0xABB0},
{'\ue06e', 0xABB1}, {'\ue06f', 0xABB2}, {'\ue070', 0xABB3},
{'\ue071', 0xABB4}, {'\ue072', 0xABB5}, {'\ue073', 0xABB6},
{'\ue074', 0xABB7}, {'\ue075', 0xABB8}, {'\ue076', 0xABB9},
{'\ue077', 0xABBA}, {'\ue078', 0xABBB}, {'\ue079', 0xABBC},
{'\ue07a', 0xABBD}, {'\ue07b', 0xABBE}, {'\ue07c', 0xABBF},
{'\ue07d', 0xABC0}, {'\ue07e', 0xABC1}, {'\ue07f', 0xABC2},
{'\ue080', 0xABC3}, {'\ue081', 0xABC4}, {'\ue082', 0xABC5},
{'\ue083', 0xABC6}, {'\ue084', 0xABC7}, {'\ue085', 0xABC8},
{'\ue086', 0xABC9}, {'\ue087', 0xABCA}, {'\ue088', 0xABCB},
{'\ue089', 0xABCC}, {'\ue08a', 0xABCD}, {'\ue08b', 0xABCE},
{'\ue08c', 0xABCF}, {'\ue08d', 0xABD0}, {'\ue08e', 0xABD1},
{'\ue08f', 0xABD2}, {'\ue090', 0xABD3}, {'\ue091', 0xABD4},
{'\ue092', 0xABD5}, {'\ue093', 0xABD6}, {'\ue094', 0xABD7},
{'\ue095', 0xABD8}, {'\ue096', 0xABD9}, {'\ue097', 0xABDA},
{'\ue098', 0xABDB}, {'\ue099', 0xABDC}, {'\ue09a', 0xABDD},
{'\ue09b', 0xABDE}, {'\ue09c', 0xABDF}, {'\ue09d', 0xABE0},
{'\ue09e', 0xABE1}, {'\ue09f', 0xABE2}, {'\ue0a0', 0xABE3},
{'\ue0a1', 0xABE4}, {'\ue0a2', 0xABE5}, {'\ue0a3', 0xABE6},
{'\ue0a4', 0xABE7}, {'\ue0a5', 0xABE8}, {'\ue0a6', 0xABE9},
{'\ue0a7', 0xABEA}, {'\ue0a8', 0xABEB}, {'\ue0a9', 0xABEC},
{'\ue0aa', 0xABED}, {'\ue0ab', 0xABEE}, {'\ue0ac', 0xABEF},
{'\ue0ad', 0xABF0}, {'\ue0ae', 0xABF1}, {'\ue0af', 0xABF2},
{'\ue0b0', 0xABF3}, {'\ue0b1', 0xABF4}, {'\ue0b2', 0xABF5},
{'\ue0b3', 0xABF6}, {'\ue0b4', 0xABF7}, {'\ue0b5', 0xABF8},
{'\ue0b6', 0xABF9}, {'\ue0b7', 0xABFA}, {'\ue0b8', 0xABFB},
{'\ue0b9', 0xABFC}, {'\ue0ba', 0xABFD}, {'\ue0bb', 0xABFE},
{'\ue0bc', 0xACA1}, {'\ue0bd', 0xACA2}, {'\ue0be', 0xACA3},
{'\ue0bf', 0xACA4}, {'\ue0c0', 0xACA5}, {'\ue0c1', 0xACA6},
{'\ue0c2', 0xACA7}, {'\ue0c3', 0xACA8}, {'\ue0c4', 0xACA9},
{'\ue0c5', 0xACAA}, {'\ue0c6', 0xACAB}, {'\ue0c7', 0xACAC},
{'\ue0c8', 0xACAD}, {'\ue0c9', 0xACAE}, {'\ue0ca', 0xACAF},
{'\ue0cb', 0xACB0}, {'\ue0cc', 0xACB1}, {'\ue0cd', 0xACB2},
{'\ue0ce', 0xACB3}, {'\ue0cf', 0xACB4}, {'\ue0d0', 0xACB5},
{'\ue0d1', 0xACB6}, {'\ue0d2', 0xACB7}, {'\ue0d3', 0xACB8},
{'\ue0d4', 0xACB9}, {'\ue0d5', 0xACBA}, {'\ue0d6', 0xACBB},
{'\ue0d7', 0xACBC}, {'\ue0d8', 0xACBD}, {'\ue0d9', 0xACBE},
{'\ue0da', 0xACBF}, {'\ue0db', 0xACC0}, {'\ue0dc', 0xACC1},
{'\ue0dd', 0xACC2}, {'\ue0de', 0xACC3}, {'\ue0df', 0xACC4},
{'\ue0e0', 0xACC5}, {'\ue0e1', 0xACC6}, {'\ue0e2', 0xACC7},
{'\ue0e3', 0xACC8}, {'\ue0e4', 0xACC9}, {'\ue0e5', 0xACCA},
{'\ue0e6', 0xACCB}, {'\ue0e7', 0xACCC}, {'\ue0e8', 0xACCD},
{'\ue0e9', 0xACCE}, {'\ue0ea', 0xACCF}, {'\ue0eb', 0xACD0},
{'\ue0ec', 0xACD1}, {'\ue0ed', 0xACD2}, {'\ue0ee', 0xACD3},
{'\ue0ef', 0xACD4}, {'\ue0f0', 0xACD5}, {'\ue0f1', 0xACD6},
{'\ue0f2', 0xACD7}, {'\ue0f3', 0xACD8}, {'\ue0f4', 0xACD9},
{'\ue0f5', 0xACDA}, {'\ue0f6', 0xACDB}, {'\ue0f7', 0xACDC},
{'\ue0f8', 0xACDD}, {'\ue0f9', 0xACDE}, {'\ue0fa', 0xACDF},
{'\ue0fb', 0xACE0}, {'\ue0fc', 0xACE1}, {'\ue0fd', 0xACE2},
{'\ue0fe', 0xACE3}, {'\ue0ff', 0xACE4}, {'\ue100', 0xACE5},
{'\ue101', 0xACE6}, {'\ue102', 0xACE7}, {'\ue103', 0xACE8},
{'\ue104', 0xACE9}, {'\ue105', 0xACEA}, {'\ue106', 0xACEB},
{'\ue107', 0xACEC}, {'\ue108', 0xACED}, {'\ue109', 0xACEE},
{'\ue10a', 0xACEF}, {'\ue10b', 0xACF0}, {'\ue10c', 0xACF1},
{'\ue10d', 0xACF2}, {'\ue10e', 0xACF3}, {'\ue10f', 0xACF4},
{'\ue110', 0xACF5}, {'\ue111', 0xACF6}, {'\ue112', 0xACF7},
{'\ue113', 0xACF8}, {'\ue114', 0xACF9}, {'\ue115', 0xACFA},
{'\ue116', 0xACFB}, {'\ue117', 0xACFC}, {'\ue118', 0xACFD},
{'\ue119', 0xACFE}, {'\ue11a', 0xADA1}, {'\ue11b', 0xADA2},
{'\ue11c', 0xADA3}, {'\ue11d', 0xADA4}, {'\ue11e', 0xADA5},
{'\ue11f', 0xADA6}, {'\ue120', 0xADA7}, {'\ue121', 0xADA8},
{'\ue122', 0xADA9}, {'\ue123', 0xADAA}, {'\ue124', 0xADAB},
{'\ue125', 0xADAC}, {'\ue126', 0xADAD}, {'\ue127', 0xADAE},
{'\ue128', 0xADAF}, {'\ue129', 0xADB0}, {'\ue12a', 0xADB1},
{'\ue12b', 0xADB2}, {'\ue12c', 0xADB3}, {'\ue12d', 0xADB4},
{'\ue12e', 0xADB5}, {'\ue12f', 0xADB6}, {'\ue130', 0xADB7},
{'\ue131', 0xADB8}, {'\ue132', 0xADB9}, {'\ue133', 0xADBA},
{'\ue134', 0xADBB}, {'\ue135', 0xADBC}, {'\ue136', 0xADBD},
{'\ue137', 0xADBE}, {'\ue138', 0xADBF}, {'\ue139', 0xADC0},
{'\ue13a', 0xADC1}, {'\ue13b', 0xADC2}, {'\ue13c', 0xADC3},
{'\ue13d', 0xADC4}, {'\ue13e', 0xADC5}, {'\ue13f', 0xADC6},
{'\ue140', 0xADC7}, {'\ue141', 0xADC8}, {'\ue142', 0xADC9},
{'\ue143', 0xADCA}, {'\ue144', 0xADCB}, {'\ue145', 0xADCC},
{'\ue146', 0xADCD}, {'\ue147', 0xADCE}, {'\ue148', 0xADCF},
{'\ue149', 0xADD0}, {'\ue14a', 0xADD1}, {'\ue14b', 0xADD2},
{'\ue14c', 0xADD3}, {'\ue14d', 0xADD4}, {'\ue14e', 0xADD5},
{'\ue14f', 0xADD6}, {'\ue150', 0xADD7}, {'\ue151', 0xADD8},
{'\ue152', 0xADD9}, {'\ue153', 0xADDA}, {'\ue154', 0xADDB},
{'\ue155', 0xADDC}, {'\ue156', 0xADDD}, {'\ue157', 0xADDE},
{'\ue158', 0xADDF}, {'\ue159', 0xADE0}, {'\ue15a', 0xADE1},
{'\ue15b', 0xADE2}, {'\ue15c', 0xADE3}, {'\ue15d', 0xADE4},
{'\ue15e', 0xADE5}, {'\ue15f', 0xADE6}, {'\ue160', 0xADE7},
{'\ue161', 0xADE8}, {'\ue162', 0xADE9}, {'\ue163', 0xADEA},
{'\ue164', 0xADEB}, {'\ue165', 0xADEC}, {'\ue166', 0xADED},
{'\ue167', 0xADEE}, {'\ue168', 0xADEF}, {'\ue169', 0xADF0},
{'\ue16a', 0xADF1}, {'\ue16b', 0xADF2}, {'\ue16c', 0xADF3},
{'\ue16d', 0xADF4}, {'\ue16e', 0xADF5}, {'\ue16f', 0xADF6},
{'\ue170', 0xADF7}, {'\ue171', 0xADF8}, {'\ue172', 0xADF9},
{'\ue173', 0xADFA}, {'\ue174', 0xADFB}, {'\ue175', 0xADFC},
{'\ue176', 0xADFD}, {'\ue177', 0xADFE}, {'\ue178', 0xAEA1},
{'\ue179', 0xAEA2}, {'\ue17a', 0xAEA3}, {'\ue17b', 0xAEA4},
{'\ue17c', 0xAEA5}, {'\ue17d', 0xAEA6}, {'\ue17e', 0xAEA7},
{'\ue17f', 0xAEA8}, {'\ue180', 0xAEA9}, {'\ue181', 0xAEAA},
{'\ue182', 0xAEAB}, {'\ue183', 0xAEAC}, {'\ue184', 0xAEAD},
{'\ue185', 0xAEAE}, {'\ue186', 0xAEAF}, {'\ue187', 0xAEB0},
{'\ue188', 0xAEB1}, {'\ue189', 0xAEB2}, {'\ue18a', 0xAEB3},
{'\ue18b', 0xAEB4}, {'\ue18c', 0xAEB5}, {'\ue18d', 0xAEB6},
{'\ue18e', 0xAEB7}, {'\ue18f', 0xAEB8}, {'\ue190', 0xAEB9},
{'\ue191', 0xAEBA}, {'\ue192', 0xAEBB}, {'\ue193', 0xAEBC},
{'\ue194', 0xAEBD}, {'\ue195', 0xAEBE}, {'\ue196', 0xAEBF},
{'\ue197', 0xAEC0}, {'\ue198', 0xAEC1}, {'\ue199', 0xAEC2},
{'\ue19a', 0xAEC3}, {'\ue19b', 0xAEC4}, {'\ue19c', 0xAEC5},
{'\ue19d', 0xAEC6}, {'\ue19e', 0xAEC7}, {'\ue19f', 0xAEC8},
{'\ue1a0', 0xAEC9}, {'\ue1a1', 0xAECA}, {'\ue1a2', 0xAECB},
{'\ue1a3', 0xAECC}, {'\ue1a4', 0xAECD}, {'\ue1a5', 0xAECE},
{'\ue1a6', 0xAECF}, {'\ue1a7', 0xAED0}, {'\ue1a8', 0xAED1},
{'\ue1a9', 0xAED2}, {'\ue1aa', 0xAED3}, {'\ue1ab', 0xAED4},
{'\ue1ac', 0xAED5}, {'\ue1ad', 0xAED6}, {'\ue1ae', 0xAED7},
{'\ue1af', 0xAED8}, {'\ue1b0', 0xAED9}, {'\ue1b1', 0xAEDA},
{'\ue1b2', 0xAEDB}, {'\ue1b3', 0xAEDC}, {'\ue1b4', 0xAEDD},
{'\ue1b5', 0xAEDE}, {'\ue1b6', 0xAEDF}, {'\ue1b7', 0xAEE0},
{'\ue1b8', 0xAEE1}, {'\ue1b9', 0xAEE2}, {'\ue1ba', 0xAEE3},
{'\ue1bb', 0xAEE4}, {'\ue1bc', 0xAEE5}, {'\ue1bd', 0xAEE6},
{'\ue1be', 0xAEE7}, {'\ue1bf', 0xAEE8}, {'\ue1c0', 0xAEE9},
{'\ue1c1', 0xAEEA}, {'\ue1c2', 0xAEEB}, {'\ue1c3', 0xAEEC},
{'\ue1c4', 0xAEED}, {'\ue1c5', 0xAEEE}, {'\ue1c6', 0xAEEF},
{'\ue1c7', 0xAEF0}, {'\ue1c8', 0xAEF1}, {'\ue1c9', 0xAEF2},
{'\ue1ca', 0xAEF3}, {'\ue1cb', 0xAEF4}, {'\ue1cc', 0xAEF5},
{'\ue1cd', 0xAEF6}, {'\ue1ce', 0xAEF7}, {'\ue1cf', 0xAEF8},
{'\ue1d0', 0xAEF9}, {'\ue1d1', 0xAEFA}, {'\ue1d2', 0xAEFB},
{'\ue1d3', 0xAEFC}, {'\ue1d4', 0xAEFD}, {'\ue1d5', 0xAEFE},
{'\ue1d6', 0xAFA1}, {'\ue1d7', 0xAFA2}, {'\ue1d8', 0xAFA3},
{'\ue1d9', 0xAFA4}, {'\ue1da', 0xAFA5}, {'\ue1db', 0xAFA6},
{'\ue1dc', 0xAFA7}, {'\ue1dd', 0xAFA8}, {'\ue1de', 0xAFA9},
{'\ue1df', 0xAFAA}, {'\ue1e0', 0xAFAB}, {'\ue1e1', 0xAFAC},
{'\ue1e2', 0xAFAD}, {'\ue1e3', 0xAFAE}, {'\ue1e4', 0xAFAF},
{'\ue1e5', 0xAFB0}, {'\ue1e6', 0xAFB1}, {'\ue1e7', 0xAFB2},
{'\ue1e8', 0xAFB3}, {'\ue1e9', 0xAFB4}, {'\ue1ea', 0xAFB5},
{'\ue1eb', 0xAFB6}, {'\ue1ec', 0xAFB7}, {'\ue1ed', 0xAFB8},
{'\ue1ee', 0xAFB9}, {'\ue1ef', 0xAFBA}, {'\ue1f0', 0xAFBB},
{'\ue1f1', 0xAFBC}, {'\ue1f2', 0xAFBD}, {'\ue1f3', 0xAFBE},
{'\ue1f4', 0xAFBF}, {'\ue1f5', 0xAFC0}, {'\ue1f6', 0xAFC1},
{'\ue1f7', 0xAFC2}, {'\ue1f8', 0xAFC3}, {'\ue1f9', 0xAFC4},
{'\ue1fa', 0xAFC5}, {'\ue1fb', 0xAFC6}, {'\ue1fc', 0xAFC7},
{'\ue1fd', 0xAFC8}, {'\ue1fe', 0xAFC9}, {'\ue1ff', 0xAFCA},
{'\ue200', 0xAFCB}, {'\ue201', 0xAFCC}, {'\ue202', 0xAFCD},
{'\ue203', 0xAFCE}, {'\ue204', 0xAFCF}, {'\ue205', 0xAFD0},
{'\ue206', 0xAFD1}, {'\ue207', 0xAFD2}, {'\ue208', 0xAFD3},
{'\ue209', 0xAFD4}, {'\ue20a', 0xAFD5}, {'\ue20b', 0xAFD6},
{'\ue20c', 0xAFD7}, {'\ue20d', 0xAFD8}, {'\ue20e', 0xAFD9},
{'\ue20f', 0xAFDA}, {'\ue210', 0xAFDB}, {'\ue211', 0xAFDC},
{'\ue212', 0xAFDD}, {'\ue213', 0xAFDE}, {'\ue214', 0xAFDF},
{'\ue215', 0xAFE0}, {'\ue216', 0xAFE1}, {'\ue217', 0xAFE2},
{'\ue218', 0xAFE3}, {'\ue219', 0xAFE4}, {'\ue21a', 0xAFE5},
{'\ue21b', 0xAFE6}, {'\ue21c', 0xAFE7}, {'\ue21d', 0xAFE8},
{'\ue21e', 0xAFE9}, {'\ue21f', 0xAFEA}, {'\ue220', 0xAFEB},
{'\ue221', 0xAFEC}, {'\ue222', 0xAFED}, {'\ue223', 0xAFEE},
{'\ue224', 0xAFEF}, {'\ue225', 0xAFF0}, {'\ue226', 0xAFF1},
{'\ue227', 0xAFF2}, {'\ue228', 0xAFF3}, {'\ue229', 0xAFF4},
{'\ue22a', 0xAFF5}, {'\ue22b', 0xAFF6}, {'\ue22c', 0xAFF7},
{'\ue22d', 0xAFF8}, {'\ue22e', 0xAFF9}, {'\ue22f', 0xAFFA},
{'\ue230', 0xAFFB}, {'\ue231', 0xAFFC}, {'\ue232', 0xAFFD},
{'\ue233', 0xAFFE}, {'\ue234', 0xF8A1}, {'\ue235', 0xF8A2},
{'\ue236', 0xF8A3}, {'\ue237', 0xF8A4}, {'\ue238', 0xF8A5},
{'\ue239', 0xF8A6}, {'\ue23a', 0xF8A7}, {'\ue23b', 0xF8A8},
{'\ue23c', 0xF8A9}, {'\ue23d', 0xF8AA}, {'\ue23e', 0xF8AB},
{'\ue23f', 0xF8AC}, {'\ue240', 0xF8AD}, {'\ue241', 0xF8AE},
{'\ue242', 0xF8AF}, {'\ue243', 0xF8B0}, {'\ue244', 0xF8B1},
{'\ue245', 0xF8B2}, {'\ue246', 0xF8B3}, {'\ue247', 0xF8B4},
{'\ue248', 0xF8B5}, {'\ue249', 0xF8B6}, {'\ue24a', 0xF8B7},
{'\ue24b', 0xF8B8}, {'\ue24c', 0xF8B9}, {'\ue24d', 0xF8BA},
{'\ue24e', 0xF8BB}, {'\ue24f', 0xF8BC}, {'\ue250', 0xF8BD},
{'\ue251', 0xF8BE}, {'\ue252', 0xF8BF}, {'\ue253', 0xF8C0},
{'\ue254', 0xF8C1}, {'\ue255', 0xF8C2}, {'\ue256', 0xF8C3},
{'\ue257', 0xF8C4}, {'\ue258', 0xF8C5}, {'\ue259', 0xF8C6},
{'\ue25a', 0xF8C7}, {'\ue25b', 0xF8C8}, {'\ue25c', 0xF8C9},
{'\ue25d', 0xF8CA}, {'\ue25e', 0xF8CB}, {'\ue25f', 0xF8CC},
{'\ue260', 0xF8CD}, {'\ue261', 0xF8CE}, {'\ue262', 0xF8CF},
{'\ue263', 0xF8D0}, {'\ue264', 0xF8D1}, {'\ue265', 0xF8D2},
{'\ue266', 0xF8D3}, {'\ue267', 0xF8D4}, {'\ue268', 0xF8D5},
{'\ue269', 0xF8D6}, {'\ue26a', 0xF8D7}, {'\ue26b', 0xF8D8},
{'\ue26c', 0xF8D9}, {'\ue26d', 0xF8DA}, {'\ue26e', 0xF8DB},
{'\ue26f', 0xF8DC}, {'\ue270', 0xF8DD}, {'\ue271', 0xF8DE},
{'\ue272', 0xF8DF}, {'\ue273', 0xF8E0}, {'\ue274', 0xF8E1},
{'\ue275', 0xF8E2}, {'\ue276', 0xF8E3}, {'\ue277', 0xF8E4},
{'\ue278', 0xF8E5}, {'\ue279', 0xF8E6}, {'\ue27a', 0xF8E7},
{'\ue27b', 0xF8E8}, {'\ue27c', 0xF8E9}, {'\ue27d', 0xF8EA},
{'\ue27e', 0xF8EB}, {'\ue27f', 0xF8EC}, {'\ue280', 0xF8ED},
{'\ue281', 0xF8EE}, {'\ue282', 0xF8EF}, {'\ue283', 0xF8F0},
{'\ue284', 0xF8F1}, {'\ue285', 0xF8F2}, {'\ue286', 0xF8F3},
{'\ue287', 0xF8F4}, {'\ue288', 0xF8F5}, {'\ue289', 0xF8F6},
{'\ue28a', 0xF8F7}, {'\ue28b', 0xF8F8}, {'\ue28c', 0xF8F9},
{'\ue28d', 0xF8FA}, {'\ue28e', 0xF8FB}, {'\ue28f', 0xF8FC},
{'\ue290', 0xF8FD}, {'\ue291', 0xF8FE}, {'\ue292', 0xF9A1},
{'\ue293', 0xF9A2}, {'\ue294', 0xF9A3}, {'\ue295', 0xF9A4},
{'\ue296', 0xF9A5}, {'\ue297', 0xF9A6}, {'\ue298', 0xF9A7},
{'\ue299', 0xF9A8}, {'\ue29a', 0xF9A9}, {'\ue29b', 0xF9AA},
{'\ue29c', 0xF9AB}, {'\ue29d', 0xF9AC}, {'\ue29e', 0xF9AD},
{'\ue29f', 0xF9AE}, {'\ue2a0', 0xF9AF}, {'\ue2a1', 0xF9B0},
{'\ue2a2', 0xF9B1}, {'\ue2a3', 0xF9B2}, {'\ue2a4', 0xF9B3},
{'\ue2a5', 0xF9B4}, {'\ue2a6', 0xF9B5}, {'\ue2a7', 0xF9B6},
{'\ue2a8', 0xF9B7}, {'\ue2a9', 0xF9B8}, {'\ue2aa', 0xF9B9},
{'\ue2ab', 0xF9BA}, {'\ue2ac', 0xF9BB}, {'\ue2ad', 0xF9BC},
{'\ue2ae', 0xF9BD}, {'\ue2af', 0xF9BE}, {'\ue2b0', 0xF9BF},
{'\ue2b1', 0xF9C0}, {'\ue2b2', 0xF9C1}, {'\ue2b3', 0xF9C2},
{'\ue2b4', 0xF9C3}, {'\ue2b5', 0xF9C4}, {'\ue2b6', 0xF9C5},
{'\ue2b7', 0xF9C6}, {'\ue2b8', 0xF9C7}, {'\ue2b9', 0xF9C8},
{'\ue2ba', 0xF9C9}, {'\ue2bb', 0xF9CA}, {'\ue2bc', 0xF9CB},
{'\ue2bd', 0xF9CC}, {'\ue2be', 0xF9CD}, {'\ue2bf', 0xF9CE},
{'\ue2c0', 0xF9CF}, {'\ue2c1', 0xF9D0}, {'\ue2c2', 0xF9D1},
{'\ue2c3', 0xF9D2}, {'\ue2c4', 0xF9D3}, {'\ue2c5', 0xF9D4},
{'\ue2c6', 0xF9D5}, {'\ue2c7', 0xF9D6}, {'\ue2c8', 0xF9D7},
{'\ue2c9', 0xF9D8}, {'\ue2ca', 0xF9D9}, {'\ue2cb', 0xF9DA},
{'\ue2cc', 0xF9DB}, {'\ue2cd', 0xF9DC}, {'\ue2ce', 0xF9DD},
{'\ue2cf', 0xF9DE}, {'\ue2d0', 0xF9DF}, {'\ue2d1', 0xF9E0},
{'\ue2d2', 0xF9E1}, {'\ue2d3', 0xF9E2}, {'\ue2d4', 0xF9E3},
{'\ue2d5', 0xF9E4}, {'\ue2d6', 0xF9E5}, {'\ue2d7', 0xF9E6},
{'\ue2d8', 0xF9E7}, {'\ue2d9', 0xF9E8}, {'\ue2da', 0xF9E9},
{'\ue2db', 0xF9EA}, {'\ue2dc', 0xF9EB}, {'\ue2dd', 0xF9EC},
{'\ue2de', 0xF9ED}, {'\ue2df', 0xF9EE}, {'\ue2e0', 0xF9EF},
{'\ue2e1', 0xF9F0}, {'\ue2e2', 0xF9F1}, {'\ue2e3', 0xF9F2},
{'\ue2e4', 0xF9F3}, {'\ue2e5', 0xF9F4}, {'\ue2e6', 0xF9F5},
{'\ue2e7', 0xF9F6}, {'\ue2e8', 0xF9F7}, {'\ue2e9', 0xF9F8},
{'\ue2ea', 0xF9F9}, {'\ue2eb', 0xF9FA}, {'\ue2ec', 0xF9FB},
{'\ue2ed', 0xF9FC}, {'\ue2ee', 0xF9FD}, {'\ue2ef', 0xF9FE},
{'\ue2f0', 0xFAA1}, {'\ue2f1', 0xFAA2}, {'\ue2f2', 0xFAA3},
{'\ue2f3', 0xFAA4}, {'\ue2f4', 0xFAA5}, {'\ue2f5', 0xFAA6},
{'\ue2f6', 0xFAA7}, {'\ue2f7', 0xFAA8}, {'\ue2f8', 0xFAA9},
{'\ue2f9', 0xFAAA}, {'\ue2fa', 0xFAAB}, {'\ue2fb', 0xFAAC},
{'\ue2fc', 0xFAAD}, {'\ue2fd', 0xFAAE}, {'\ue2fe', 0xFAAF},
{'\ue2ff', 0xFAB0}, {'\ue300', 0xFAB1}, {'\ue301', 0xFAB2},
{'\ue302', 0xFAB3}, {'\ue303', 0xFAB4}, {'\ue304', 0xFAB5},
{'\ue305', 0xFAB6}, {'\ue306', 0xFAB7}, {'\ue307', 0xFAB8},
{'\ue308', 0xFAB9}, {'\ue309', 0xFABA}, {'\ue30a', 0xFABB},
{'\ue30b', 0xFABC}, {'\ue30c', 0xFABD}, {'\ue30d', 0xFABE},
{'\ue30e', 0xFABF}, {'\ue30f', 0xFAC0}, {'\ue310', 0xFAC1},
{'\ue311', 0xFAC2}, {'\ue312', 0xFAC3}, {'\ue313', 0xFAC4},
{'\ue314', 0xFAC5}, {'\ue315', 0xFAC6}, {'\ue316', 0xFAC7},
{'\ue317', 0xFAC8}, {'\ue318', 0xFAC9}, {'\ue319', 0xFACA},
{'\ue31a', 0xFACB}, {'\ue31b', 0xFACC}, {'\ue31c', 0xFACD},
{'\ue31d', 0xFACE}, {'\ue31e', 0xFACF}, {'\ue31f', 0xFAD0},
{'\ue320', 0xFAD1}, {'\ue321', 0xFAD2}, {'\ue322', 0xFAD3},
{'\ue323', 0xFAD4}, {'\ue324', 0xFAD5}, {'\ue325', 0xFAD6},
{'\ue326', 0xFAD7}, {'\ue327', 0xFAD8}, {'\ue328', 0xFAD9},
{'\ue329', 0xFADA}, {'\ue32a', 0xFADB}, {'\ue32b', 0xFADC},
{'\ue32c', 0xFADD}, {'\ue32d', 0xFADE}, {'\ue32e', 0xFADF},
{'\ue32f', 0xFAE0}, {'\ue330', 0xFAE1}, {'\ue331', 0xFAE2},
{'\ue332', 0xFAE3}, {'\ue333', 0xFAE4}, {'\ue334', 0xFAE5},
{'\ue335', 0xFAE6}, {'\ue336', 0xFAE7}, {'\ue337', 0xFAE8},
{'\ue338', 0xFAE9}, {'\ue339', 0xFAEA}, {'\ue33a', 0xFAEB},
{'\ue33b', 0xFAEC}, {'\ue33c', 0xFAED}, {'\ue33d', 0xFAEE},
{'\ue33e', 0xFAEF}, {'\ue33f', 0xFAF0}, {'\ue340', 0xFAF1},
{'\ue341', 0xFAF2}, {'\ue342', 0xFAF3}, {'\ue343', 0xFAF4},
{'\ue344', 0xFAF5}, {'\ue345', 0xFAF6}, {'\ue346', 0xFAF7},
{'\ue347', 0xFAF8}, {'\ue348', 0xFAF9}, {'\ue349', 0xFAFA},
{'\ue34a', 0xFAFB}, {'\ue34b', 0xFAFC}, {'\ue34c', 0xFAFD},
{'\ue34d', 0xFAFE}, {'\ue34e', 0xFBA1}, {'\ue34f', 0xFBA2},
{'\ue350', 0xFBA3}, {'\ue351', 0xFBA4}, {'\ue352', 0xFBA5},
{'\ue353', 0xFBA6}, {'\ue354', 0xFBA7}, {'\ue355', 0xFBA8},
{'\ue356', 0xFBA9}, {'\ue357', 0xFBAA}, {'\ue358', 0xFBAB},
{'\ue359', 0xFBAC}, {'\ue35a', 0xFBAD}, {'\ue35b', 0xFBAE},
{'\ue35c', 0xFBAF}, {'\ue35d', 0xFBB0}, {'\ue35e', 0xFBB1},
{'\ue35f', 0xFBB2}, {'\ue360', 0xFBB3}, {'\ue361', 0xFBB4},
{'\ue362', 0xFBB5}, {'\ue363', 0xFBB6}, {'\ue364', 0xFBB7},
{'\ue365', 0xFBB8}, {'\ue366', 0xFBB9}, {'\ue367', 0xFBBA},
{'\ue368', 0xFBBB}, {'\ue369', 0xFBBC}, {'\ue36a', 0xFBBD},
{'\ue36b', 0xFBBE}, {'\ue36c', 0xFBBF}, {'\ue36d', 0xFBC0},
{'\ue36e', 0xFBC1}, {'\ue36f', 0xFBC2}, {'\ue370', 0xFBC3},
{'\ue371', 0xFBC4}, {'\ue372', 0xFBC5}, {'\ue373', 0xFBC6},
{'\ue374', 0xFBC7}, {'\ue375', 0xFBC8}, {'\ue376', 0xFBC9},
{'\ue377', 0xFBCA}, {'\ue378', 0xFBCB}, {'\ue379', 0xFBCC},
{'\ue37a', 0xFBCD}, {'\ue37b', 0xFBCE}, {'\ue37c', 0xFBCF},
{'\ue37d', 0xFBD0}, {'\ue37e', 0xFBD1}, {'\ue37f', 0xFBD2},
{'\ue380', 0xFBD3}, {'\ue381', 0xFBD4}, {'\ue382', 0xFBD5},
{'\ue383', 0xFBD6}, {'\ue384', 0xFBD7}, {'\ue385', 0xFBD8},
{'\ue386', 0xFBD9}, {'\ue387', 0xFBDA}, {'\ue388', 0xFBDB},
{'\ue389', 0xFBDC}, {'\ue38a', 0xFBDD}, {'\ue38b', 0xFBDE},
{'\ue38c', 0xFBDF}, {'\ue38d', 0xFBE0}, {'\ue38e', 0xFBE1},
{'\ue38f', 0xFBE2}, {'\ue390', 0xFBE3}, {'\ue391', 0xFBE4},
{'\ue392', 0xFBE5}, {'\ue393', 0xFBE6}, {'\ue394', 0xFBE7},
{'\ue395', 0xFBE8}, {'\ue396', 0xFBE9}, {'\ue397', 0xFBEA},
{'\ue398', 0xFBEB}, {'\ue399', 0xFBEC}, {'\ue39a', 0xFBED},
{'\ue39b', 0xFBEE}, {'\ue39c', 0xFBEF}, {'\ue39d', 0xFBF0},
{'\ue39e', 0xFBF1}, {'\ue39f', 0xFBF2}, {'\ue3a0', 0xFBF3},
{'\ue3a1', 0xFBF4}, {'\ue3a2', 0xFBF5}, {'\ue3a3', 0xFBF6},
{'\ue3a4', 0xFBF7}, {'\ue3a5', 0xFBF8}, {'\ue3a6', 0xFBF9},
{'\ue3a7', 0xFBFA}, {'\ue3a8', 0xFBFB}, {'\ue3a9', 0xFBFC},
{'\ue3aa', 0xFBFD}, {'\ue3ab', 0xFBFE}, {'\ue3ac', 0xFCA1},
{'\ue3ad', 0xFCA2}, {'\ue3ae', 0xFCA3}, {'\ue3af', 0xFCA4},
{'\ue3b0', 0xFCA5}, {'\ue3b1', 0xFCA6}, {'\ue3b2', 0xFCA7},
{'\ue3b3', 0xFCA8}, {'\ue3b4', 0xFCA9}, {'\ue3b5', 0xFCAA},
{'\ue3b6', 0xFCAB}, {'\ue3b7', 0xFCAC}, {'\ue3b8', 0xFCAD},
{'\ue3b9', 0xFCAE}, {'\ue3ba', 0xFCAF}, {'\ue3bb', 0xFCB0},
{'\ue3bc', 0xFCB1}, {'\ue3bd', 0xFCB2}, {'\ue3be', 0xFCB3},
{'\ue3bf', 0xFCB4}, {'\ue3c0', 0xFCB5}, {'\ue3c1', 0xFCB6},
{'\ue3c2', 0xFCB7}, {'\ue3c3', 0xFCB8}, {'\ue3c4', 0xFCB9},
{'\ue3c5', 0xFCBA}, {'\ue3c6', 0xFCBB}, {'\ue3c7', 0xFCBC},
{'\ue3c8', 0xFCBD}, {'\ue3c9', 0xFCBE}, {'\ue3ca', 0xFCBF},
{'\ue3cb', 0xFCC0}, {'\ue3cc', 0xFCC1}, {'\ue3cd', 0xFCC2},
{'\ue3ce', 0xFCC3}, {'\ue3cf', 0xFCC4}, {'\ue3d0', 0xFCC5},
{'\ue3d1', 0xFCC6}, {'\ue3d2', 0xFCC7}, {'\ue3d3', 0xFCC8},
{'\ue3d4', 0xFCC9}, {'\ue3d5', 0xFCCA}, {'\ue3d6', 0xFCCB},
{'\ue3d7', 0xFCCC}, {'\ue3d8', 0xFCCD}, {'\ue3d9', 0xFCCE},
{'\ue3da', 0xFCCF}, {'\ue3db', 0xFCD0}, {'\ue3dc', 0xFCD1},
{'\ue3dd', 0xFCD2}, {'\ue3de', 0xFCD3}, {'\ue3df', 0xFCD4},
{'\ue3e0', 0xFCD5}, {'\ue3e1', 0xFCD6}, {'\ue3e2', 0xFCD7},
{'\ue3e3', 0xFCD8}, {'\ue3e4', 0xFCD9}, {'\ue3e5', 0xFCDA},
{'\ue3e6', 0xFCDB}, {'\ue3e7', 0xFCDC}, {'\ue3e8', 0xFCDD},
{'\ue3e9', 0xFCDE}, {'\ue3ea', 0xFCDF}, {'\ue3eb', 0xFCE0},
{'\ue3ec', 0xFCE1}, {'\ue3ed', 0xFCE2}, {'\ue3ee', 0xFCE3},
{'\ue3ef', 0xFCE4}, {'\ue3f0', 0xFCE5}, {'\ue3f1', 0xFCE6},
{'\ue3f2', 0xFCE7}, {'\ue3f3', 0xFCE8}, {'\ue3f4', 0xFCE9},
{'\ue3f5', 0xFCEA}, {'\ue3f6', 0xFCEB}, {'\ue3f7', 0xFCEC},
{'\ue3f8', 0xFCED}, {'\ue3f9', 0xFCEE}, {'\ue3fa', 0xFCEF},
{'\ue3fb', 0xFCF0}, {'\ue3fc', 0xFCF1}, {'\ue3fd', 0xFCF2},
{'\ue3fe', 0xFCF3}, {'\ue3ff', 0xFCF4}, {'\ue400', 0xFCF5},
{'\ue401', 0xFCF6}, {'\ue402', 0xFCF7}, {'\ue403', 0xFCF8},
{'\ue404', 0xFCF9}, {'\ue405', 0xFCFA}, {'\ue406', 0xFCFB},
{'\ue407', 0xFCFC}, {'\ue408', 0xFCFD}, {'\ue409', 0xFCFE},
{'\ue40a', 0xFDA1}, {'\ue40b', 0xFDA2}, {'\ue40c', 0xFDA3},
{'\ue40d', 0xFDA4}, {'\ue40e', 0xFDA5}, {'\ue40f', 0xFDA6},
{'\ue410', 0xFDA7}, {'\ue411', 0xFDA8}, {'\ue412', 0xFDA9},
{'\ue413', 0xFDAA}, {'\ue414', 0xFDAB}, {'\ue415', 0xFDAC},
{'\ue416', 0xFDAD}, {'\ue417', 0xFDAE}, {'\ue418', 0xFDAF},
{'\ue419', 0xFDB0}, {'\ue41a', 0xFDB1}, {'\ue41b', 0xFDB2},
{'\ue41c', 0xFDB3}, {'\ue41d', 0xFDB4}, {'\ue41e', 0xFDB5},
{'\ue41f', 0xFDB6}, {'\ue420', 0xFDB7}, {'\ue421', 0xFDB8},
{'\ue422', 0xFDB9}, {'\ue423', 0xFDBA}, {'\ue424', 0xFDBB},
{'\ue425', 0xFDBC}, {'\ue426', 0xFDBD}, {'\ue427', 0xFDBE},
{'\ue428', 0xFDBF}, {'\ue429', 0xFDC0}, {'\ue42a', 0xFDC1},
{'\ue42b', 0xFDC2}, {'\ue42c', 0xFDC3}, {'\ue42d', 0xFDC4},
{'\ue42e', 0xFDC5}, {'\ue42f', 0xFDC6}, {'\ue430', 0xFDC7},
{'\ue431', 0xFDC8}, {'\ue432', 0xFDC9}, {'\ue433', 0xFDCA},
{'\ue434', 0xFDCB}, {'\ue435', 0xFDCC}, {'\ue436', 0xFDCD},
{'\ue437', 0xFDCE}, {'\ue438', 0xFDCF}, {'\ue439', 0xFDD0},
{'\ue43a', 0xFDD1}, {'\ue43b', 0xFDD2}, {'\ue43c', 0xFDD3},
{'\ue43d', 0xFDD4}, {'\ue43e', 0xFDD5}, {'\ue43f', 0xFDD6},
{'\ue440', 0xFDD7}, {'\ue441', 0xFDD8}, {'\ue442', 0xFDD9},
{'\ue443', 0xFDDA}, {'\ue444', 0xFDDB}, {'\ue445', 0xFDDC},
{'\ue446', 0xFDDD}, {'\ue447', 0xFDDE}, {'\ue448', 0xFDDF},
{'\ue449', 0xFDE0}, {'\ue44a', 0xFDE1}, {'\ue44b', 0xFDE2},
{'\ue44c', 0xFDE3}, {'\ue44d', 0xFDE4}, {'\ue44e', 0xFDE5},
{'\ue44f', 0xFDE6}, {'\ue450', 0xFDE7}, {'\ue451', 0xFDE8},
{'\ue452', 0xFDE9}, {'\ue453', 0xFDEA}, {'\ue454', 0xFDEB},
{'\ue455', 0xFDEC}, {'\ue456', 0xFDED}, {'\ue457', 0xFDEE},
{'\ue458', 0xFDEF}, {'\ue459', 0xFDF0}, {'\ue45a', 0xFDF1},
{'\ue45b', 0xFDF2}, {'\ue45c', 0xFDF3}, {'\ue45d', 0xFDF4},
{'\ue45e', 0xFDF5}, {'\ue45f', 0xFDF6}, {'\ue460', 0xFDF7},
{'\ue461', 0xFDF8}, {'\ue462', 0xFDF9}, {'\ue463', 0xFDFA},
{'\ue464', 0xFDFB}, {'\ue465', 0xFDFC}, {'\ue466', 0xFDFD},
{'\ue467', 0xFDFE}, {'\ue468', 0xFEA1}, {'\ue469', 0xFEA2},
{'\ue46a', 0xFEA3}, {'\ue46b', 0xFEA4}, {'\ue46c', 0xFEA5},
{'\ue46d', 0xFEA6}, {'\ue46e', 0xFEA7}, {'\ue46f', 0xFEA8},
{'\ue470', 0xFEA9}, {'\ue471', 0xFEAA}, {'\ue472', 0xFEAB},
{'\ue473', 0xFEAC}, {'\ue474', 0xFEAD}, {'\ue475', 0xFEAE},
{'\ue476', 0xFEAF}, {'\ue477', 0xFEB0}, {'\ue478', 0xFEB1},
{'\ue479', 0xFEB2}, {'\ue47a', 0xFEB3}, {'\ue47b', 0xFEB4},
{'\ue47c', 0xFEB5}, {'\ue47d', 0xFEB6}, {'\ue47e', 0xFEB7},
{'\ue47f', 0xFEB8}, {'\ue480', 0xFEB9}, {'\ue481', 0xFEBA},
{'\ue482', 0xFEBB}, {'\ue483', 0xFEBC}, {'\ue484', 0xFEBD},
{'\ue485', 0xFEBE}, {'\ue486', 0xFEBF}, {'\ue487', 0xFEC0},
{'\ue488', 0xFEC1}, {'\ue489', 0xFEC2}, {'\ue48a', 0xFEC3},
{'\ue48b', 0xFEC4}, {'\ue48c', 0xFEC5}, {'\ue48d', 0xFEC6},
{'\ue48e', 0xFEC7}, {'\ue48f', 0xFEC8}, {'\ue490', 0xFEC9},
{'\ue491', 0xFECA}, {'\ue492', 0xFECB}, {'\ue493', 0xFECC},
{'\ue494', 0xFECD}, {'\ue495', 0xFECE}, {'\ue496', 0xFECF},
{'\ue497', 0xFED0}, {'\ue498', 0xFED1}, {'\ue499', 0xFED2},
{'\ue49a', 0xFED3}, {'\ue49b', 0xFED4}, {'\ue49c', 0xFED5},
{'\ue49d', 0xFED6}, {'\ue49e', 0xFED7}, {'\ue49f', 0xFED8},
{'\ue4a0', 0xFED9}, {'\ue4a1', 0xFEDA}, {'\ue4a2', 0xFEDB},
{'\ue4a3', 0xFEDC}, {'\ue4a4', 0xFEDD}, {'\ue4a5', 0xFEDE},
{'\ue4a6', 0xFEDF}, {'\ue4a7', 0xFEE0}, {'\ue4a8', 0xFEE1},
{'\ue4a9', 0xFEE2}, {'\ue4aa', 0xFEE3}, {'\ue4ab', 0xFEE4},
{'\ue4ac', 0xFEE5}, {'\ue4ad', 0xFEE6}, {'\ue4ae', 0xFEE7},
{'\ue4af', 0xFEE8}, {'\ue4b0', 0xFEE9}, {'\ue4b1', 0xFEEA},
{'\ue4b2', 0xFEEB}, {'\ue4b3', 0xFEEC}, {'\ue4b4', 0xFEED},
{'\ue4b5', 0xFEEE}, {'\ue4b6', 0xFEEF}, {'\ue4b7', 0xFEF0},
{'\ue4b8', 0xFEF1}, {'\ue4b9', 0xFEF2}, {'\ue4ba', 0xFEF3},
{'\ue4bb', 0xFEF4}, {'\ue4bc', 0xFEF5}, {'\ue4bd', 0xFEF6},
{'\ue4be', 0xFEF7}, {'\ue4bf', 0xFEF8}, {'\ue4c0', 0xFEF9},
{'\ue4c1', 0xFEFA}, {'\ue4c2', 0xFEFB}, {'\ue4c3', 0xFEFC},
{'\ue4c4', 0xFEFD}, {'\ue4c5', 0xFEFE}, {'\ue4c6', 0xA140},
{'\ue4c7', 0xA141}, {'\ue4c8', 0xA142}, {'\ue4c9', 0xA143},
{'\ue4ca', 0xA144}, {'\ue4cb', 0xA145}, {'\ue4cc', 0xA146},
{'\ue4cd', 0xA147}, {'\ue4ce', 0xA148}, {'\ue4cf', 0xA149},
{'\ue4d0', 0xA14A}, {'\ue4d1', 0xA14B}, {'\ue4d2', 0xA14C},
{'\ue4d3', 0xA14D}, {'\ue4d4', 0xA14E}, {'\ue4d5', 0xA14F},
{'\ue4d6', 0xA150}, {'\ue4d7', 0xA151}, {'\ue4d8', 0xA152},
{'\ue4d9', 0xA153}, {'\ue4da', 0xA154}, {'\ue4db', 0xA155},
{'\ue4dc', 0xA156}, {'\ue4dd', 0xA157}, {'\ue4de', 0xA158},
{'\ue4df', 0xA159}, {'\ue4e0', 0xA15A}, {'\ue4e1', 0xA15B},
{'\ue4e2', 0xA15C}, {'\ue4e3', 0xA15D}, {'\ue4e4', 0xA15E},
{'\ue4e5', 0xA15F}, {'\ue4e6', 0xA160}, {'\ue4e7', 0xA161},
{'\ue4e8', 0xA162}, {'\ue4e9', 0xA163}, {'\ue4ea', 0xA164},
{'\ue4eb', 0xA165}, {'\ue4ec', 0xA166}, {'\ue4ed', 0xA167},
{'\ue4ee', 0xA168}, {'\ue4ef', 0xA169}, {'\ue4f0', 0xA16A},
{'\ue4f1', 0xA16B}, {'\ue4f2', 0xA16C}, {'\ue4f3', 0xA16D},
{'\ue4f4', 0xA16E}, {'\ue4f5', 0xA16F}, {'\ue4f6', 0xA170},
{'\ue4f7', 0xA171}, {'\ue4f8', 0xA172}, {'\ue4f9', 0xA173},
{'\ue4fa', 0xA174}, {'\ue4fb', 0xA175}, {'\ue4fc', 0xA176},
{'\ue4fd', 0xA177}, {'\ue4fe', 0xA178}, {'\ue4ff', 0xA179},
{'\ue500', 0xA17A}, {'\ue501', 0xA17B}, {'\ue502', 0xA17C},
{'\ue503', 0xA17D}, {'\ue504', 0xA17E}, {'\ue505', 0xA180},
{'\ue506', 0xA181}, {'\ue507', 0xA182}, {'\ue508', 0xA183},
{'\ue509', 0xA184}, {'\ue50a', 0xA185}, {'\ue50b', 0xA186},
{'\ue50c', 0xA187}, {'\ue50d', 0xA188}, {'\ue50e', 0xA189},
{'\ue50f', 0xA18A}, {'\ue510', 0xA18B}, {'\ue511', 0xA18C},
{'\ue512', 0xA18D}, {'\ue513', 0xA18E}, {'\ue514', 0xA18F},
{'\ue515', 0xA190}, {'\ue516', 0xA191}, {'\ue517', 0xA192},
{'\ue518', 0xA193}, {'\ue519', 0xA194}, {'\ue51a', 0xA195},
{'\ue51b', 0xA196}, {'\ue51c', 0xA197}, {'\ue51d', 0xA198},
{'\ue51e', 0xA199}, {'\ue51f', 0xA19A}, {'\ue520', 0xA19B},
{'\ue521', 0xA19C}, {'\ue522', 0xA19D}, {'\ue523', 0xA19E},
{'\ue524', 0xA19F}, {'\ue525', 0xA1A0}, {'\ue526', 0xA240},
{'\ue527', 0xA241}, {'\ue528', 0xA242}, {'\ue529', 0xA243},
{'\ue52a', 0xA244}, {'\ue52b', 0xA245}, {'\ue52c', 0xA246},
{'\ue52d', 0xA247}, {'\ue52e', 0xA248}, {'\ue52f', 0xA249},
{'\ue530', 0xA24A}, {'\ue531', 0xA24B}, {'\ue532', 0xA24C},
{'\ue533', 0xA24D}, {'\ue534', 0xA24E}, {'\ue535', 0xA24F},
{'\ue536', 0xA250}, {'\ue537', 0xA251}, {'\ue538', 0xA252},
{'\ue539', 0xA253}, {'\ue53a', 0xA254}, {'\ue53b', 0xA255},
{'\ue53c', 0xA256}, {'\ue53d', 0xA257}, {'\ue53e', 0xA258},
{'\ue53f', 0xA259}, {'\ue540', 0xA25A}, {'\ue541', 0xA25B},
{'\ue542', 0xA25C}, {'\ue543', 0xA25D}, {'\ue544', 0xA25E},
{'\ue545', 0xA25F}, {'\ue546', 0xA260}, {'\ue547', 0xA261},
{'\ue548', 0xA262}, {'\ue549', 0xA263}, {'\ue54a', 0xA264},
{'\ue54b', 0xA265}, {'\ue54c', 0xA266}, {'\ue54d', 0xA267},
{'\ue54e', 0xA268}, {'\ue54f', 0xA269}, {'\ue550', 0xA26A},
{'\ue551', 0xA26B}, {'\ue552', 0xA26C}, {'\ue553', 0xA26D},
{'\ue554', 0xA26E}, {'\ue555', 0xA26F}, {'\ue556', 0xA270},
{'\ue557', 0xA271}, {'\ue558', 0xA272}, {'\ue559', 0xA273},
{'\ue55a', 0xA274}, {'\ue55b', 0xA275}, {'\ue55c', 0xA276},
{'\ue55d', 0xA277}, {'\ue55e', 0xA278}, {'\ue55f', 0xA279},
{'\ue560', 0xA27A}, {'\ue561', 0xA27B}, {'\ue562', 0xA27C},
{'\ue563', 0xA27D}, {'\ue564', 0xA27E}, {'\ue565', 0xA280},
{'\ue566', 0xA281}, {'\ue567', 0xA282}, {'\ue568', 0xA283},
{'\ue569', 0xA284}, {'\ue56a', 0xA285}, {'\ue56b', 0xA286},
{'\ue56c', 0xA287}, {'\ue56d', 0xA288}, {'\ue56e', 0xA289},
{'\ue56f', 0xA28A}, {'\ue570', 0xA28B}, {'\ue571', 0xA28C},
{'\ue572', 0xA28D}, {'\ue573', 0xA28E}, {'\ue574', 0xA28F},
{'\ue575', 0xA290}, {'\ue576', 0xA291}, {'\ue577', 0xA292},
{'\ue578', 0xA293}, {'\ue579', 0xA294}, {'\ue57a', 0xA295},
{'\ue57b', 0xA296}, {'\ue57c', 0xA297}, {'\ue57d', 0xA298},
{'\ue57e', 0xA299}, {'\ue57f', 0xA29A}, {'\ue580', 0xA29B},
{'\ue581', 0xA29C}, {'\ue582', 0xA29D}, {'\ue583', 0xA29E},
{'\ue584', 0xA29F}, {'\ue585', 0xA2A0}, {'\ue586', 0xA340},
{'\ue587', 0xA341}, {'\ue588', 0xA342}, {'\ue589', 0xA343},
{'\ue58a', 0xA344}, {'\ue58b', 0xA345}, {'\ue58c', 0xA346},
{'\ue58d', 0xA347}, {'\ue58e', 0xA348}, {'\ue58f', 0xA349},
{'\ue590', 0xA34A}, {'\ue591', 0xA34B}, {'\ue592', 0xA34C},
{'\ue593', 0xA34D}, {'\ue594', 0xA34E}, {'\ue595', 0xA34F},
{'\ue596', 0xA350}, {'\ue597', 0xA351}, {'\ue598', 0xA352},
{'\ue599', 0xA353}, {'\ue59a', 0xA354}, {'\ue59b', 0xA355},
{'\ue59c', 0xA356}, {'\ue59d', 0xA357}, {'\ue59e', 0xA358},
{'\ue59f', 0xA359}, {'\ue5a0', 0xA35A}, {'\ue5a1', 0xA35B},
{'\ue5a2', 0xA35C}, {'\ue5a3', 0xA35D}, {'\ue5a4', 0xA35E},
{'\ue5a5', 0xA35F}, {'\ue5a6', 0xA360}, {'\ue5a7', 0xA361},
{'\ue5a8', 0xA362}, {'\ue5a9', 0xA363}, {'\ue5aa', 0xA364},
{'\ue5ab', 0xA365}, {'\ue5ac', 0xA366}, {'\ue5ad', 0xA367},
{'\ue5ae', 0xA368}, {'\ue5af', 0xA369}, {'\ue5b0', 0xA36A},
{'\ue5b1', 0xA36B}, {'\ue5b2', 0xA36C}, {'\ue5b3', 0xA36D},
{'\ue5b4', 0xA36E}, {'\ue5b5', 0xA36F}, {'\ue5b6', 0xA370},
{'\ue5b7', 0xA371}, {'\ue5b8', 0xA372}, {'\ue5b9', 0xA373},
{'\ue5ba', 0xA374}, {'\ue5bb', 0xA375}, {'\ue5bc', 0xA376},
{'\ue5bd', 0xA377}, {'\ue5be', 0xA378}, {'\ue5bf', 0xA379},
{'\ue5c0', 0xA37A}, {'\ue5c1', 0xA37B}, {'\ue5c2', 0xA37C},
{'\ue5c3', 0xA37D}, {'\ue5c4', 0xA37E}, {'\ue5c5', 0xA380},
{'\ue5c6', 0xA381}, {'\ue5c7', 0xA382}, {'\ue5c8', 0xA383},
{'\ue5c9', 0xA384}, {'\ue5ca', 0xA385}, {'\ue5cb', 0xA386},
{'\ue5cc', 0xA387}, {'\ue5cd', 0xA388}, {'\ue5ce', 0xA389},
{'\ue5cf', 0xA38A}, {'\ue5d0', 0xA38B}, {'\ue5d1', 0xA38C},
{'\ue5d2', 0xA38D}, {'\ue5d3', 0xA38E}, {'\ue5d4', 0xA38F},
{'\ue5d5', 0xA390}, {'\ue5d6', 0xA391}, {'\ue5d7', 0xA392},
{'\ue5d8', 0xA393}, {'\ue5d9', 0xA394}, {'\ue5da', 0xA395},
{'\ue5db', 0xA396}, {'\ue5dc', 0xA397}, {'\ue5dd', 0xA398},
{'\ue5de', 0xA399}, {'\ue5df', 0xA39A}, {'\ue5e0', 0xA39B},
{'\ue5e1', 0xA39C}, {'\ue5e2', 0xA39D}, {'\ue5e3', 0xA39E},
{'\ue5e4', 0xA39F}, {'\ue5e5', 0xA3A0}, {'\ue5e6', 0xA440},
{'\ue5e7', 0xA441}, {'\ue5e8', 0xA442}, {'\ue5e9', 0xA443},
{'\ue5ea', 0xA444}, {'\ue5eb', 0xA445}, {'\ue5ec', 0xA446},
{'\ue5ed', 0xA447}, {'\ue5ee', 0xA448}, {'\ue5ef', 0xA449},
{'\ue5f0', 0xA44A}, {'\ue5f1', 0xA44B}, {'\ue5f2', 0xA44C},
{'\ue5f3', 0xA44D}, {'\ue5f4', 0xA44E}, {'\ue5f5', 0xA44F},
{'\ue5f6', 0xA450}, {'\ue5f7', 0xA451}, {'\ue5f8', 0xA452},
{'\ue5f9', 0xA453}, {'\ue5fa', 0xA454}, {'\ue5fb', 0xA455},
{'\ue5fc', 0xA456}, {'\ue5fd', 0xA457}, {'\ue5fe', 0xA458},
{'\ue5ff', 0xA459}, {'\ue600', 0xA45A}, {'\ue601', 0xA45B},
{'\ue602', 0xA45C}, {'\ue603', 0xA45D}, {'\ue604', 0xA45E},
{'\ue605', 0xA45F}, {'\ue606', 0xA460}, {'\ue607', 0xA461},
{'\ue608', 0xA462}, {'\ue609', 0xA463}, {'\ue60a', 0xA464},
{'\ue60b', 0xA465}, {'\ue60c', 0xA466}, {'\ue60d', 0xA467},
{'\ue60e', 0xA468}, {'\ue60f', 0xA469}, {'\ue610', 0xA46A},
{'\ue611', 0xA46B}, {'\ue612', 0xA46C}, {'\ue613', 0xA46D},
{'\ue614', 0xA46E}, {'\ue615', 0xA46F}, {'\ue616', 0xA470},
{'\ue617', 0xA471}, {'\ue618', 0xA472}, {'\ue619', 0xA473},
{'\ue61a', 0xA474}, {'\ue61b', 0xA475}, {'\ue61c', 0xA476},
{'\ue61d', 0xA477}, {'\ue61e', 0xA478}, {'\ue61f', 0xA479},
{'\ue620', 0xA47A}, {'\ue621', 0xA47B}, {'\ue622', 0xA47C},
{'\ue623', 0xA47D}, {'\ue624', 0xA47E}, {'\ue625', 0xA480},
{'\ue626', 0xA481}, {'\ue627', 0xA482}, {'\ue628', 0xA483},
{'\ue629', 0xA484}, {'\ue62a', 0xA485}, {'\ue62b', 0xA486},
{'\ue62c', 0xA487}, {'\ue62d', 0xA488}, {'\ue62e', 0xA489},
{'\ue62f', 0xA48A}, {'\ue630', 0xA48B}, {'\ue631', 0xA48C},
{'\ue632', 0xA48D}, {'\ue633', 0xA48E}, {'\ue634', 0xA48F},
{'\ue635', 0xA490}, {'\ue636', 0xA491}, {'\ue637', 0xA492},
{'\ue638', 0xA493}, {'\ue639', 0xA494}, {'\ue63a', 0xA495},
{'\ue63b', 0xA496}, {'\ue63c', 0xA497}, {'\ue63d', 0xA498},
{'\ue63e', 0xA499}, {'\ue63f', 0xA49A}, {'\ue640', 0xA49B},
{'\ue641', 0xA49C}, {'\ue642', 0xA49D}, {'\ue643', 0xA49E},
{'\ue644', 0xA49F}, {'\ue645', 0xA4A0}, {'\ue646', 0xA540},
{'\ue647', 0xA541}, {'\ue648', 0xA542}, {'\ue649', 0xA543},
{'\ue64a', 0xA544}, {'\ue64b', 0xA545}, {'\ue64c', 0xA546},
{'\ue64d', 0xA547}, {'\ue64e', 0xA548}, {'\ue64f', 0xA549},
{'\ue650', 0xA54A}, {'\ue651', 0xA54B}, {'\ue652', 0xA54C},
{'\ue653', 0xA54D}, {'\ue654', 0xA54E}, {'\ue655', 0xA54F},
{'\ue656', 0xA550}, {'\ue657', 0xA551}, {'\ue658', 0xA552},
{'\ue659', 0xA553}, {'\ue65a', 0xA554}, {'\ue65b', 0xA555},
{'\ue65c', 0xA556}, {'\ue65d', 0xA557}, {'\ue65e', 0xA558},
{'\ue65f', 0xA559}, {'\ue660', 0xA55A}, {'\ue661', 0xA55B},
{'\ue662', 0xA55C}, {'\ue663', 0xA55D}, {'\ue664', 0xA55E},
{'\ue665', 0xA55F}, {'\ue666', 0xA560}, {'\ue667', 0xA561},
{'\ue668', 0xA562}, {'\ue669', 0xA563}, {'\ue66a', 0xA564},
{'\ue66b', 0xA565}, {'\ue66c', 0xA566}, {'\ue66d', 0xA567},
{'\ue66e', 0xA568}, {'\ue66f', 0xA569}, {'\ue670', 0xA56A},
{'\ue671', 0xA56B}, {'\ue672', 0xA56C}, {'\ue673', 0xA56D},
{'\ue674', 0xA56E}, {'\ue675', 0xA56F}, {'\ue676', 0xA570},
{'\ue677', 0xA571}, {'\ue678', 0xA572}, {'\ue679', 0xA573},
{'\ue67a', 0xA574}, {'\ue67b', 0xA575}, {'\ue67c', 0xA576},
{'\ue67d', 0xA577}, {'\ue67e', 0xA578}, {'\ue67f', 0xA579},
{'\ue680', 0xA57A}, {'\ue681', 0xA57B}, {'\ue682', 0xA57C},
{'\ue683', 0xA57D}, {'\ue684', 0xA57E}, {'\ue685', 0xA580},
{'\ue686', 0xA581}, {'\ue687', 0xA582}, {'\ue688', 0xA583},
{'\ue689', 0xA584}, {'\ue68a', 0xA585}, {'\ue68b', 0xA586},
{'\ue68c', 0xA587}, {'\ue68d', 0xA588}, {'\ue68e', 0xA589},
{'\ue68f', 0xA58A}, {'\ue690', 0xA58B}, {'\ue691', 0xA58C},
{'\ue692', 0xA58D}, {'\ue693', 0xA58E}, {'\ue694', 0xA58F},
{'\ue695', 0xA590}, {'\ue696', 0xA591}, {'\ue697', 0xA592},
{'\ue698', 0xA593}, {'\ue699', 0xA594}, {'\ue69a', 0xA595},
{'\ue69b', 0xA596}, {'\ue69c', 0xA597}, {'\ue69d', 0xA598},
{'\ue69e', 0xA599}, {'\ue69f', 0xA59A}, {'\ue6a0', 0xA59B},
{'\ue6a1', 0xA59C}, {'\ue6a2', 0xA59D}, {'\ue6a3', 0xA59E},
{'\ue6a4', 0xA59F}, {'\ue6a5', 0xA5A0}, {'\ue6a6', 0xA640},
{'\ue6a7', 0xA641}, {'\ue6a8', 0xA642}, {'\ue6a9', 0xA643},
{'\ue6aa', 0xA644}, {'\ue6ab', 0xA645}, {'\ue6ac', 0xA646},
{'\ue6ad', 0xA647}, {'\ue6ae', 0xA648}, {'\ue6af', 0xA649},
{'\ue6b0', 0xA64A}, {'\ue6b1', 0xA64B}, {'\ue6b2', 0xA64C},
{'\ue6b3', 0xA64D}, {'\ue6b4', 0xA64E}, {'\ue6b5', 0xA64F},
{'\ue6b6', 0xA650}, {'\ue6b7', 0xA651}, {'\ue6b8', 0xA652},
{'\ue6b9', 0xA653}, {'\ue6ba', 0xA654}, {'\ue6bb', 0xA655},
{'\ue6bc', 0xA656}, {'\ue6bd', 0xA657}, {'\ue6be', 0xA658},
{'\ue6bf', 0xA659}, {'\ue6c0', 0xA65A}, {'\ue6c1', 0xA65B},
{'\ue6c2', 0xA65C}, {'\ue6c3', 0xA65D}, {'\ue6c4', 0xA65E},
{'\ue6c5', 0xA65F}, {'\ue6c6', 0xA660}, {'\ue6c7', 0xA661},
{'\ue6c8', 0xA662}, {'\ue6c9', 0xA663}, {'\ue6ca', 0xA664},
{'\ue6cb', 0xA665}, {'\ue6cc', 0xA666}, {'\ue6cd', 0xA667},
{'\ue6ce', 0xA668}, {'\ue6cf', 0xA669}, {'\ue6d0', 0xA66A},
{'\ue6d1', 0xA66B}, {'\ue6d2', 0xA66C}, {'\ue6d3', 0xA66D},
{'\ue6d4', 0xA66E}, {'\ue6d5', 0xA66F}, {'\ue6d6', 0xA670},
{'\ue6d7', 0xA671}, {'\ue6d8', 0xA672}, {'\ue6d9', 0xA673},
{'\ue6da', 0xA674}, {'\ue6db', 0xA675}, {'\ue6dc', 0xA676},
{'\ue6dd', 0xA677}, {'\ue6de', 0xA678}, {'\ue6df', 0xA679},
{'\ue6e0', 0xA67A}, {'\ue6e1', 0xA67B}, {'\ue6e2', 0xA67C},
{'\ue6e3', 0xA67D}, {'\ue6e4', 0xA67E}, {'\ue6e5', 0xA680},
{'\ue6e6', 0xA681}, {'\ue6e7', 0xA682}, {'\ue6e8', 0xA683},
{'\ue6e9', 0xA684}, {'\ue6ea', 0xA685}, {'\ue6eb', 0xA686},
{'\ue6ec', 0xA687}, {'\ue6ed', 0xA688}, {'\ue6ee', 0xA689},
{'\ue6ef', 0xA68A}, {'\ue6f0', 0xA68B}, {'\ue6f1', 0xA68C},
{'\ue6f2', 0xA68D}, {'\ue6f3', 0xA68E}, {'\ue6f4', 0xA68F},
{'\ue6f5', 0xA690}, {'\ue6f6', 0xA691}, {'\ue6f7', 0xA692},
{'\ue6f8', 0xA693}, {'\ue6f9', 0xA694}, {'\ue6fa', 0xA695},
{'\ue6fb', 0xA696}, {'\ue6fc', 0xA697}, {'\ue6fd', 0xA698},
{'\ue6fe', 0xA699}, {'\ue6ff', 0xA69A}, {'\ue700', 0xA69B},
{'\ue701', 0xA69C}, {'\ue702', 0xA69D}, {'\ue703', 0xA69E},
{'\ue704', 0xA69F}, {'\ue705', 0xA6A0}, {'\ue706', 0xA740},
{'\ue707', 0xA741}, {'\ue708', 0xA742}, {'\ue709', 0xA743},
{'\ue70a', 0xA744}, {'\ue70b', 0xA745}, {'\ue70c', 0xA746},
{'\ue70d', 0xA747}, {'\ue70e', 0xA748}, {'\ue70f', 0xA749},
{'\ue710', 0xA74A}, {'\ue711', 0xA74B}, {'\ue712', 0xA74C},
{'\ue713', 0xA74D}, {'\ue714', 0xA74E}, {'\ue715', 0xA74F},
{'\ue716', 0xA750}, {'\ue717', 0xA751}, {'\ue718', 0xA752},
{'\ue719', 0xA753}, {'\ue71a', 0xA754}, {'\ue71b', 0xA755},
{'\ue71c', 0xA756}, {'\ue71d', 0xA757}, {'\ue71e', 0xA758},
{'\ue71f', 0xA759}, {'\ue720', 0xA75A}, {'\ue721', 0xA75B},
{'\ue722', 0xA75C}, {'\ue723', 0xA75D}, {'\ue724', 0xA75E},
{'\ue725', 0xA75F}, {'\ue726', 0xA760}, {'\ue727', 0xA761},
{'\ue728', 0xA762}, {'\ue729', 0xA763}, {'\ue72a', 0xA764},
{'\ue72b', 0xA765}, {'\ue72c', 0xA766}, {'\ue72d', 0xA767},
{'\ue72e', 0xA768}, {'\ue72f', 0xA769}, {'\ue730', 0xA76A},
{'\ue731', 0xA76B}, {'\ue732', 0xA76C}, {'\ue733', 0xA76D},
{'\ue734', 0xA76E}, {'\ue735', 0xA76F}, {'\ue736', 0xA770},
{'\ue737', 0xA771}, {'\ue738', 0xA772}, {'\ue739', 0xA773},
{'\ue73a', 0xA774}, {'\ue73b', 0xA775}, {'\ue73c', 0xA776},
{'\ue73d', 0xA777}, {'\ue73e', 0xA778}, {'\ue73f', 0xA779},
{'\ue740', 0xA77A}, {'\ue741', 0xA77B}, {'\ue742', 0xA77C},
{'\ue743', 0xA77D}, {'\ue744', 0xA77E}, {'\ue745', 0xA780},
{'\ue746', 0xA781}, {'\ue747', 0xA782}, {'\ue748', 0xA783},
{'\ue749', 0xA784}, {'\ue74a', 0xA785}, {'\ue74b', 0xA786},
{'\ue74c', 0xA787}, {'\ue74d', 0xA788}, {'\ue74e', 0xA789},
{'\ue74f', 0xA78A}, {'\ue750', 0xA78B}, {'\ue751', 0xA78C},
{'\ue752', 0xA78D}, {'\ue753', 0xA78E}, {'\ue754', 0xA78F},
{'\ue755', 0xA790}, {'\ue756', 0xA791}, {'\ue757', 0xA792},
{'\ue758', 0xA793}, {'\ue759', 0xA794}, {'\ue75a', 0xA795},
{'\ue75b', 0xA796}, {'\ue75c', 0xA797}, {'\ue75d', 0xA798},
{'\ue75e', 0xA799}, {'\ue75f', 0xA79A}, {'\ue760', 0xA79B},
{'\ue761', 0xA79C}, {'\ue762', 0xA79D}, {'\ue763', 0xA79E},
{'\ue764', 0xA79F}, {'\ue765', 0xA7A0}, {'\ue766', 0xA2AB},
{'\ue767', 0xA2AC}, {'\ue768', 0xA2AD}, {'\ue769', 0xA2AE},
{'\ue76a', 0xA2AF}, {'\ue76b', 0xA2B0}, {'\ue76d', 0xA2E4},
{'\ue76e', 0xA2EF}, {'\ue76f', 0xA2F0}, {'\ue770', 0xA2FD},
{'\ue771', 0xA2FE}, {'\ue772', 0xA4F4}, {'\ue773', 0xA4F5},
{'\ue774', 0xA4F6}, {'\ue775', 0xA4F7}, {'\ue776', 0xA4F8},
{'\ue777', 0xA4F9}, {'\ue778', 0xA4FA}, {'\ue779', 0xA4FB},
{'\ue77a', 0xA4FC}, {'\ue77b', 0xA4FD}, {'\ue77c', 0xA4FE},
{'\ue77d', 0xA5F7}, {'\ue77e', 0xA5F8}, {'\ue77f', 0xA5F9},
{'\ue780', 0xA5FA}, {'\ue781', 0xA5FB}, {'\ue782', 0xA5FC},
{'\ue783', 0xA5FD}, {'\ue784', 0xA5FE}, {'\ue785', 0xA6B9},
{'\ue786', 0xA6BA}, {'\ue787', 0xA6BB}, {'\ue788', 0xA6BC},
{'\ue789', 0xA6BD}, {'\ue78a', 0xA6BE}, {'\ue78b', 0xA6BF},
{'\ue78c', 0xA6C0}, {'\ue78d', 0x84318236}, {'\ue78e', 0x84318238},
{'\ue78f', 0x84318237}, {'\ue790', 0x84318239}, {'\ue791', 0x84318330},
{'\ue792', 0x84318331}, {'\ue793', 0x84318332}, {'\ue794', 0x84318333},
{'\ue795', 0x84318334}, {'\ue796', 0x84318335}, {'\ue797', 0xA6F6},
{'\ue798', 0xA6F7}, {'\ue799', 0xA6F8}, {'\ue79a', 0xA6F9},
{'\ue79b', 0xA6FA}, {'\ue79c', 0xA6FB}, {'\ue79d', 0xA6FC},
{'\ue79e', 0xA6FD}, {'\ue79f', 0xA6FE}, {'\ue7a0', 0xA7C2},
{'\ue7a1', 0xA7C3}, {'\ue7a2', 0xA7C4}, {'\ue7a3', 0xA7C5},
{'\ue7a4', 0xA7C6}, {'\ue7a5', 0xA7C7}, {'\ue7a6', 0xA7C8},
{'\ue7a7', 0xA7C9}, {'\ue7a8', 0xA7CA}, {'\ue7a9', 0xA7CB},
{'\ue7aa', 0xA7CC}, {'\ue7ab', 0xA7CD}, {'\ue7ac', 0xA7CE},
{'\ue7ad', 0xA7CF}, {'\ue7ae', 0xA7D0}, {'\ue7af', 0xA7F2},
{'\ue7b0', 0xA7F3}, {'\ue7b1', 0xA7F4}, {'\ue7b2', 0xA7F5},
{'\ue7b3', 0xA7F6}, {'\ue7b4', 0xA7F7}, {'\ue7b5', 0xA7F8},
{'\ue7b6', 0xA7F9}, {'\ue7b7', 0xA7FA}, {'\ue7b8', 0xA7FB},
{'\ue7b9', 0xA7FC}, {'\ue7ba', 0xA7FD}, {'\ue7bb', 0xA7FE},
{'\ue7bc', 0xA896}, {'\ue7bd', 0xA897}, {'\ue7be', 0xA898},
{'\ue7bf', 0xA899}, {'\ue7c0', 0xA89A}, {'\ue7c1', 0xA89B},
{'\ue7c2', 0xA89C}, {'\ue7c3', 0xA89D}, {'\ue7c4', 0xA89E},
{'\ue7c5', 0xA89F}, {'\ue7c6', 0xA8A0}, {'\ue7c7', 0x8135F437},
{'\ue7c9', 0xA8C1}, {'\ue7ca', 0xA8C2}, {'\ue7cb', 0xA8C3},
{'\ue7cc', 0xA8C4}, {'\ue7cd', 0xA8EA}, {'\ue7ce', 0xA8EB},
{'\ue7cf', 0xA8EC}, {'\ue7d0', 0xA8ED}, {'\ue7d1', 0xA8EE},
{'\ue7d2', 0xA8EF}, {'\ue7d3', 0xA8F0}, {'\ue7d4', 0xA8F1},
{'\ue7d5', 0xA8F2}, {'\ue7d6', 0xA8F3}, {'\ue7d7', 0xA8F4},
{'\ue7d8', 0xA8F5}, {'\ue7d9', 0xA8F6}, {'\ue7da', 0xA8F7},
{'\ue7db', 0xA8F8}, {'\ue7dc', 0xA8F9}, {'\ue7dd', 0xA8FA},
{'\ue7de', 0xA8FB}, {'\ue7df', 0xA8FC}, {'\ue7e0', 0xA8FD},
{'\ue7e1', 0xA8FE}, {'\ue7e2', 0xA958}, {'\ue7e3', 0xA95B},
{'\ue7e4', 0xA95D}, {'\ue7e5', 0xA95E}, {'\ue7e6', 0xA95F},
{'\ue7f4', 0xA997}, {'\ue7f5', 0xA998}, {'\ue7f6', 0xA999},
{'\ue7f7', 0xA99A}, {'\ue7f8', 0xA99B}, {'\ue7f9', 0xA99C},
{'\ue7fa', 0xA99D}, {'\ue7fb', 0xA99E}, {'\ue7fc', 0xA99F},
{'\ue7fd', 0xA9A0}, {'\ue7fe', 0xA9A1}, {'\ue7ff', 0xA9A2},
{'\ue800', 0xA9A3}, {'\ue801', 0xA9F0}, {'\ue802', 0xA9F1},
{'\ue803', 0xA9F2}, {'\ue804', 0xA9F3}, {'\ue805', 0xA9F4},
{'\ue806', 0xA9F5}, {'\ue807', 0xA9F6}, {'\ue808', 0xA9F7},
{'\ue809', 0xA9F8}, {'\ue80a', 0xA9F9}, {'\ue80b', 0xA9FA},
{'\ue80c', 0xA9FB}, {'\ue80d', 0xA9FC}, {'\ue80e', 0xA9FD},
{'\ue80f', 0xA9FE}, {'\ue810', 0xD7FA}, {'\ue811', 0xD7FB},
{'\ue812', 0xD7FC}, {'\ue813', 0xD7FD}, {'\ue814', 0xD7FE},
{'\ue816', 0xFE51}, {'\ue817', 0xFE52}, {'\ue818', 0xFE53},
{'\ue81e', 0x82359037}, {'\ue826', 0x82359038}, {'\ue82b', 0x82359039},
{'\ue82c', 0x82359130}, {'\ue831', 0xFE6C}, {'\ue832', 0x82359131},
{'\ue83b', 0xFE76}, {'\ue843', 0x82359132}, {'\ue854', 0x82359133},
{'\ue855', 0xFE91}, {'\ue864', 0x82359134}, {'\ufe10', 0xA6D9},
{'\ufe11', 0xA6DB}, {'\ufe12', 0xA6DA}, {'\ufe13', 0xA6DC},
{'\ufe14', 0xA6DD}, {'\ufe15', 0xA6DE}, {'\ufe16', 0xA6DF},
{'\ufe17', 0xA6EC}, {'\ufe18', 0xA6ED}, {'\ufe19', 0xA6F3},
{'\U00020087', 0x95329031}, {'\U00020089', 0x95329033}, {'\U000200cc', 0x95329730},
{'\U000215d7', 0x9536B937}, {'\U0002298f', 0x9630BA35}, {'\U000241fe', 0x9635B630},
}
for _, v := range gb18030EncodingList {
unicodeToGB18030[v.unicode] = v.gb18030
gb18030ToUnicode[v.gb18030] = v.unicode
}
}
var (
unicodeToGB18030 = map[rune]uint32{}
gb18030ToUnicode = map[uint32]rune{}
// GB18030Case follows the cases from MySQL
GB18030Case = unicode.SpecialCase{
unicode.CaseRange{Lo: 0xB5, Hi: 0xB5, Delta: [unicode.MaxCase]rune{0, 775, 0}},
unicode.CaseRange{Lo: 0x1C5, Hi: 0x1C5, Delta: [unicode.MaxCase]rune{0, 1, 0}},
unicode.CaseRange{Lo: 0x1C8, Hi: 0x1C8, Delta: [unicode.MaxCase]rune{0, 1, 0}},
unicode.CaseRange{Lo: 0x1CB, Hi: 0x1CB, Delta: [unicode.MaxCase]rune{0, 1, 0}},
unicode.CaseRange{Lo: 0x1F2, Hi: 0x1F2, Delta: [unicode.MaxCase]rune{0, 1, 0}},
unicode.CaseRange{Lo: 0x25C, Hi: 0x25C, Delta: [unicode.MaxCase]rune{0, 0, 0}},
unicode.CaseRange{Lo: 0x261, Hi: 0x261, Delta: [unicode.MaxCase]rune{0, 0, 0}},
unicode.CaseRange{Lo: 0x265, Hi: 0x266, Delta: [unicode.MaxCase]rune{0, 0, 0}},
unicode.CaseRange{Lo: 0x26A, Hi: 0x26A, Delta: [unicode.MaxCase]rune{0, 0, 0}},
unicode.CaseRange{Lo: 0x26C, Hi: 0x26C, Delta: [unicode.MaxCase]rune{0, 0, 0}},
unicode.CaseRange{Lo: 0x282, Hi: 0x282, Delta: [unicode.MaxCase]rune{0, 0, 0}},
unicode.CaseRange{Lo: 0x287, Hi: 0x287, Delta: [unicode.MaxCase]rune{0, 0, 0}},
unicode.CaseRange{Lo: 0x29D, Hi: 0x29E, Delta: [unicode.MaxCase]rune{0, 0, 0}},
unicode.CaseRange{Lo: 0x37F, Hi: 0x37F, Delta: [unicode.MaxCase]rune{0, 0, 0}},
unicode.CaseRange{Lo: 0x3C2, Hi: 0x3C2, Delta: [unicode.MaxCase]rune{0, 1, 0}},
unicode.CaseRange{Lo: 0x3D0, Hi: 0x3D0, Delta: [unicode.MaxCase]rune{0, -30, 0}},
unicode.CaseRange{Lo: 0x3D1, Hi: 0x3D1, Delta: [unicode.MaxCase]rune{0, -25, 0}},
unicode.CaseRange{Lo: 0x3D5, Hi: 0x3D5, Delta: [unicode.MaxCase]rune{0, -15, 0}},
unicode.CaseRange{Lo: 0x3D6, Hi: 0x3D6, Delta: [unicode.MaxCase]rune{0, -22, 0}},
unicode.CaseRange{Lo: 0x3F0, Hi: 0x3F0, Delta: [unicode.MaxCase]rune{0, -54, 0}},
unicode.CaseRange{Lo: 0x3F1, Hi: 0x3F1, Delta: [unicode.MaxCase]rune{0, -48, 0}},
unicode.CaseRange{Lo: 0x3F3, Hi: 0x3F3, Delta: [unicode.MaxCase]rune{0, 0, 0}},
unicode.CaseRange{Lo: 0x3F5, Hi: 0x3F5, Delta: [unicode.MaxCase]rune{0, -64, 0}},
unicode.CaseRange{Lo: 0x526, Hi: 0x52F, Delta: [unicode.MaxCase]rune{0, 0, 0}},
unicode.CaseRange{Lo: 0x10C7, Hi: 0x10C7, Delta: [unicode.MaxCase]rune{0, 0, 0}},
unicode.CaseRange{Lo: 0x10CD, Hi: 0x10CD, Delta: [unicode.MaxCase]rune{0, 0, 0}},
unicode.CaseRange{Lo: 0x10D0, Hi: 0x10FA, Delta: [unicode.MaxCase]rune{0, 0, 0}},
unicode.CaseRange{Lo: 0x10FD, Hi: 0x10FF, Delta: [unicode.MaxCase]rune{0, 0, 0}},
unicode.CaseRange{Lo: 0x13A0, Hi: 0x13F5, Delta: [unicode.MaxCase]rune{0, 0, 0}},
unicode.CaseRange{Lo: 0x13F8, Hi: 0x13FD, Delta: [unicode.MaxCase]rune{0, 0, 0}},
unicode.CaseRange{Lo: 0x1C80, Hi: 0x1C88, Delta: [unicode.MaxCase]rune{0, 0, 0}},
unicode.CaseRange{Lo: 0x1C90, Hi: 0x1CBA, Delta: [unicode.MaxCase]rune{0, 0, 0}},
unicode.CaseRange{Lo: 0x1CBD, Hi: 0x1CBF, Delta: [unicode.MaxCase]rune{0, 0, 0}},
unicode.CaseRange{Lo: 0x1D79, Hi: 0x1D79, Delta: [unicode.MaxCase]rune{0, 0, 0}},
unicode.CaseRange{Lo: 0x1D7D, Hi: 0x1D7D, Delta: [unicode.MaxCase]rune{0, 0, 0}},
unicode.CaseRange{Lo: 0x1D8E, Hi: 0x1D8E, Delta: [unicode.MaxCase]rune{0, 0, 0}},
unicode.CaseRange{Lo: 0x1E9B, Hi: 0x1E9B, Delta: [unicode.MaxCase]rune{0, -58, 0}},
unicode.CaseRange{Lo: 0x1FBE, Hi: 0x1FBE, Delta: [unicode.MaxCase]rune{0, -7173, 0}},
unicode.CaseRange{Lo: 0x2CF2, Hi: 0x2CF3, Delta: [unicode.MaxCase]rune{0, 0, 0}},
unicode.CaseRange{Lo: 0x2D27, Hi: 0x2D27, Delta: [unicode.MaxCase]rune{0, 0, 0}},
unicode.CaseRange{Lo: 0x2D2D, Hi: 0x2D2D, Delta: [unicode.MaxCase]rune{0, 0, 0}},
unicode.CaseRange{Lo: 0xA660, Hi: 0xA661, Delta: [unicode.MaxCase]rune{0, 0, 0}},
unicode.CaseRange{Lo: 0xA698, Hi: 0xA69B, Delta: [unicode.MaxCase]rune{0, 0, 0}},
unicode.CaseRange{Lo: 0xA78D, Hi: 0xA78D, Delta: [unicode.MaxCase]rune{0, 0, 0}},
unicode.CaseRange{Lo: 0xA790, Hi: 0xA794, Delta: [unicode.MaxCase]rune{0, 0, 0}},
unicode.CaseRange{Lo: 0xA796, Hi: 0xA7AE, Delta: [unicode.MaxCase]rune{0, 0, 0}},
unicode.CaseRange{Lo: 0xA7B0, Hi: 0xA7BF, Delta: [unicode.MaxCase]rune{0, 0, 0}},
unicode.CaseRange{Lo: 0xA7C2, Hi: 0xA7CA, Delta: [unicode.MaxCase]rune{0, 0, 0}},
unicode.CaseRange{Lo: 0xA7F5, Hi: 0xA7F6, Delta: [unicode.MaxCase]rune{0, 0, 0}},
unicode.CaseRange{Lo: 0xAB53, Hi: 0xAB53, Delta: [unicode.MaxCase]rune{0, 0, 0}},
unicode.CaseRange{Lo: 0xAB70, Hi: 0xABBF, Delta: [unicode.MaxCase]rune{0, 0, 0}},
unicode.CaseRange{Lo: 0x104B0, Hi: 0x104D3, Delta: [unicode.MaxCase]rune{0, 0, 0}},
unicode.CaseRange{Lo: 0x104D8, Hi: 0x104FB, Delta: [unicode.MaxCase]rune{0, 0, 0}},
unicode.CaseRange{Lo: 0x10C80, Hi: 0x10CB2, Delta: [unicode.MaxCase]rune{0, 0, 0}},
unicode.CaseRange{Lo: 0x10CC0, Hi: 0x10CF2, Delta: [unicode.MaxCase]rune{0, 0, 0}},
unicode.CaseRange{Lo: 0x118A0, Hi: 0x118DF, Delta: [unicode.MaxCase]rune{0, 0, 0}},
unicode.CaseRange{Lo: 0x16E40, Hi: 0x16E7F, Delta: [unicode.MaxCase]rune{0, 0, 0}},
unicode.CaseRange{Lo: 0x1E900, Hi: 0x1E943, Delta: [unicode.MaxCase]rune{0, 0, 0}},
}
)
// Copyright 2021 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// See the License for the specific language governing permissions and
// limitations under the License.
package charset
import (
"bytes"
"strings"
"unicode"
"unicode/utf8"
"golang.org/x/text/encoding"
"golang.org/x/text/encoding/simplifiedchinese"
)
// EncodingGBKImpl is the instance of encodingGBK
var EncodingGBKImpl = &encodingGBK{encodingBase{enc: customGBK{}}}
func init() {
EncodingGBKImpl.self = EncodingGBKImpl
}
// encodingGBK is GBK encoding.
type encodingGBK struct {
encodingBase
}
// Name implements Encoding interface.
func (*encodingGBK) Name() string {
return CharsetGBK
}
// Tp implements Encoding interface.
func (*encodingGBK) Tp() EncodingTp {
return EncodingTpGBK
}
// Peek implements Encoding interface.
func (*encodingGBK) Peek(src []byte) []byte {
charLen := 2
if len(src) == 0 || src[0] < 0x80 {
// A byte in the range 00–7F is a single byte that means the same thing as it does in ASCII.
charLen = 1
}
if charLen < len(src) {
return src[:charLen]
}
return src
}
func (*encodingGBK) MbLen(bs string) int {
if len(bs) < 2 {
return 0
}
if 0x81 <= bs[0] && bs[0] <= 0xfe {
if (0x40 <= bs[1] && bs[1] <= 0x7e) || (0x80 <= bs[1] && bs[1] <= 0xfe) {
return 2
}
}
return 0
}
// ToUpper implements Encoding interface.
func (*encodingGBK) ToUpper(d string) string {
return strings.ToUpperSpecial(GBKCase, d)
}
// ToLower implements Encoding interface.
func (*encodingGBK) ToLower(d string) string {
return strings.ToLowerSpecial(GBKCase, d)
}
// GBKCase follows https://dev.mysql.com/worklog/task/?id=4583.
var GBKCase = unicode.SpecialCase{
unicode.CaseRange{Lo: 0x00E0, Hi: 0x00E1, Delta: [unicode.MaxCase]rune{0, 0, 0}},
unicode.CaseRange{Lo: 0x00E8, Hi: 0x00EA, Delta: [unicode.MaxCase]rune{0, 0, 0}},
unicode.CaseRange{Lo: 0x00EC, Hi: 0x00ED, Delta: [unicode.MaxCase]rune{0, 0, 0}},
unicode.CaseRange{Lo: 0x00F2, Hi: 0x00F3, Delta: [unicode.MaxCase]rune{0, 0, 0}},
unicode.CaseRange{Lo: 0x00F9, Hi: 0x00FA, Delta: [unicode.MaxCase]rune{0, 0, 0}},
unicode.CaseRange{Lo: 0x00FC, Hi: 0x00FC, Delta: [unicode.MaxCase]rune{0, 0, 0}},
unicode.CaseRange{Lo: 0x0101, Hi: 0x0101, Delta: [unicode.MaxCase]rune{0, 0, 0}},
unicode.CaseRange{Lo: 0x0113, Hi: 0x0113, Delta: [unicode.MaxCase]rune{0, 0, 0}},
unicode.CaseRange{Lo: 0x011B, Hi: 0x011B, Delta: [unicode.MaxCase]rune{0, 0, 0}},
unicode.CaseRange{Lo: 0x012B, Hi: 0x012B, Delta: [unicode.MaxCase]rune{0, 0, 0}},
unicode.CaseRange{Lo: 0x0144, Hi: 0x0144, Delta: [unicode.MaxCase]rune{0, 0, 0}},
unicode.CaseRange{Lo: 0x0148, Hi: 0x0148, Delta: [unicode.MaxCase]rune{0, 0, 0}},
unicode.CaseRange{Lo: 0x014D, Hi: 0x014D, Delta: [unicode.MaxCase]rune{0, 0, 0}},
unicode.CaseRange{Lo: 0x016B, Hi: 0x016B, Delta: [unicode.MaxCase]rune{0, 0, 0}},
unicode.CaseRange{Lo: 0x01CE, Hi: 0x01CE, Delta: [unicode.MaxCase]rune{0, 0, 0}},
unicode.CaseRange{Lo: 0x01D0, Hi: 0x01D0, Delta: [unicode.MaxCase]rune{0, 0, 0}},
unicode.CaseRange{Lo: 0x01D2, Hi: 0x01D2, Delta: [unicode.MaxCase]rune{0, 0, 0}},
unicode.CaseRange{Lo: 0x01D4, Hi: 0x01D4, Delta: [unicode.MaxCase]rune{0, 0, 0}},
unicode.CaseRange{Lo: 0x01D6, Hi: 0x01D6, Delta: [unicode.MaxCase]rune{0, 0, 0}},
unicode.CaseRange{Lo: 0x01D8, Hi: 0x01D8, Delta: [unicode.MaxCase]rune{0, 0, 0}},
unicode.CaseRange{Lo: 0x01DA, Hi: 0x01DA, Delta: [unicode.MaxCase]rune{0, 0, 0}},
unicode.CaseRange{Lo: 0x01DC, Hi: 0x01DC, Delta: [unicode.MaxCase]rune{0, 0, 0}},
unicode.CaseRange{Lo: 0x216A, Hi: 0x216B, Delta: [unicode.MaxCase]rune{0, 0, 0}},
}
// customGBK is a simplifiedchinese.GBK wrapper.
type customGBK struct{}
// NewCustomGBKEncoder return a custom GBK encoding.
func NewCustomGBKEncoder() *encoding.Encoder {
return customGBK{}.NewEncoder()
}
// NewDecoder returns simplifiedchinese.GBK.NewDecoder().
func (customGBK) NewDecoder() *encoding.Decoder {
return &encoding.Decoder{
Transformer: customGBKDecoder{
gbkDecoder: simplifiedchinese.GBK.NewDecoder(),
},
}
}
type customGBKDecoder struct {
gbkDecoder *encoding.Decoder
}
// Transform special treatment for 0x80,
// see https://github.com/pingcap/tidb/issues/30581 get details.
func (c customGBKDecoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
if len(src) == 0 {
return 0, 0, nil
}
if src[0] == 0x80 {
return utf8.EncodeRune(dst[:], utf8.RuneError), 1, nil
}
return c.gbkDecoder.Transform(dst, src, atEOF)
}
// Reset is same as simplifiedchinese.GBK.Reset().
func (c customGBKDecoder) Reset() {
c.gbkDecoder.Reset()
}
type customGBKEncoder struct {
gbkEncoder *encoding.Encoder
}
// NewEncoder returns simplifiedchinese.gbk.
func (customGBK) NewEncoder() *encoding.Encoder {
return &encoding.Encoder{
Transformer: customGBKEncoder{
gbkEncoder: simplifiedchinese.GBK.NewEncoder(),
},
}
}
// Transform special treatment for `€`,
// see https://github.com/pingcap/tidb/issues/30581 get details.
func (c customGBKEncoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
if bytes.HasPrefix(src, []byte{0xe2, 0x82, 0xac} /* '€' */) {
return 0, 0, ErrInvalidCharacterString
}
return c.gbkEncoder.Transform(dst, src, atEOF)
}
// Reset is same as simplifiedchinese.gbk.
func (c customGBKEncoder) Reset() {
c.gbkEncoder.Reset()
}
// Copyright 2021 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// See the License for the specific language governing permissions and
// limitations under the License.
package charset
import (
"bytes"
"golang.org/x/text/encoding"
)
// EncodingLatin1Impl is the instance of encodingLatin1.
// TiDB uses utf8 implementation for latin1 charset because of the backward compatibility.
var EncodingLatin1Impl = &encodingLatin1{encodingUTF8{encodingBase{enc: encoding.Nop}}}
func init() {
EncodingLatin1Impl.self = EncodingLatin1Impl
}
// encodingLatin1 compatibles with latin1 in old version TiDB.
type encodingLatin1 struct {
encodingUTF8
}
// Name implements Encoding interface.
func (*encodingLatin1) Name() string {
return CharsetLatin1
}
// Peek implements Encoding interface.
func (*encodingLatin1) Peek(src []byte) []byte {
if len(src) == 0 {
return src
}
return src[:1]
}
// IsValid implements Encoding interface.
func (*encodingLatin1) IsValid(_ []byte) bool {
return true
}
// Tp implements Encoding interface.
func (*encodingLatin1) Tp() EncodingTp {
return EncodingTpLatin1
}
func (*encodingLatin1) Transform(_ *bytes.Buffer, src []byte, _ Op) ([]byte, error) {
return src, nil
}
// Copyright 2015 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// See the License for the specific language governing permissions and
// limitations under the License.
package charset
import (
"strings"
"golang.org/x/text/encoding"
"golang.org/x/text/encoding/charmap"
"golang.org/x/text/encoding/japanese"
"golang.org/x/text/encoding/korean"
"golang.org/x/text/encoding/simplifiedchinese"
"golang.org/x/text/encoding/traditionalchinese"
"golang.org/x/text/encoding/unicode"
)
// Lookup returns the encoding with the specified label, and its canonical
// name. It returns nil and the empty string if label is not one of the
// standard encodings for HTML. Matching is case-insensitive and ignores
// leading and trailing whitespace.
func Lookup(label string) (e encoding.Encoding, name string) {
label = strings.ToLower(strings.Trim(label, "\t\n\r\f "))
return lookup(label)
}
func lookup(label string) (e encoding.Encoding, name string) {
enc := encodings[label]
return enc.e, enc.name
}
var encodings = map[string]struct {
e encoding.Encoding
name string
}{
"unicode-1-1-utf-8": {encoding.Nop, "utf-8"},
"utf-8": {encoding.Nop, "utf-8"},
"utf8": {encoding.Nop, "utf-8"},
"utf8mb4": {encoding.Nop, "utf-8"},
"binary": {encoding.Nop, "binary"},
"866": {charmap.CodePage866, "ibm866"},
"cp866": {charmap.CodePage866, "ibm866"},
"csibm866": {charmap.CodePage866, "ibm866"},
"ibm866": {charmap.CodePage866, "ibm866"},
"csisolatin2": {charmap.ISO8859_2, "iso-8859-2"},
"iso-8859-2": {charmap.ISO8859_2, "iso-8859-2"},
"iso-ir-101": {charmap.ISO8859_2, "iso-8859-2"},
"iso8859-2": {charmap.ISO8859_2, "iso-8859-2"},
"iso88592": {charmap.ISO8859_2, "iso-8859-2"},
"iso_8859-2": {charmap.ISO8859_2, "iso-8859-2"},
"iso_8859-2:1987": {charmap.ISO8859_2, "iso-8859-2"},
"l2": {charmap.ISO8859_2, "iso-8859-2"},
"latin2": {charmap.ISO8859_2, "iso-8859-2"},
"csisolatin3": {charmap.ISO8859_3, "iso-8859-3"},
"iso-8859-3": {charmap.ISO8859_3, "iso-8859-3"},
"iso-ir-109": {charmap.ISO8859_3, "iso-8859-3"},
"iso8859-3": {charmap.ISO8859_3, "iso-8859-3"},
"iso88593": {charmap.ISO8859_3, "iso-8859-3"},
"iso_8859-3": {charmap.ISO8859_3, "iso-8859-3"},
"iso_8859-3:1988": {charmap.ISO8859_3, "iso-8859-3"},
"l3": {charmap.ISO8859_3, "iso-8859-3"},
"latin3": {charmap.ISO8859_3, "iso-8859-3"},
"csisolatin4": {charmap.ISO8859_4, "iso-8859-4"},
"iso-8859-4": {charmap.ISO8859_4, "iso-8859-4"},
"iso-ir-110": {charmap.ISO8859_4, "iso-8859-4"},
"iso8859-4": {charmap.ISO8859_4, "iso-8859-4"},
"iso88594": {charmap.ISO8859_4, "iso-8859-4"},
"iso_8859-4": {charmap.ISO8859_4, "iso-8859-4"},
"iso_8859-4:1988": {charmap.ISO8859_4, "iso-8859-4"},
"l4": {charmap.ISO8859_4, "iso-8859-4"},
"latin4": {charmap.ISO8859_4, "iso-8859-4"},
"csisolatincyrillic": {charmap.ISO8859_5, "iso-8859-5"},
"cyrillic": {charmap.ISO8859_5, "iso-8859-5"},
"iso-8859-5": {charmap.ISO8859_5, "iso-8859-5"},
"iso-ir-144": {charmap.ISO8859_5, "iso-8859-5"},
"iso8859-5": {charmap.ISO8859_5, "iso-8859-5"},
"iso88595": {charmap.ISO8859_5, "iso-8859-5"},
"iso_8859-5": {charmap.ISO8859_5, "iso-8859-5"},
"iso_8859-5:1988": {charmap.ISO8859_5, "iso-8859-5"},
"arabic": {charmap.ISO8859_6, "iso-8859-6"},
"asmo-708": {charmap.ISO8859_6, "iso-8859-6"},
"csiso88596e": {charmap.ISO8859_6, "iso-8859-6"},
"csiso88596i": {charmap.ISO8859_6, "iso-8859-6"},
"csisolatinarabic": {charmap.ISO8859_6, "iso-8859-6"},
"ecma-114": {charmap.ISO8859_6, "iso-8859-6"},
"iso-8859-6": {charmap.ISO8859_6, "iso-8859-6"},
"iso-8859-6-e": {charmap.ISO8859_6, "iso-8859-6"},
"iso-8859-6-i": {charmap.ISO8859_6, "iso-8859-6"},
"iso-ir-127": {charmap.ISO8859_6, "iso-8859-6"},
"iso8859-6": {charmap.ISO8859_6, "iso-8859-6"},
"iso88596": {charmap.ISO8859_6, "iso-8859-6"},
"iso_8859-6": {charmap.ISO8859_6, "iso-8859-6"},
"iso_8859-6:1987": {charmap.ISO8859_6, "iso-8859-6"},
"csisolatingreek": {charmap.ISO8859_7, "iso-8859-7"},
"ecma-118": {charmap.ISO8859_7, "iso-8859-7"},
"elot_928": {charmap.ISO8859_7, "iso-8859-7"},
"greek": {charmap.ISO8859_7, "iso-8859-7"},
"greek8": {charmap.ISO8859_7, "iso-8859-7"},
"iso-8859-7": {charmap.ISO8859_7, "iso-8859-7"},
"iso-ir-126": {charmap.ISO8859_7, "iso-8859-7"},
"iso8859-7": {charmap.ISO8859_7, "iso-8859-7"},
"iso88597": {charmap.ISO8859_7, "iso-8859-7"},
"iso_8859-7": {charmap.ISO8859_7, "iso-8859-7"},
"iso_8859-7:1987": {charmap.ISO8859_7, "iso-8859-7"},
"sun_eu_greek": {charmap.ISO8859_7, "iso-8859-7"},
"csiso88598e": {charmap.ISO8859_8, "iso-8859-8"},
"csisolatinhebrew": {charmap.ISO8859_8, "iso-8859-8"},
"hebrew": {charmap.ISO8859_8, "iso-8859-8"},
"iso-8859-8": {charmap.ISO8859_8, "iso-8859-8"},
"iso-8859-8-e": {charmap.ISO8859_8, "iso-8859-8"},
"iso-ir-138": {charmap.ISO8859_8, "iso-8859-8"},
"iso8859-8": {charmap.ISO8859_8, "iso-8859-8"},
"iso88598": {charmap.ISO8859_8, "iso-8859-8"},
"iso_8859-8": {charmap.ISO8859_8, "iso-8859-8"},
"iso_8859-8:1988": {charmap.ISO8859_8, "iso-8859-8"},
"visual": {charmap.ISO8859_8, "iso-8859-8"},
"csiso88598i": {charmap.ISO8859_8, "iso-8859-8-i"},
"iso-8859-8-i": {charmap.ISO8859_8, "iso-8859-8-i"},
"logical": {charmap.ISO8859_8, "iso-8859-8-i"},
"csisolatin6": {charmap.ISO8859_10, "iso-8859-10"},
"iso-8859-10": {charmap.ISO8859_10, "iso-8859-10"},
"iso-ir-157": {charmap.ISO8859_10, "iso-8859-10"},
"iso8859-10": {charmap.ISO8859_10, "iso-8859-10"},
"iso885910": {charmap.ISO8859_10, "iso-8859-10"},
"l6": {charmap.ISO8859_10, "iso-8859-10"},
"latin6": {charmap.ISO8859_10, "iso-8859-10"},
"iso-8859-13": {charmap.ISO8859_13, "iso-8859-13"},
"iso8859-13": {charmap.ISO8859_13, "iso-8859-13"},
"iso885913": {charmap.ISO8859_13, "iso-8859-13"},
"iso-8859-14": {charmap.ISO8859_14, "iso-8859-14"},
"iso8859-14": {charmap.ISO8859_14, "iso-8859-14"},
"iso885914": {charmap.ISO8859_14, "iso-8859-14"},
"csisolatin9": {charmap.ISO8859_15, "iso-8859-15"},
"iso-8859-15": {charmap.ISO8859_15, "iso-8859-15"},
"iso8859-15": {charmap.ISO8859_15, "iso-8859-15"},
"iso885915": {charmap.ISO8859_15, "iso-8859-15"},
"iso_8859-15": {charmap.ISO8859_15, "iso-8859-15"},
"l9": {charmap.ISO8859_15, "iso-8859-15"},
"iso-8859-16": {charmap.ISO8859_16, "iso-8859-16"},
"cskoi8r": {charmap.KOI8R, "koi8-r"},
"koi": {charmap.KOI8R, "koi8-r"},
"koi8": {charmap.KOI8R, "koi8-r"},
"koi8-r": {charmap.KOI8R, "koi8-r"},
"koi8_r": {charmap.KOI8R, "koi8-r"},
"koi8-u": {charmap.KOI8U, "koi8-u"},
"csmacintosh": {charmap.Macintosh, "macintosh"},
"mac": {charmap.Macintosh, "macintosh"},
"macintosh": {charmap.Macintosh, "macintosh"},
"x-mac-roman": {charmap.Macintosh, "macintosh"},
"dos-874": {charmap.Windows874, "windows-874"},
"iso-8859-11": {charmap.Windows874, "windows-874"},
"iso8859-11": {charmap.Windows874, "windows-874"},
"iso885911": {charmap.Windows874, "windows-874"},
"tis-620": {charmap.Windows874, "windows-874"},
"windows-874": {charmap.Windows874, "windows-874"},
"cp1250": {charmap.Windows1250, "windows-1250"},
"windows-1250": {charmap.Windows1250, "windows-1250"},
"x-cp1250": {charmap.Windows1250, "windows-1250"},
"cp1251": {charmap.Windows1251, "windows-1251"},
"windows-1251": {charmap.Windows1251, "windows-1251"},
"x-cp1251": {charmap.Windows1251, "windows-1251"},
"ansi_x3.4-1968": {charmap.Windows1252, "windows-1252"},
"ascii": {charmap.Windows1252, "windows-1252"},
"cp1252": {charmap.Windows1252, "windows-1252"},
"cp819": {charmap.Windows1252, "windows-1252"},
"csisolatin1": {charmap.Windows1252, "windows-1252"},
"ibm819": {charmap.Windows1252, "windows-1252"},
"iso-8859-1": {charmap.Windows1252, "windows-1252"},
"iso-ir-100": {charmap.Windows1252, "windows-1252"},
"iso8859-1": {charmap.Windows1252, "windows-1252"},
"iso88591": {charmap.Windows1252, "windows-1252"},
"iso_8859-1": {charmap.Windows1252, "windows-1252"},
"iso_8859-1:1987": {charmap.Windows1252, "windows-1252"},
"l1": {charmap.Windows1252, "windows-1252"},
"latin1": {charmap.Windows1252, "windows-1252"},
"us-ascii": {charmap.Windows1252, "windows-1252"},
"windows-1252": {charmap.Windows1252, "windows-1252"},
"x-cp1252": {charmap.Windows1252, "windows-1252"},
"cp1253": {charmap.Windows1253, "windows-1253"},
"windows-1253": {charmap.Windows1253, "windows-1253"},
"x-cp1253": {charmap.Windows1253, "windows-1253"},
"cp1254": {charmap.Windows1254, "windows-1254"},
"csisolatin5": {charmap.Windows1254, "windows-1254"},
"iso-8859-9": {charmap.Windows1254, "windows-1254"},
"iso-ir-148": {charmap.Windows1254, "windows-1254"},
"iso8859-9": {charmap.Windows1254, "windows-1254"},
"iso88599": {charmap.Windows1254, "windows-1254"},
"iso_8859-9": {charmap.Windows1254, "windows-1254"},
"iso_8859-9:1989": {charmap.Windows1254, "windows-1254"},
"l5": {charmap.Windows1254, "windows-1254"},
"latin5": {charmap.Windows1254, "windows-1254"},
"windows-1254": {charmap.Windows1254, "windows-1254"},
"x-cp1254": {charmap.Windows1254, "windows-1254"},
"cp1255": {charmap.Windows1255, "windows-1255"},
"windows-1255": {charmap.Windows1255, "windows-1255"},
"x-cp1255": {charmap.Windows1255, "windows-1255"},
"cp1256": {charmap.Windows1256, "windows-1256"},
"windows-1256": {charmap.Windows1256, "windows-1256"},
"x-cp1256": {charmap.Windows1256, "windows-1256"},
"cp1257": {charmap.Windows1257, "windows-1257"},
"windows-1257": {charmap.Windows1257, "windows-1257"},
"x-cp1257": {charmap.Windows1257, "windows-1257"},
"cp1258": {charmap.Windows1258, "windows-1258"},
"windows-1258": {charmap.Windows1258, "windows-1258"},
"x-cp1258": {charmap.Windows1258, "windows-1258"},
"x-mac-cyrillic": {charmap.MacintoshCyrillic, "x-mac-cyrillic"},
"x-mac-ukrainian": {charmap.MacintoshCyrillic, "x-mac-cyrillic"},
"chinese": {simplifiedchinese.GBK, "gbk"},
"csgb2312": {simplifiedchinese.GBK, "gbk"},
"csiso58gb231280": {simplifiedchinese.GBK, "gbk"},
"gb2312": {simplifiedchinese.GBK, "gbk"},
"gb_2312": {simplifiedchinese.GBK, "gbk"},
"gb_2312-80": {simplifiedchinese.GBK, "gbk"},
"gbk": {simplifiedchinese.GBK, "gbk"},
"iso-ir-58": {simplifiedchinese.GBK, "gbk"},
"x-gbk": {simplifiedchinese.GBK, "gbk"},
"gb18030": {simplifiedchinese.GB18030, "gb18030"},
"hz-gb-2312": {simplifiedchinese.HZGB2312, "hz-gb-2312"},
"big5": {traditionalchinese.Big5, "big5"},
"big5-hkscs": {traditionalchinese.Big5, "big5"},
"cn-big5": {traditionalchinese.Big5, "big5"},
"csbig5": {traditionalchinese.Big5, "big5"},
"x-x-big5": {traditionalchinese.Big5, "big5"},
"cseucpkdfmtjapanese": {japanese.EUCJP, "euc-jp"},
"euc-jp": {japanese.EUCJP, "euc-jp"},
"x-euc-jp": {japanese.EUCJP, "euc-jp"},
"csiso2022jp": {japanese.ISO2022JP, "iso-2022-jp"},
"iso-2022-jp": {japanese.ISO2022JP, "iso-2022-jp"},
"csshiftjis": {japanese.ShiftJIS, "shift_jis"},
"ms_kanji": {japanese.ShiftJIS, "shift_jis"},
"shift-jis": {japanese.ShiftJIS, "shift_jis"},
"shift_jis": {japanese.ShiftJIS, "shift_jis"},
"sjis": {japanese.ShiftJIS, "shift_jis"},
"windows-31j": {japanese.ShiftJIS, "shift_jis"},
"x-sjis": {japanese.ShiftJIS, "shift_jis"},
"cseuckr": {korean.EUCKR, "euc-kr"},
"csksc56011987": {korean.EUCKR, "euc-kr"},
"euc-kr": {korean.EUCKR, "euc-kr"},
"iso-ir-149": {korean.EUCKR, "euc-kr"},
"korean": {korean.EUCKR, "euc-kr"},
"ks_c_5601-1987": {korean.EUCKR, "euc-kr"},
"ks_c_5601-1989": {korean.EUCKR, "euc-kr"},
"ksc5601": {korean.EUCKR, "euc-kr"},
"ksc_5601": {korean.EUCKR, "euc-kr"},
"windows-949": {korean.EUCKR, "euc-kr"},
"csiso2022kr": {encoding.Replacement, "replacement"},
"iso-2022-kr": {encoding.Replacement, "replacement"},
"iso-2022-cn": {encoding.Replacement, "replacement"},
"iso-2022-cn-ext": {encoding.Replacement, "replacement"},
"utf-16be": {unicode.UTF16(unicode.BigEndian, unicode.IgnoreBOM), "utf-16be"},
"utf-16": {unicode.UTF16(unicode.LittleEndian, unicode.IgnoreBOM), "utf-16le"},
"utf-16le": {unicode.UTF16(unicode.LittleEndian, unicode.IgnoreBOM), "utf-16le"},
"x-user-defined": {charmap.XUserDefined, "x-user-defined"},
}
// Copyright 2021 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// See the License for the specific language governing permissions and
// limitations under the License.
package charset
import (
"bytes"
"unicode/utf8"
"golang.org/x/text/encoding"
)
// EncodingUTF8Impl is the instance of encodingUTF8.
var EncodingUTF8Impl = &encodingUTF8{encodingBase{enc: encoding.Nop}}
// EncodingUTF8MB3StrictImpl is the instance of encodingUTF8MB3Strict.
var EncodingUTF8MB3StrictImpl = &encodingUTF8MB3Strict{
encodingUTF8{
encodingBase{
enc: encoding.Nop,
},
},
}
func init() {
EncodingUTF8Impl.self = EncodingUTF8Impl
EncodingUTF8MB3StrictImpl.self = EncodingUTF8MB3StrictImpl
}
// encodingUTF8 is TiDB's default encoding.
type encodingUTF8 struct {
encodingBase
}
// Name implements Encoding interface.
func (*encodingUTF8) Name() string {
return CharsetUTF8MB4
}
// Tp implements Encoding interface.
func (*encodingUTF8) Tp() EncodingTp {
return EncodingTpUTF8
}
// Peek implements Encoding interface.
func (*encodingUTF8) Peek(src []byte) []byte {
nextLen := 4
if len(src) == 0 || src[0] < 0x80 {
nextLen = 1
} else if src[0] < 0xe0 {
nextLen = 2
} else if src[0] < 0xf0 {
nextLen = 3
}
if len(src) < nextLen {
return src
}
return src[:nextLen]
}
func (*encodingUTF8) MbLen(bs string) int {
_, size := utf8.DecodeRuneInString(bs)
if size <= 1 {
return 0
}
return size
}
// IsValid implements Encoding interface.
func (e *encodingUTF8) IsValid(src []byte) bool {
if utf8.Valid(src) {
return true
}
return e.encodingBase.IsValid(src)
}
// Transform implements Encoding interface.
func (e *encodingUTF8) Transform(dest *bytes.Buffer, src []byte, op Op) ([]byte, error) {
if e.IsValid(src) {
return src, nil
}
return e.encodingBase.Transform(dest, src, op)
}
// Foreach implements Encoding interface.
func (*encodingUTF8) Foreach(src []byte, _ Op, fn func(from, to []byte, ok bool) bool) {
var rv rune
for i, w := 0, 0; i < len(src); i += w {
rv, w = utf8.DecodeRune(src[i:])
meetErr := rv == utf8.RuneError && w == 1
if !fn(src[i:i+w], src[i:i+w], !meetErr) {
return
}
}
}
// encodingUTF8MB3Strict is the strict mode of EncodingUTF8MB3.
// MB4 characters are considered invalid.
type encodingUTF8MB3Strict struct {
encodingUTF8
}
// IsValid implements Encoding interface.
func (e *encodingUTF8MB3Strict) IsValid(src []byte) bool {
return e.encodingBase.IsValid(src)
}
// Foreach implements Encoding interface.
func (*encodingUTF8MB3Strict) Foreach(src []byte, _ Op, fn func(srcCh, dstCh []byte, ok bool) bool) {
for i, w := 0, 0; i < len(src); i += w {
var rv rune
rv, w = utf8.DecodeRune(src[i:])
meetErr := (rv == utf8.RuneError && w == 1) || w > 3
if !fn(src[i:i+w], src[i:i+w], !meetErr) {
return
}
}
}
// Transform implements Encoding interface.
func (e *encodingUTF8MB3Strict) Transform(dest *bytes.Buffer, src []byte, op Op) ([]byte, error) {
if e.IsValid(src) {
return src, nil
}
return e.encodingBase.Transform(dest, src, op)
}
// Copyright 2019 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// See the License for the specific language governing permissions and
// limitations under the License.
package parser
import (
"bytes"
"crypto/sha256"
"encoding/hex"
hash2 "hash"
"strings"
"sync"
"unsafe"
"github.com/pingcap/errors"
"github.com/pingcap/tidb/pkg/parser/charset"
)
// Digest stores the fixed length hash value.
type Digest struct {
b []byte
str string
}
// NewDigest returns a new digest.
func NewDigest(b []byte) *Digest {
return &Digest{
b: b,
str: hex.EncodeToString(b),
}
}
// String returns the digest hex string.
func (d *Digest) String() string {
return d.str
}
// Bytes returns the digest byte slice.
func (d *Digest) Bytes() []byte {
return d.b
}
// DigestHash generates the digest of statements.
// it will generate a hash on normalized form of statement text
// which removes general property of a statement but keeps specific property.
//
// for example: both DigestHash('select 1') and DigestHash('select 2') => e1c71d1661ae46e09b7aaec1c390957f0d6260410df4e4bc71b9c8d681021471
//
// Deprecated: It is logically consistent with NormalizeDigest.
func DigestHash(sql string) (digest *Digest) {
d := digesterPool.Get().(*sqlDigester)
digest = d.doDigest(sql)
digesterPool.Put(d)
return
}
// DigestNormalized generates the digest of a normalized sql.
// it will generate a hash on a normalized sql.
// Normalize + DigestNormalized equals to NormalizeDigest.
//
// for example: DigestNormalized('select ?')
// DigestNormalized should be called with a normalized SQL string (like 'select ?') generated by function Normalize.
// do not call with SQL which is not normalized, DigestNormalized('select 1') and DigestNormalized('select 2') is not the same
func DigestNormalized(normalized string) (digest *Digest) {
d := digesterPool.Get().(*sqlDigester)
digest = d.doDigestNormalized(normalized)
digesterPool.Put(d)
return
}
// Normalize generates the normalized statements.
// it will get normalized form of statement text
// which removes general property of a statement but keeps specific property.
// possible values for 'redact' is "OFF", "ON" or "MARKER". Passing "" is seen as "OFF".
//
// when "OFF", it is returned as is
// for example, when "ON": Normalize('select 1 from b where a = 1') => 'select ? from b where a = ?'
// for example, when "MARKER": Normalize('select 1 from b where a = 1') => 'select ‹1› from b where a = ‹1›'
func Normalize(sql string, redact string) (result string) {
if redact == "" || redact == errors.RedactLogDisable {
return sql
}
d := digesterPool.Get().(*sqlDigester)
result = d.doNormalize(sql, redact, false)
digesterPool.Put(d)
return
}
// NormalizeForBinding generates the normalized statements with additional binding rules
// it will get normalized form of statement text
// which removes general property of a statement but keeps specific property.
//
// for example: NormalizeForBinding('select 1 from b where a = 1') => 'select ? from b where a = ?'
func NormalizeForBinding(sql string, forPlanReplayerReload bool) (result string) {
d := digesterPool.Get().(*sqlDigester)
result = d.doNormalizeForBinding(sql, false, forPlanReplayerReload)
digesterPool.Put(d)
return
}
// NormalizeKeepHint generates the normalized statements, but keep the hints.
// it will get normalized form of statement text with hints.
// which removes general property of a statement but keeps specific property.
//
// for example: Normalize('select /*+ use_index(t, primary) */ 1 from b where a = 1') => 'select /*+ use_index(t, primary) */ ? from b where a = ?'
func NormalizeKeepHint(sql string) (result string) {
d := digesterPool.Get().(*sqlDigester)
result = d.doNormalize(sql, errors.RedactLogEnable, true)
digesterPool.Put(d)
return
}
// NormalizeDigest combines Normalize and DigestNormalized into one method.
func NormalizeDigest(sql string) (normalized string, digest *Digest) {
d := digesterPool.Get().(*sqlDigester)
normalized, digest = d.doNormalizeDigest(sql)
digesterPool.Put(d)
return
}
// NormalizeDigestForBinding combines Normalize and DigestNormalized into one method with additional binding rules.
func NormalizeDigestForBinding(sql string) (normalized string, digest *Digest) {
d := digesterPool.Get().(*sqlDigester)
normalized, digest = d.doNormalizeDigestForBinding(sql)
digesterPool.Put(d)
return
}
var digesterPool = sync.Pool{
New: func() interface{} {
return &sqlDigester{
lexer: NewScanner(""),
hasher: sha256.New(),
}
},
}
// sqlDigester is used to compute DigestHash or Normalize for sql.
type sqlDigester struct {
buffer bytes.Buffer
lexer *Scanner
hasher hash2.Hash
tokens tokenDeque
}
func (d *sqlDigester) doDigestNormalized(normalized string) (digest *Digest) {
b := unsafe.Slice(unsafe.StringData(normalized), len(normalized))
d.hasher.Write(b)
digest = NewDigest(d.hasher.Sum(nil))
d.hasher.Reset()
return
}
func (d *sqlDigester) doDigest(sql string) (digest *Digest) {
d.normalize(sql, errors.RedactLogEnable, false, false, false)
d.hasher.Write(d.buffer.Bytes())
d.buffer.Reset()
digest = NewDigest(d.hasher.Sum(nil))
d.hasher.Reset()
return
}
func (d *sqlDigester) doNormalize(sql string, redact string, keepHint bool) (result string) {
d.normalize(sql, redact, keepHint, false, false)
result = d.buffer.String()
d.buffer.Reset()
return
}
func (d *sqlDigester) doNormalizeForBinding(sql string, keepHint bool, forPlanReplayerReload bool) (result string) {
d.normalize(sql, errors.RedactLogEnable, keepHint, true, forPlanReplayerReload)
result = d.buffer.String()
d.buffer.Reset()
return
}
func (d *sqlDigester) doNormalizeDigest(sql string) (normalized string, digest *Digest) {
d.normalize(sql, errors.RedactLogEnable, false, false, false)
normalized = d.buffer.String()
d.hasher.Write(d.buffer.Bytes())
d.buffer.Reset()
digest = NewDigest(d.hasher.Sum(nil))
d.hasher.Reset()
return
}
func (d *sqlDigester) doNormalizeDigestForBinding(sql string) (normalized string, digest *Digest) {
d.normalize(sql, errors.RedactLogEnable, false, true, false)
normalized = d.buffer.String()
d.hasher.Write(d.buffer.Bytes())
d.buffer.Reset()
digest = NewDigest(d.hasher.Sum(nil))
d.hasher.Reset()
return
}
const (
// genericSymbol presents parameter holder ("?") in statement
// it can be any value as long as it is not repeated with other tokens.
genericSymbol = -1
// genericSymbolList presents parameter holder lists ("?, ?, ...") in statement
// it can be any value as long as it is not repeated with other tokens.
genericSymbolList = -2
)
func (d *sqlDigester) normalize(sql string, redact string, keepHint bool, forBinding bool, forPlanReplayerReload bool) {
d.lexer.reset(sql)
d.lexer.setKeepHint(keepHint)
for {
tok, pos, lit := d.lexer.scan()
if tok == invalid {
break
}
if pos.Offset == len(sql) || (pos.Offset == len(sql)-1 && sql[pos.Offset] == ';') {
break
}
currTok := token{tok, strings.ToLower(lit)}
if !keepHint && d.reduceOptimizerHint(&currTok) {
continue
}
d.reduceLit(&currTok, redact, forBinding, forPlanReplayerReload)
if forPlanReplayerReload {
// Apply for plan replayer to match specific rules, changing IN (...) to IN (?). This can avoid plan replayer load failures caused by parse errors.
d.replaceSingleLiteralWithInList(&currTok)
} else if forBinding {
// Apply binding matching specific rules, IN (?) => IN ( ... ) #44298
d.reduceInListWithSingleLiteral(&currTok)
// In (Row(...)) => In (...) #51222
d.reduceInRowListWithSingleLiteral(&currTok)
}
if currTok.tok == identifier {
if strings.HasPrefix(currTok.lit, "_") {
_, err := charset.GetCharsetInfo(currTok.lit[1:])
if err == nil {
currTok.tok = underscoreCS
goto APPEND
}
}
if tok1 := d.lexer.isTokenIdentifier(currTok.lit, pos.Offset); tok1 != 0 {
currTok.tok = tok1
}
}
APPEND:
d.tokens.pushBack(currTok)
}
d.lexer.reset("")
for i, token := range d.tokens {
if i > 0 {
d.buffer.WriteRune(' ')
}
if token.tok == singleAtIdentifier {
d.buffer.WriteString("@")
d.buffer.WriteString(token.lit)
} else if token.tok == underscoreCS {
d.buffer.WriteString("(_charset)")
} else if token.tok == identifier || token.tok == quotedIdentifier {
d.buffer.WriteByte('`')
d.buffer.WriteString(token.lit)
d.buffer.WriteByte('`')
} else {
d.buffer.WriteString(token.lit)
}
}
d.tokens.reset()
}
func (d *sqlDigester) reduceOptimizerHint(tok *token) (reduced bool) {
// ignore /*+..*/
if tok.tok == hintComment {
return
}
// ignore force/use/ignore index(x)
if tok.lit == "index" {
toks := d.tokens.back(1)
if len(toks) > 0 {
switch strings.ToLower(toks[0].lit) {
case "force", "use", "ignore":
for {
tok, _, lit := d.lexer.scan()
if (tok == 0 && d.lexer.r.eof()) || tok == invalid {
break
}
if lit == ")" {
reduced = true
d.tokens.popBack(1)
break
}
}
return
}
}
}
// ignore straight_join
if tok.lit == "straight_join" {
tok.lit = "join"
return
}
return
}
func (d *sqlDigester) reduceLit(currTok *token, redact string, forBinding bool, forPlanReplayer bool) {
if !d.isLit(*currTok) {
return
}
if redact == errors.RedactLogMarker && !forBinding && !forPlanReplayer {
switch currTok.lit {
case "?", "*":
return
}
input := currTok.lit
b := &strings.Builder{}
b.Grow(len(input))
_, _ = b.WriteRune('‹')
for _, c := range input {
if c == '‹' || c == '›' {
_, _ = b.WriteRune(c)
_, _ = b.WriteRune(c)
} else {
_, _ = b.WriteRune(c)
}
}
_, _ = b.WriteRune('›')
currTok.lit = b.String()
return
}
// count(*) => count(?)
if currTok.lit == "*" {
if d.isStarParam() {
currTok.tok = genericSymbol
currTok.lit = "?"
}
return
}
// "-x" or "+x" => "x"
if d.isPrefixByUnary(currTok.tok) {
d.tokens.popBack(1)
}
// "?, ?, ?, ?" => "..."
last2 := d.tokens.back(2)
if d.isGenericList(last2) {
d.tokens.popBack(2)
currTok.tok = genericSymbolList
currTok.lit = "..."
return
}
// "_charset ?, _charset ?," => "..."
last4 := d.tokens.back(4)
if toPop := d.isGenericListWithCharset(last4); toPop != 0 {
d.tokens.popBack(toPop)
currTok.tok = genericSymbolList
currTok.lit = "..."
return
}
// Aggressive reduce lists.
if d.isGenericLists(last4) {
d.tokens.popBack(4)
currTok.tok = genericSymbolList
currTok.lit = "..."
return
}
// reduce "In (row(...), row(...))" to "In (row(...))"
// final, it will be reduced to "In (...)". Issue: #51222
if forBinding {
last9 := d.tokens.back(9)
if d.isGenericRowListsWithIn(last9) {
d.tokens.popBack(5)
currTok.tok = genericSymbolList
currTok.lit = "..."
return
}
}
// order by n => order by n
if currTok.tok == intLit {
if d.isOrderOrGroupBy() {
return
}
}
// 2 => ?
currTok.tok = genericSymbol
currTok.lit = "?"
}
func (d *sqlDigester) isGenericLists(last4 []token) bool {
if len(last4) < 4 {
return false
}
if !(last4[0].tok == genericSymbol || last4[0].tok == genericSymbolList) {
return false
}
if last4[1].lit != ")" {
return false
}
if !d.isComma(last4[2]) {
return false
}
if last4[3].lit != "(" {
return false
}
return true
}
// In (Row(...), Row(...)) => In (Row(...))
func (d *sqlDigester) isGenericRowListsWithIn(last9 []token) bool {
if len(last9) < 7 {
return false
}
if !d.isInKeyword(last9[0]) {
return false
}
if last9[1].lit != "(" {
return false
}
if !d.isRowKeyword(last9[2]) {
return false
}
if last9[3].lit != "(" {
return false
}
if !(last9[4].tok == genericSymbol || last9[4].tok == genericSymbolList) {
return false
}
if last9[5].lit != ")" {
return false
}
if !d.isComma(last9[6]) {
return false
}
if !d.isRowKeyword(last9[7]) {
return false
}
if last9[8].lit != "(" {
return false
}
return true
}
// IN (...) => IN (?) Issue: #43192
func (d *sqlDigester) replaceSingleLiteralWithInList(currTok *token) {
last5 := d.tokens.back(5)
if len(last5) == 5 &&
d.isInKeyword(last5[0]) &&
d.isLeftParen(last5[1]) &&
last5[2].lit == "." &&
last5[3].lit == "." &&
last5[4].lit == "." &&
d.isRightParen(*currTok) {
d.tokens.popBack(3)
d.tokens.pushBack(token{genericSymbol, "?"})
return
}
}
// IN (?) => IN (...) Issue: #44298
func (d *sqlDigester) reduceInListWithSingleLiteral(currTok *token) {
last3 := d.tokens.back(3)
if len(last3) == 3 &&
d.isInKeyword(last3[0]) &&
d.isLeftParen(last3[1]) &&
last3[2].tok == genericSymbol &&
d.isRightParen(*currTok) {
d.tokens.popBack(1)
d.tokens.pushBack(token{genericSymbolList, "..."})
return
}
}
// In (Row(...)) => In (...) #51222
func (d *sqlDigester) reduceInRowListWithSingleLiteral(currTok *token) {
last5 := d.tokens.back(6)
if len(last5) == 6 &&
d.isInKeyword(last5[0]) &&
d.isLeftParen(last5[1]) &&
d.isRowKeyword(last5[2]) &&
d.isLeftParen(last5[3]) &&
(last5[4].tok == genericSymbolList || last5[4].tok == genericSymbol) &&
d.isRightParen(last5[5]) &&
d.isRightParen(*currTok) {
d.tokens.popBack(4)
d.tokens.pushBack(token{genericSymbolList, "..."})
return
}
}
func (d *sqlDigester) isPrefixByUnary(currTok int) (isUnary bool) {
if !d.isNumLit(currTok) {
return
}
last := d.tokens.back(1)
if last == nil {
return
}
// a[0] != '-' and a[0] != '+'
if last[0].lit != "-" && last[0].lit != "+" {
return
}
last2 := d.tokens.back(2)
if last2 == nil {
isUnary = true
return
}
// '(-x' or ',-x' or ',+x' or '--x' or '+-x'
switch last2[0].lit {
case "(", ",", "+", "-", ">=", "is", "<=", "=", "<", ">":
isUnary = true
default:
}
// select -x or select +x
last2Lit := strings.ToLower(last2[0].lit)
if last2Lit == "select" {
isUnary = true
}
return
}
func (d *sqlDigester) isGenericList(last2 []token) (generic bool) {
if len(last2) < 2 {
return false
}
if !d.isComma(last2[1]) {
return false
}
switch last2[0].tok {
case genericSymbol, genericSymbolList:
generic = true
default:
}
return
}
func (d *sqlDigester) isGenericListWithCharset(last []token) int {
if len(last) < 3 {
return 0
}
toPop := 0
if len(last) >= 4 {
// elminate the first _charset
if last[0].tok == underscoreCS {
toPop = 1
}
last = last[1:]
}
if last[2].tok != underscoreCS {
return 0
}
if !d.isGenericList(last[:2]) {
return 0
}
return toPop + 3
}
func (d *sqlDigester) isOrderOrGroupBy() (orderOrGroupBy bool) {
var (
last []token
n int
)
// skip number item lists, e.g. "order by 1, 2, 3" should NOT convert to "order by ?, ?, ?"
for n = 2; ; n += 2 {
last = d.tokens.back(n)
if len(last) < 2 {
return false
}
if !d.isComma(last[1]) {
break
}
}
// handle group by number item list surround by "()", e.g. "group by (1, 2)" should not convert to "group by (?, ?)"
if last[1].lit == "(" {
last = d.tokens.back(n + 1)
if len(last) < 2 {
return false
}
}
orderOrGroupBy = (last[0].lit == "order" || last[0].lit == "group") && last[1].lit == "by"
return
}
func (d *sqlDigester) isStarParam() (starParam bool) {
last := d.tokens.back(1)
if last == nil {
starParam = false
return
}
starParam = last[0].lit == "("
return
}
func (d *sqlDigester) isLit(t token) (beLit bool) {
tok := t.tok
if d.isNumLit(tok) || tok == stringLit || tok == bitLit || tok == paramMarker {
beLit = true
} else if t.lit == "*" {
beLit = true
} else if tok == null || (tok == identifier && strings.ToLower(t.lit) == "null") {
beLit = true
}
return
}
func (*sqlDigester) isNumLit(tok int) (beNum bool) {
switch tok {
case intLit, decLit, floatLit, hexLit:
beNum = true
default:
}
return
}
func (*sqlDigester) isComma(tok token) (isComma bool) {
isComma = tok.lit == ","
return
}
func (*sqlDigester) isLeftParen(tok token) (isLeftParen bool) {
isLeftParen = tok.lit == "("
return
}
func (*sqlDigester) isRightParen(tok token) (isLeftParen bool) {
isLeftParen = tok.lit == ")"
return
}
func (*sqlDigester) isInKeyword(tok token) (isInKeyword bool) {
isInKeyword = tok.lit == "in"
return
}
func (*sqlDigester) isRowKeyword(tok token) (isRowKeyword bool) {
isRowKeyword = tok.lit == "row"
return
}
type token struct {
tok int
lit string
}
type tokenDeque []token
func (s *tokenDeque) reset() {
*s = (*s)[:0]
}
func (s *tokenDeque) pushBack(t token) {
*s = append(*s, t)
}
func (s *tokenDeque) popBack(n int) (t []token) {
if len(*s) < n {
t = nil
return
}
t = (*s)[len(*s)-n:]
*s = (*s)[:len(*s)-n]
return
}
func (s *tokenDeque) back(n int) (t []token) {
if len(*s)-n < 0 {
return
}
t = (*s)[len(*s)-n:]
return
}
// Copyright 2023 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// See the License for the specific language governing permissions and
// limitations under the License.
// Package duration provides a customized duration, which supports unit 'd', 'h' and 'm'
package duration
import (
"strconv"
"time"
"unicode"
"github.com/pingcap/errors"
)
func readFloat(s string) (float64, string, error) {
numbers := ""
for pos, ch := range s {
if !unicode.IsDigit(ch) && ch != '.' {
numbers = s[:pos]
break
}
}
if len(numbers) > 0 {
i, err := strconv.ParseFloat(numbers, 64)
if err != nil {
return 0, s, err
}
return i, s[len(numbers):], nil
}
return 0, s, errors.New("fail to read an integer")
}
// ParseDuration parses the duration which contains 'd', 'h' and 'm'
func ParseDuration(s string) (time.Duration, error) {
duration := time.Duration(0)
if s == "0" {
return 0, nil
}
var err error
var i float64
for len(s) > 0 {
i, s, err = readFloat(s)
if err != nil {
return 0, err
}
switch s[0] {
case 'd':
duration += time.Duration(i * float64(time.Hour*24))
case 'h':
duration += time.Duration(i * float64(time.Hour))
case 'm':
duration += time.Duration(i * float64(time.Minute))
default:
return 0, errors.Errorf("unknown unit %c", s[0])
}
s = s[1:]
}
return duration, nil
}
// Copyright (c) 2014 The sortutil Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSES/STRUTIL-LICENSE file.
// Copyright 2015 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// See the License for the specific language governing permissions and
// limitations under the License.
package format
import (
"bytes"
"fmt"
"io"
"slices"
"strings"
)
const (
st0 = iota
stBOL
stPERC
stBOLPERC
)
// Formatter is an io.Writer extended formatter by a fmt.Printf like function Format.
type Formatter interface {
io.Writer
Format(format string, args ...any) (n int, errno error)
}
type indentFormatter struct {
io.Writer
indent []byte
indentLevel int
state int
}
var replace = map[rune]string{
'\000': "\\0",
'\'': "''",
'\n': "\\n",
'\r': "\\r",
}
// IndentFormatter returns a new Formatter which interprets %i and %u in the
// Format() formats string as indent and unindent commands. The commands can
// nest. The Formatter writes to io.Writer 'w' and inserts one 'indent'
// string per current indent level value.
// Behaviour of commands reaching negative indent levels is undefined.
//
// IndentFormatter(os.Stdout, "\t").Format("abc%d%%e%i\nx\ny\n%uz\n", 3)
//
// output:
//
// abc3%e
// x
// y
// z
//
// The Go quoted string literal form of the above is:
//
// "abc%%e\n\tx\n\tx\nz\n"
//
// The commands can be scattered between separate invocations of Format(),
// i.e. the formatter keeps track of the indent level and knows if it is
// positioned on start of a line and should emit indentation(s).
// The same output as above can be produced by e.g.:
//
// f := IndentFormatter(os.Stdout, " ")
// f.Format("abc%d%%e%i\nx\n", 3)
// f.Format("y\n%uz\n")
func IndentFormatter(w io.Writer, indent string) Formatter {
return &indentFormatter{w, []byte(indent), 0, stBOL}
}
func (f *indentFormatter) format(flat bool, format string, args ...any) (n int, errno error) {
var buf = make([]byte, 0)
for i := range len(format) {
c := format[i]
switch f.state {
case st0:
switch c {
case '\n':
cc := c
if flat && f.indentLevel != 0 {
cc = ' '
}
buf = append(buf, cc)
f.state = stBOL
case '%':
f.state = stPERC
default:
buf = append(buf, c)
}
case stBOL:
switch c {
case '\n':
cc := c
if flat && f.indentLevel != 0 {
cc = ' '
}
buf = append(buf, cc)
case '%':
f.state = stBOLPERC
default:
if !flat {
for range f.indentLevel {
buf = append(buf, f.indent...)
}
}
buf = append(buf, c)
f.state = st0
}
case stBOLPERC:
switch c {
case 'i':
f.indentLevel++
f.state = stBOL
case 'u':
f.indentLevel--
f.state = stBOL
default:
if !flat {
for range f.indentLevel {
buf = append(buf, f.indent...)
}
}
buf = append(buf, '%', c)
f.state = st0
}
case stPERC:
switch c {
case 'i':
f.indentLevel++
f.state = st0
case 'u':
f.indentLevel--
f.state = st0
default:
buf = append(buf, '%', c)
f.state = st0
}
default:
panic("unexpected state")
}
}
switch f.state {
case stPERC, stBOLPERC:
buf = append(buf, '%')
}
return fmt.Fprintf(f, string(buf), args...)
}
// Format implements Format interface.
func (f *indentFormatter) Format(format string, args ...any) (n int, errno error) {
return f.format(false, format, args...)
}
type flatFormatter indentFormatter
// FlatFormatter returns a newly created Formatter with the same functionality as the one returned
// by IndentFormatter except it allows a newline in the 'format' string argument of Format
// to pass through if the indent level is current zero.
//
// If the indent level is non-zero then such new lines are changed to a space character.
// There is no indent string, the %i and %u format verbs are used solely to determine the indent level.
//
// The FlatFormatter is intended for flattening of normally nested structure textual representation to
// a one top level structure per line form.
//
// FlatFormatter(os.Stdout, " ").Format("abc%d%%e%i\nx\ny\n%uz\n", 3)
//
// output in the form of a Go quoted string literal:
//
// "abc3%%e x y z\n"
func FlatFormatter(w io.Writer) Formatter {
return (*flatFormatter)(IndentFormatter(w, "").(*indentFormatter))
}
// Format implements Format interface.
func (f *flatFormatter) Format(format string, args ...any) (n int, errno error) {
return (*indentFormatter)(f).format(true, format, args...)
}
// OutputFormat output escape character with backslash.
func OutputFormat(s string) string {
var buf bytes.Buffer
for _, old := range s {
if newVal, ok := replace[old]; ok {
buf.WriteString(newVal)
continue
}
buf.WriteRune(old)
}
return buf.String()
}
// RestoreFlags mark the Restore format
type RestoreFlags uint64
// Mutually exclusive group of `RestoreFlags`:
// [RestoreStringSingleQuotes, RestoreStringDoubleQuotes]
// [RestoreKeyWordUppercase, RestoreKeyWordLowercase]
// [RestoreNameUppercase, RestoreNameLowercase]
// [RestoreNameDoubleQuotes, RestoreNameBackQuotes]
// The flag with the left position in each group has a higher priority.
const (
RestoreStringSingleQuotes RestoreFlags = 1 << iota
RestoreStringDoubleQuotes
RestoreStringEscapeBackslash
RestoreKeyWordUppercase
RestoreKeyWordLowercase
RestoreNameUppercase
RestoreNameLowercase
RestoreNameDoubleQuotes
RestoreNameBackQuotes
RestoreSpacesAroundBinaryOperation
RestoreBracketAroundBinaryOperation
RestoreStringWithoutCharset
RestoreStringWithoutDefaultCharset
RestoreTiDBSpecialComment
SkipPlacementRuleForRestore
RestoreWithTTLEnableOff
RestoreWithoutSchemaName
RestoreWithoutTableName
RestoreForNonPrepPlanCache
RestoreBracketAroundBetweenExpr
)
const (
// DefaultRestoreFlags is the default value of RestoreFlags.
DefaultRestoreFlags = RestoreStringSingleQuotes | RestoreKeyWordUppercase | RestoreNameBackQuotes
)
func (rf RestoreFlags) has(flag RestoreFlags) bool {
return rf&flag != 0
}
// HasWithoutSchemaNameFlag returns a boolean indicating when `rf` has `RestoreWithoutSchemaName` flag.
func (rf RestoreFlags) HasWithoutSchemaNameFlag() bool {
return rf.has(RestoreWithoutSchemaName)
}
// HasWithoutTableNameFlag returns a boolean indicating when `rf` has `RestoreWithoutTableName` flag.
func (rf RestoreFlags) HasWithoutTableNameFlag() bool {
return rf.has(RestoreWithoutTableName)
}
// HasStringSingleQuotesFlag returns a boolean indicating when `rf` has `RestoreStringSingleQuotes` flag.
func (rf RestoreFlags) HasStringSingleQuotesFlag() bool {
return rf.has(RestoreStringSingleQuotes)
}
// HasStringDoubleQuotesFlag returns a boolean indicating whether `rf` has `RestoreStringDoubleQuotes` flag.
func (rf RestoreFlags) HasStringDoubleQuotesFlag() bool {
return rf.has(RestoreStringDoubleQuotes)
}
// HasStringEscapeBackslashFlag returns a boolean indicating whether `rf` has `RestoreStringEscapeBackslash` flag.
func (rf RestoreFlags) HasStringEscapeBackslashFlag() bool {
return rf.has(RestoreStringEscapeBackslash)
}
// HasKeyWordUppercaseFlag returns a boolean indicating whether `rf` has `RestoreKeyWordUppercase` flag.
func (rf RestoreFlags) HasKeyWordUppercaseFlag() bool {
return rf.has(RestoreKeyWordUppercase)
}
// HasKeyWordLowercaseFlag returns a boolean indicating whether `rf` has `RestoreKeyWordLowercase` flag.
func (rf RestoreFlags) HasKeyWordLowercaseFlag() bool {
return rf.has(RestoreKeyWordLowercase)
}
// HasNameUppercaseFlag returns a boolean indicating whether `rf` has `RestoreNameUppercase` flag.
func (rf RestoreFlags) HasNameUppercaseFlag() bool {
return rf.has(RestoreNameUppercase)
}
// HasNameLowercaseFlag returns a boolean indicating whether `rf` has `RestoreNameLowercase` flag.
func (rf RestoreFlags) HasNameLowercaseFlag() bool {
return rf.has(RestoreNameLowercase)
}
// HasNameDoubleQuotesFlag returns a boolean indicating whether `rf` has `RestoreNameDoubleQuotes` flag.
func (rf RestoreFlags) HasNameDoubleQuotesFlag() bool {
return rf.has(RestoreNameDoubleQuotes)
}
// HasNameBackQuotesFlag returns a boolean indicating whether `rf` has `RestoreNameBackQuotes` flag.
func (rf RestoreFlags) HasNameBackQuotesFlag() bool {
return rf.has(RestoreNameBackQuotes)
}
// HasSpacesAroundBinaryOperationFlag returns a boolean indicating
// whether `rf` has `RestoreSpacesAroundBinaryOperation` flag.
func (rf RestoreFlags) HasSpacesAroundBinaryOperationFlag() bool {
return rf.has(RestoreSpacesAroundBinaryOperation)
}
// HasRestoreBracketAroundBinaryOperation returns a boolean indicating
// whether `rf` has `RestoreBracketAroundBinaryOperation` flag.
func (rf RestoreFlags) HasRestoreBracketAroundBinaryOperation() bool {
return rf.has(RestoreBracketAroundBinaryOperation)
}
// HasStringWithoutDefaultCharset returns a boolean indicating
// whether `rf` has `RestoreStringWithoutDefaultCharset` flag.
func (rf RestoreFlags) HasStringWithoutDefaultCharset() bool {
return rf.has(RestoreStringWithoutDefaultCharset)
}
// HasRestoreBracketAroundBetweenExpr returns a boolean indicating
// whether `rf` has `RestoreBracketAroundBetweenExpr` flag.
func (rf RestoreFlags) HasRestoreBracketAroundBetweenExpr() bool {
return rf.has(RestoreBracketAroundBetweenExpr)
}
// HasStringWithoutCharset returns a boolean indicating whether `rf` has `RestoreStringWithoutCharset` flag.
func (rf RestoreFlags) HasStringWithoutCharset() bool {
return rf.has(RestoreStringWithoutCharset)
}
// HasTiDBSpecialCommentFlag returns a boolean indicating whether `rf` has `RestoreTiDBSpecialComment` flag.
func (rf RestoreFlags) HasTiDBSpecialCommentFlag() bool {
return rf.has(RestoreTiDBSpecialComment)
}
// HasSkipPlacementRuleForRestoreFlag returns a boolean indicating whether `rf` has `SkipPlacementRuleForRestore` flag.
func (rf RestoreFlags) HasSkipPlacementRuleForRestoreFlag() bool {
return rf.has(SkipPlacementRuleForRestore)
}
// HasRestoreWithTTLEnableOff returns a boolean indicating
// whether to force set TTL_ENABLE='OFF' when restoring a TTL table
func (rf RestoreFlags) HasRestoreWithTTLEnableOff() bool {
return rf.has(RestoreWithTTLEnableOff)
}
// HasRestoreForNonPrepPlanCache returns a boolean indicating whether `rf` has `RestoreForNonPrepPlanCache` flag.
func (rf RestoreFlags) HasRestoreForNonPrepPlanCache() bool {
return rf.has(RestoreForNonPrepPlanCache)
}
// RestoreWriter is the interface for `Restore` to write.
type RestoreWriter interface {
io.Writer
io.StringWriter
}
// RestoreCtx is `Restore` context to hold flags and writer.
type RestoreCtx struct {
Flags RestoreFlags
In RestoreWriter
DefaultDB string
CTERestorer
}
// NewRestoreCtx returns a new `RestoreCtx`.
func NewRestoreCtx(flags RestoreFlags, in RestoreWriter) *RestoreCtx {
return &RestoreCtx{Flags: flags, In: in, DefaultDB: ""}
}
// WriteKeyWord writes the `keyWord` into writer.
// `keyWord` will be converted format(uppercase and lowercase for now) according to `RestoreFlags`.
func (ctx *RestoreCtx) WriteKeyWord(keyWord string) {
switch {
case ctx.Flags.HasKeyWordUppercaseFlag():
keyWord = strings.ToUpper(keyWord)
case ctx.Flags.HasKeyWordLowercaseFlag():
keyWord = strings.ToLower(keyWord)
}
ctx.In.WriteString(keyWord)
}
// WriteWithSpecialComments writes a string with a special comment wrapped.
func (ctx *RestoreCtx) WriteWithSpecialComments(featureID string, fn func() error) error {
if !ctx.Flags.HasTiDBSpecialCommentFlag() {
return fn()
}
ctx.WritePlain("/*T!")
if len(featureID) != 0 {
ctx.WritePlainf("[%s]", featureID)
}
ctx.WritePlain(" ")
if err := fn(); err != nil {
return err
}
ctx.WritePlain(" */")
return nil
}
// WriteKeyWordWithSpecialComments writes a keyword with a special comment wrapped.
func (ctx *RestoreCtx) WriteKeyWordWithSpecialComments(featureID string, keyWord string) {
_ = ctx.WriteWithSpecialComments(featureID, func() error {
ctx.WriteKeyWord(keyWord)
return nil
})
}
// WriteString writes the string into writer
// `str` may be wrapped in quotes and escaped according to RestoreFlags.
func (ctx *RestoreCtx) WriteString(str string) {
if ctx.Flags.HasStringEscapeBackslashFlag() {
str = strings.ReplaceAll(str, `\`, `\\`)
}
quotes := ""
switch {
case ctx.Flags.HasStringSingleQuotesFlag():
str = strings.ReplaceAll(str, `'`, `''`)
quotes = `'`
case ctx.Flags.HasStringDoubleQuotesFlag():
str = strings.ReplaceAll(str, `"`, `""`)
quotes = `"`
}
ctx.In.WriteString(quotes)
ctx.In.WriteString(str)
ctx.In.WriteString(quotes)
}
// WriteName writes the name into writer
// `name` maybe wrapped in quotes and escaped according to RestoreFlags.
func (ctx *RestoreCtx) WriteName(name string) {
switch {
case ctx.Flags.HasNameUppercaseFlag():
name = strings.ToUpper(name)
case ctx.Flags.HasNameLowercaseFlag():
name = strings.ToLower(name)
}
quotes := ""
switch {
case ctx.Flags.HasNameDoubleQuotesFlag():
name = strings.ReplaceAll(name, `"`, `""`)
quotes = `"`
case ctx.Flags.HasNameBackQuotesFlag():
name = strings.ReplaceAll(name, "`", "``")
quotes = "`"
}
// use `WriteString` directly instead of `fmt.Fprint` to get a better performance.
ctx.In.WriteString(quotes)
ctx.In.WriteString(name)
ctx.In.WriteString(quotes)
}
// WritePlain writes the plain text into writer without any handling.
func (ctx *RestoreCtx) WritePlain(plainText string) {
ctx.In.WriteString(plainText)
}
// WritePlainf write the plain text into writer without any handling.
func (ctx *RestoreCtx) WritePlainf(format string, a ...any) {
fmt.Fprintf(ctx.In, format, a...)
}
// CTERestorer is used by WithClause related nodes restore.
type CTERestorer struct {
CTENames []string
}
// IsCTETableName returns true if the given tableName comes from CTE.
func (c *CTERestorer) IsCTETableName(nameL string) bool {
return slices.Contains(c.CTENames, nameL)
}
// RecordCTEName records the CTE name.
func (c *CTERestorer) RecordCTEName(nameL string) {
c.CTENames = append(c.CTENames, nameL)
}
// RestoreCTEFunc is used to restore CTE.
func (c *CTERestorer) RestoreCTEFunc() func() {
l := len(c.CTENames)
return func() {
if l == 0 {
c.CTENames = nil
} else {
c.CTENames = c.CTENames[:l]
}
}
}
// Code generated by goyacc DO NOT EDIT.
// Copyright 2020 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// See the License for the specific language governing permissions and
// limitations under the License.
package parser
import __yyfmt__ "fmt"
import (
"math"
"strconv"
"github.com/pingcap/tidb/pkg/parser/ast"
)
type yyhintSymType struct {
yys int
offset int
ident string
number uint64
hint *ast.TableOptimizerHint
hints []*ast.TableOptimizerHint
table ast.HintTable
modelIdents []ast.CIStr
}
type yyhintXError struct {
state, xsym int
}
const (
yyhintDefault = 57434
yyhintEOFCode = 57344
yyhintErrCode = 57345
hintAggToCop = 57380
hintBCJoin = 57402
hintBKA = 57355
hintBNL = 57357
hintDupsWeedOut = 57430
hintFalse = 57426
hintFirstMatch = 57431
hintForceIndex = 57416
hintGB = 57429
hintHashAgg = 57382
hintHashJoin = 57359
hintHashJoinBuild = 57360
hintHashJoinProbe = 57361
hintHypoIndex = 57379
hintIdentifier = 57347
hintIgnoreIndex = 57385
hintIgnorePlanCache = 57381
hintIndexHashJoin = 57389
hintIndexJoin = 57386
hintIndexMerge = 57365
hintIndexMergeJoin = 57393
hintInlHashJoin = 57388
hintInlJoin = 57391
hintInlMergeJoin = 57392
hintIntLit = 57346
hintInvalid = 57348
hintJoinFixedOrder = 57351
hintJoinOrder = 57352
hintJoinPrefix = 57353
hintJoinSuffix = 57354
hintLeading = 57418
hintLimitToCop = 57415
hintLooseScan = 57432
hintMB = 57428
hintMRR = 57367
hintMaterialization = 57433
hintMaxExecutionTime = 57375
hintMemoryQuota = 57395
hintMerge = 57363
hintMpp1PhaseAgg = 57383
hintMpp2PhaseAgg = 57384
hintNoBKA = 57356
hintNoBNL = 57358
hintNoDecorrelate = 57420
hintNoHashJoin = 57362
hintNoICP = 57369
hintNoIndexHashJoin = 57390
hintNoIndexJoin = 57387
hintNoIndexMerge = 57366
hintNoIndexMergeJoin = 57394
hintNoMRR = 57368
hintNoMerge = 57364
hintNoOrderIndex = 57409
hintNoRangeOptimization = 57370
hintNoSMJoin = 57401
hintNoSemijoin = 57374
hintNoSkipScan = 57372
hintNoSwapJoinInputs = 57396
hintNthPlan = 57414
hintOLAP = 57421
hintOLTP = 57422
hintOrderIndex = 57408
hintPartition = 57423
hintQBName = 57378
hintQueryType = 57397
hintReadConsistentReplica = 57398
hintReadFromStorage = 57399
hintResourceGroup = 57377
hintSMJoin = 57400
hintSemiJoinRewrite = 57419
hintSemijoin = 57373
hintSetVar = 57376
hintShuffleJoin = 57403
hintSingleAtIdentifier = 57349
hintSkipScan = 57371
hintStraightJoin = 57417
hintStreamAgg = 57404
hintStringLit = 57350
hintSwapJoinInputs = 57405
hintTiFlash = 57425
hintTiKV = 57424
hintTimeRange = 57412
hintTrue = 57427
hintUseCascades = 57413
hintUseIndex = 57407
hintUseIndexMerge = 57406
hintUsePlanCache = 57410
hintUseToja = 57411
yyhintMaxDepth = 200
yyhintTabOfs = -219
)
var (
yyhintXLAT = map[int]int{
41: 0, // ')' (163x)
57380: 1, // hintAggToCop (152x)
57402: 2, // hintBCJoin (152x)
57355: 3, // hintBKA (152x)
57357: 4, // hintBNL (152x)
57416: 5, // hintForceIndex (152x)
57382: 6, // hintHashAgg (152x)
57359: 7, // hintHashJoin (152x)
57360: 8, // hintHashJoinBuild (152x)
57361: 9, // hintHashJoinProbe (152x)
57379: 10, // hintHypoIndex (152x)
57347: 11, // hintIdentifier (152x)
57385: 12, // hintIgnoreIndex (152x)
57381: 13, // hintIgnorePlanCache (152x)
57389: 14, // hintIndexHashJoin (152x)
57386: 15, // hintIndexJoin (152x)
57365: 16, // hintIndexMerge (152x)
57393: 17, // hintIndexMergeJoin (152x)
57388: 18, // hintInlHashJoin (152x)
57391: 19, // hintInlJoin (152x)
57392: 20, // hintInlMergeJoin (152x)
57351: 21, // hintJoinFixedOrder (152x)
57352: 22, // hintJoinOrder (152x)
57353: 23, // hintJoinPrefix (152x)
57354: 24, // hintJoinSuffix (152x)
57418: 25, // hintLeading (152x)
57415: 26, // hintLimitToCop (152x)
57375: 27, // hintMaxExecutionTime (152x)
57395: 28, // hintMemoryQuota (152x)
57363: 29, // hintMerge (152x)
57383: 30, // hintMpp1PhaseAgg (152x)
57384: 31, // hintMpp2PhaseAgg (152x)
57367: 32, // hintMRR (152x)
57356: 33, // hintNoBKA (152x)
57358: 34, // hintNoBNL (152x)
57420: 35, // hintNoDecorrelate (152x)
57362: 36, // hintNoHashJoin (152x)
57369: 37, // hintNoICP (152x)
57390: 38, // hintNoIndexHashJoin (152x)
57387: 39, // hintNoIndexJoin (152x)
57366: 40, // hintNoIndexMerge (152x)
57394: 41, // hintNoIndexMergeJoin (152x)
57364: 42, // hintNoMerge (152x)
57368: 43, // hintNoMRR (152x)
57409: 44, // hintNoOrderIndex (152x)
57370: 45, // hintNoRangeOptimization (152x)
57374: 46, // hintNoSemijoin (152x)
57372: 47, // hintNoSkipScan (152x)
57401: 48, // hintNoSMJoin (152x)
57396: 49, // hintNoSwapJoinInputs (152x)
57414: 50, // hintNthPlan (152x)
57408: 51, // hintOrderIndex (152x)
57378: 52, // hintQBName (152x)
57397: 53, // hintQueryType (152x)
57398: 54, // hintReadConsistentReplica (152x)
57399: 55, // hintReadFromStorage (152x)
57377: 56, // hintResourceGroup (152x)
57373: 57, // hintSemijoin (152x)
57419: 58, // hintSemiJoinRewrite (152x)
57376: 59, // hintSetVar (152x)
57403: 60, // hintShuffleJoin (152x)
57371: 61, // hintSkipScan (152x)
57400: 62, // hintSMJoin (152x)
57417: 63, // hintStraightJoin (152x)
57404: 64, // hintStreamAgg (152x)
57405: 65, // hintSwapJoinInputs (152x)
57412: 66, // hintTimeRange (152x)
57413: 67, // hintUseCascades (152x)
57407: 68, // hintUseIndex (152x)
57406: 69, // hintUseIndexMerge (152x)
57410: 70, // hintUsePlanCache (152x)
57411: 71, // hintUseToja (152x)
44: 72, // ',' (146x)
57430: 73, // hintDupsWeedOut (125x)
57431: 74, // hintFirstMatch (125x)
57432: 75, // hintLooseScan (125x)
57433: 76, // hintMaterialization (125x)
57425: 77, // hintTiFlash (125x)
57424: 78, // hintTiKV (125x)
57426: 79, // hintFalse (124x)
57421: 80, // hintOLAP (124x)
57422: 81, // hintOLTP (124x)
57427: 82, // hintTrue (124x)
57429: 83, // hintGB (123x)
57428: 84, // hintMB (123x)
57349: 85, // hintSingleAtIdentifier (104x)
57346: 86, // hintIntLit (101x)
93: 87, // ']' (94x)
46: 88, // '.' (93x)
57423: 89, // hintPartition (88x)
61: 90, // '=' (85x)
40: 91, // '(' (80x)
57344: 92, // $end (29x)
57454: 93, // QueryBlockOpt (21x)
57446: 94, // Identifier (18x)
57350: 95, // hintStringLit (6x)
57436: 96, // CommaOpt (5x)
57442: 97, // HintTable (4x)
57443: 98, // HintTableList (4x)
91: 99, // '[' (3x)
43: 100, // '+' (2x)
45: 101, // '-' (2x)
57435: 102, // BooleanHintName (2x)
57437: 103, // HintIndexList (2x)
57439: 104, // HintStorageType (2x)
57440: 105, // HintStorageTypeAndTable (2x)
57444: 106, // HintTableListOpt (2x)
57449: 107, // JoinOrderOptimizerHintName (2x)
57450: 108, // NullaryHintName (2x)
57452: 109, // PartitionList (2x)
57453: 110, // PartitionListOpt (2x)
57456: 111, // StorageOptimizerHintOpt (2x)
57457: 112, // SubqueryOptimizerHintName (2x)
57460: 113, // SubqueryStrategy (2x)
57461: 114, // SupportedIndexLevelOptimizerHintName (2x)
57462: 115, // SupportedTableLevelOptimizerHintName (2x)
57463: 116, // TableOptimizerHintOpt (2x)
57465: 117, // UnsupportedIndexLevelOptimizerHintName (2x)
57466: 118, // UnsupportedTableLevelOptimizerHintName (2x)
57467: 119, // Value (2x)
57468: 120, // ViewName (2x)
57438: 121, // HintQueryType (1x)
57441: 122, // HintStorageTypeAndTableList (1x)
57445: 123, // HintTrueOrFalse (1x)
57447: 124, // IndexNameList (1x)
57448: 125, // IndexNameListOpt (1x)
57451: 126, // OptimizerHintList (1x)
57455: 127, // Start (1x)
57458: 128, // SubqueryStrategies (1x)
57459: 129, // SubqueryStrategiesOpt (1x)
57464: 130, // UnitOfBytes (1x)
57469: 131, // ViewNameList (1x)
57434: 132, // $default (0x)
57345: 133, // error (0x)
57348: 134, // hintInvalid (0x)
}
yyhintSymNames = []string{
"')'",
"hintAggToCop",
"hintBCJoin",
"hintBKA",
"hintBNL",
"hintForceIndex",
"hintHashAgg",
"hintHashJoin",
"hintHashJoinBuild",
"hintHashJoinProbe",
"hintHypoIndex",
"hintIdentifier",
"hintIgnoreIndex",
"hintIgnorePlanCache",
"hintIndexHashJoin",
"hintIndexJoin",
"hintIndexMerge",
"hintIndexMergeJoin",
"hintInlHashJoin",
"hintInlJoin",
"hintInlMergeJoin",
"hintJoinFixedOrder",
"hintJoinOrder",
"hintJoinPrefix",
"hintJoinSuffix",
"hintLeading",
"hintLimitToCop",
"hintMaxExecutionTime",
"hintMemoryQuota",
"hintMerge",
"hintMpp1PhaseAgg",
"hintMpp2PhaseAgg",
"hintMRR",
"hintNoBKA",
"hintNoBNL",
"hintNoDecorrelate",
"hintNoHashJoin",
"hintNoICP",
"hintNoIndexHashJoin",
"hintNoIndexJoin",
"hintNoIndexMerge",
"hintNoIndexMergeJoin",
"hintNoMerge",
"hintNoMRR",
"hintNoOrderIndex",
"hintNoRangeOptimization",
"hintNoSemijoin",
"hintNoSkipScan",
"hintNoSMJoin",
"hintNoSwapJoinInputs",
"hintNthPlan",
"hintOrderIndex",
"hintQBName",
"hintQueryType",
"hintReadConsistentReplica",
"hintReadFromStorage",
"hintResourceGroup",
"hintSemijoin",
"hintSemiJoinRewrite",
"hintSetVar",
"hintShuffleJoin",
"hintSkipScan",
"hintSMJoin",
"hintStraightJoin",
"hintStreamAgg",
"hintSwapJoinInputs",
"hintTimeRange",
"hintUseCascades",
"hintUseIndex",
"hintUseIndexMerge",
"hintUsePlanCache",
"hintUseToja",
"','",
"hintDupsWeedOut",
"hintFirstMatch",
"hintLooseScan",
"hintMaterialization",
"hintTiFlash",
"hintTiKV",
"hintFalse",
"hintOLAP",
"hintOLTP",
"hintTrue",
"hintGB",
"hintMB",
"hintSingleAtIdentifier",
"hintIntLit",
"']'",
"'.'",
"hintPartition",
"'='",
"'('",
"$end",
"QueryBlockOpt",
"Identifier",
"hintStringLit",
"CommaOpt",
"HintTable",
"HintTableList",
"'['",
"'+'",
"'-'",
"BooleanHintName",
"HintIndexList",
"HintStorageType",
"HintStorageTypeAndTable",
"HintTableListOpt",
"JoinOrderOptimizerHintName",
"NullaryHintName",
"PartitionList",
"PartitionListOpt",
"StorageOptimizerHintOpt",
"SubqueryOptimizerHintName",
"SubqueryStrategy",
"SupportedIndexLevelOptimizerHintName",
"SupportedTableLevelOptimizerHintName",
"TableOptimizerHintOpt",
"UnsupportedIndexLevelOptimizerHintName",
"UnsupportedTableLevelOptimizerHintName",
"Value",
"ViewName",
"HintQueryType",
"HintStorageTypeAndTableList",
"HintTrueOrFalse",
"IndexNameList",
"IndexNameListOpt",
"OptimizerHintList",
"Start",
"SubqueryStrategies",
"SubqueryStrategiesOpt",
"UnitOfBytes",
"ViewNameList",
"$default",
"error",
"hintInvalid",
}
yyhintReductions = []struct{ xsym, components int }{
{0, 1},
{127, 1},
{126, 1},
{126, 3},
{126, 1},
{126, 3},
{116, 4},
{116, 4},
{116, 4},
{116, 4},
{116, 4},
{116, 4},
{116, 5},
{116, 5},
{116, 5},
{116, 6},
{116, 4},
{116, 4},
{116, 6},
{116, 6},
{116, 6},
{116, 5},
{116, 4},
{116, 5},
{116, 5},
{116, 4},
{116, 6},
{116, 6},
{111, 5},
{122, 1},
{122, 3},
{105, 4},
{93, 0},
{93, 1},
{96, 0},
{96, 1},
{110, 0},
{110, 4},
{109, 1},
{109, 3},
{106, 1},
{106, 1},
{98, 2},
{98, 3},
{97, 3},
{97, 5},
{131, 3},
{131, 1},
{120, 2},
{120, 1},
{103, 4},
{125, 0},
{125, 1},
{124, 1},
{124, 3},
{129, 0},
{129, 1},
{128, 1},
{128, 3},
{119, 1},
{119, 1},
{119, 1},
{119, 2},
{119, 2},
{130, 1},
{130, 1},
{123, 1},
{123, 1},
{107, 1},
{107, 1},
{107, 1},
{118, 1},
{118, 1},
{118, 1},
{118, 1},
{118, 1},
{115, 1},
{115, 1},
{115, 1},
{115, 1},
{115, 1},
{115, 1},
{115, 1},
{115, 1},
{115, 1},
{115, 1},
{115, 1},
{115, 1},
{115, 1},
{115, 1},
{115, 1},
{115, 1},
{115, 1},
{115, 1},
{115, 1},
{115, 1},
{115, 1},
{115, 1},
{117, 1},
{117, 1},
{117, 1},
{117, 1},
{117, 1},
{117, 1},
{117, 1},
{114, 1},
{114, 1},
{114, 1},
{114, 1},
{114, 1},
{114, 1},
{112, 1},
{112, 1},
{113, 1},
{113, 1},
{113, 1},
{113, 1},
{102, 1},
{102, 1},
{108, 1},
{108, 1},
{108, 1},
{108, 1},
{108, 1},
{108, 1},
{108, 1},
{108, 1},
{108, 1},
{108, 1},
{108, 1},
{108, 1},
{108, 1},
{121, 1},
{121, 1},
{104, 1},
{104, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
{94, 1},
}
yyhintXErrors = map[yyhintXError]string{}
yyhintParseTab = [318][]uint16{
// 0
{1: 295, 253, 246, 248, 283, 291, 267, 269, 270, 272, 241, 281, 299, 260, 256, 273, 265, 259, 255, 264, 224, 243, 244, 245, 271, 296, 231, 236, 258, 292, 293, 274, 247, 249, 302, 268, 276, 261, 257, 297, 266, 250, 275, 285, 277, 287, 279, 252, 263, 232, 284, 235, 240, 298, 242, 234, 286, 301, 233, 254, 278, 251, 300, 294, 262, 237, 289, 280, 282, 290, 288, 102: 238, 107: 225, 239, 111: 223, 230, 114: 229, 227, 222, 228, 226, 126: 221, 220},
{92: 219},
{1: 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 408, 92: 218, 96: 534},
{1: 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 92: 217},
{1: 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 92: 215},
// 5
{91: 531},
{91: 528},
{91: 525},
{91: 520},
{91: 517},
// 10
{91: 506},
{91: 494},
{91: 490},
{91: 486},
{91: 481},
// 15
{91: 478},
{91: 466},
{91: 459},
{91: 454},
{91: 448},
// 20
{91: 445},
{91: 439},
{91: 419},
{91: 303},
{91: 151},
// 25
{91: 150},
{91: 149},
{91: 148},
{91: 147},
{91: 146},
// 30
{91: 145},
{91: 144},
{91: 143},
{91: 142},
{91: 141},
// 35
{91: 140},
{91: 139},
{91: 138},
{91: 137},
{91: 136},
// 40
{91: 135},
{91: 134},
{91: 133},
{91: 132},
{91: 131},
// 45
{91: 130},
{91: 129},
{91: 128},
{91: 127},
{91: 126},
// 50
{91: 125},
{91: 124},
{91: 123},
{91: 122},
{91: 121},
// 55
{91: 120},
{91: 119},
{91: 118},
{91: 117},
{91: 116},
// 60
{91: 115},
{91: 114},
{91: 113},
{91: 112},
{91: 111},
// 65
{91: 110},
{91: 109},
{91: 108},
{91: 107},
{91: 102},
// 70
{91: 101},
{91: 100},
{91: 99},
{91: 98},
{91: 97},
// 75
{91: 96},
{91: 95},
{91: 94},
{91: 93},
{91: 92},
// 80
{91: 91},
{91: 90},
{91: 89},
{91: 88},
{77: 187, 187, 85: 305, 93: 304},
// 85
{77: 310, 309, 104: 308, 307, 122: 306},
{186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 86: 186, 186, 186, 186},
{416, 72: 417},
{190, 72: 190},
{99: 311},
// 90
{99: 85},
{99: 84},
{1: 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 73: 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 305, 93: 313, 98: 312},
{72: 414, 87: 413},
{1: 346, 369, 321, 323, 382, 349, 325, 326, 327, 345, 316, 352, 348, 354, 357, 331, 360, 353, 356, 359, 317, 318, 319, 320, 384, 347, 341, 362, 329, 350, 351, 333, 322, 324, 386, 328, 335, 355, 358, 332, 361, 330, 334, 376, 336, 340, 338, 368, 363, 381, 375, 344, 364, 365, 366, 343, 339, 385, 342, 370, 337, 367, 383, 371, 372, 379, 380, 374, 373, 377, 378, 73: 395, 396, 397, 398, 390, 389, 391, 387, 388, 392, 394, 393, 94: 315, 97: 314},
// 95
{177, 72: 177, 87: 177},
{187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 305, 87: 187, 400, 187, 93: 399},
{83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83},
{82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82},
{81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81},
// 100
{80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80},
{79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79},
{78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78},
{77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77},
{76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76},
// 105
{75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75},
{74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74},
{73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73},
{72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72},
{71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71},
// 110
{70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70},
{69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69},
{68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68},
{67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67},
{66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66},
// 115
{65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65},
{64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64},
{63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63},
{62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62},
{61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61},
// 120
{60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60},
{59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59},
{58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58},
{57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57},
{56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56},
// 125
{55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55},
{54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54},
{53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53},
{52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52},
{51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51},
// 130
{50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50},
{49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49},
{48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48},
{47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47},
{46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46},
// 135
{45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45},
{44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44},
{43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43},
{42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42},
{41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41},
// 140
{40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40},
{39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39},
{38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38},
{37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37},
{36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36},
// 145
{35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35},
{34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34},
{33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33},
{32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
{31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31},
// 150
{30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30},
{29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29},
{28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28},
{27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27},
{26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26},
// 155
{25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25},
{24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24},
{23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23},
{22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22},
{21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21},
// 160
{20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20},
{19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19},
{18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18},
{17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17},
{16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
// 165
{15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15},
{14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14},
{13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13},
{12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12},
{11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11},
// 170
{10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10},
{9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9},
{8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8},
{7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7},
{6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6},
// 175
{5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5},
{4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4},
{3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3},
{2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
// 180
{183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 87: 183, 89: 403, 110: 412},
{1: 346, 369, 321, 323, 382, 349, 325, 326, 327, 345, 316, 352, 348, 354, 357, 331, 360, 353, 356, 359, 317, 318, 319, 320, 384, 347, 341, 362, 329, 350, 351, 333, 322, 324, 386, 328, 335, 355, 358, 332, 361, 330, 334, 376, 336, 340, 338, 368, 363, 381, 375, 344, 364, 365, 366, 343, 339, 385, 342, 370, 337, 367, 383, 371, 372, 379, 380, 374, 373, 377, 378, 73: 395, 396, 397, 398, 390, 389, 391, 387, 388, 392, 394, 393, 94: 401},
{187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 305, 87: 187, 89: 187, 93: 402},
{183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 87: 183, 89: 403, 110: 404},
{91: 405},
// 185
{174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 87: 174},
{1: 346, 369, 321, 323, 382, 349, 325, 326, 327, 345, 316, 352, 348, 354, 357, 331, 360, 353, 356, 359, 317, 318, 319, 320, 384, 347, 341, 362, 329, 350, 351, 333, 322, 324, 386, 328, 335, 355, 358, 332, 361, 330, 334, 376, 336, 340, 338, 368, 363, 381, 375, 344, 364, 365, 366, 343, 339, 385, 342, 370, 337, 367, 383, 371, 372, 379, 380, 374, 373, 377, 378, 73: 395, 396, 397, 398, 390, 389, 391, 387, 388, 392, 394, 393, 94: 407, 109: 406},
{409, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 408, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 96: 410},
{181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181},
{184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 73: 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 86: 184, 95: 184},
// 190
{182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 87: 182},
{1: 346, 369, 321, 323, 382, 349, 325, 326, 327, 345, 316, 352, 348, 354, 357, 331, 360, 353, 356, 359, 317, 318, 319, 320, 384, 347, 341, 362, 329, 350, 351, 333, 322, 324, 386, 328, 335, 355, 358, 332, 361, 330, 334, 376, 336, 340, 338, 368, 363, 381, 375, 344, 364, 365, 366, 343, 339, 385, 342, 370, 337, 367, 383, 371, 372, 379, 380, 374, 373, 377, 378, 73: 395, 396, 397, 398, 390, 389, 391, 387, 388, 392, 394, 393, 94: 411},
{180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 86: 180},
{175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 87: 175},
{188, 72: 188},
// 195
{1: 346, 369, 321, 323, 382, 349, 325, 326, 327, 345, 316, 352, 348, 354, 357, 331, 360, 353, 356, 359, 317, 318, 319, 320, 384, 347, 341, 362, 329, 350, 351, 333, 322, 324, 386, 328, 335, 355, 358, 332, 361, 330, 334, 376, 336, 340, 338, 368, 363, 381, 375, 344, 364, 365, 366, 343, 339, 385, 342, 370, 337, 367, 383, 371, 372, 379, 380, 374, 373, 377, 378, 73: 395, 396, 397, 398, 390, 389, 391, 387, 388, 392, 394, 393, 94: 315, 97: 415},
{176, 72: 176, 87: 176},
{1: 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 92: 191},
{77: 310, 309, 104: 308, 418},
{189, 72: 189},
// 200
{1: 346, 369, 321, 323, 382, 349, 325, 326, 327, 345, 316, 352, 348, 354, 357, 331, 360, 353, 356, 359, 317, 318, 319, 320, 384, 347, 341, 362, 329, 350, 351, 333, 322, 324, 386, 328, 335, 355, 358, 332, 361, 330, 334, 376, 336, 340, 338, 368, 363, 381, 375, 344, 364, 365, 366, 343, 339, 385, 342, 370, 337, 367, 383, 371, 372, 379, 380, 374, 373, 377, 378, 73: 395, 396, 397, 398, 390, 389, 391, 387, 388, 392, 394, 393, 305, 187, 93: 420, 422, 109: 421},
{86: 437},
{433, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 408, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 86: 185, 96: 434},
{181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 86: 181, 90: 423},
{1: 346, 369, 321, 323, 382, 349, 325, 326, 327, 345, 316, 352, 348, 354, 357, 331, 360, 353, 356, 359, 317, 318, 319, 320, 384, 347, 341, 362, 329, 350, 351, 333, 322, 324, 386, 328, 335, 355, 358, 332, 361, 330, 334, 376, 336, 340, 338, 368, 363, 381, 375, 344, 364, 365, 366, 343, 339, 385, 342, 370, 337, 367, 383, 371, 372, 379, 380, 374, 373, 377, 378, 73: 395, 396, 397, 398, 390, 389, 391, 387, 388, 392, 394, 393, 86: 427, 94: 426, 425, 100: 428, 429, 119: 424},
// 205
{432},
{160},
{159},
{158},
{86: 431},
// 210
{86: 430},
{156},
{157},
{1: 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 92: 192},
{1: 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 92: 194},
// 215
{1: 346, 369, 321, 323, 382, 349, 325, 326, 327, 345, 316, 352, 348, 354, 357, 331, 360, 353, 356, 359, 317, 318, 319, 320, 384, 347, 341, 362, 329, 350, 351, 333, 322, 324, 386, 328, 335, 355, 358, 332, 361, 330, 334, 376, 336, 340, 338, 368, 363, 381, 375, 344, 364, 365, 366, 343, 339, 385, 342, 370, 337, 367, 383, 371, 372, 379, 380, 374, 373, 377, 378, 73: 395, 396, 397, 398, 390, 389, 391, 387, 388, 392, 394, 393, 86: 435, 94: 411},
{436},
{1: 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 92: 193},
{438},
{1: 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 92: 195},
// 220
{80: 187, 187, 85: 305, 93: 440},
{80: 442, 443, 121: 441},
{444},
{87},
{86},
// 225
{1: 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 92: 196},
{187, 85: 305, 93: 446},
{447},
{1: 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 92: 197},
{79: 187, 82: 187, 85: 305, 93: 449},
// 230
{79: 452, 82: 451, 123: 450},
{453},
{153},
{152},
{1: 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 92: 198},
// 235
{95: 455},
{72: 408, 95: 185, 456},
{95: 457},
{458},
{1: 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 92: 199},
// 240
{85: 305, 187, 93: 460},
{86: 461},
{83: 464, 463, 130: 462},
{465},
{155},
// 245
{154},
{1: 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 92: 200},
{1: 346, 369, 321, 323, 382, 349, 325, 326, 327, 345, 316, 352, 348, 354, 357, 331, 360, 353, 356, 359, 317, 318, 319, 320, 384, 347, 341, 362, 329, 350, 351, 333, 322, 324, 386, 328, 335, 355, 358, 332, 361, 330, 334, 376, 336, 340, 338, 368, 363, 381, 375, 344, 364, 365, 366, 343, 339, 385, 342, 370, 337, 367, 383, 371, 372, 379, 380, 374, 373, 377, 378, 73: 395, 396, 397, 398, 390, 389, 391, 387, 388, 392, 394, 393, 94: 467},
{468, 72: 469},
{1: 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 92: 202},
// 250
{187, 346, 369, 321, 323, 382, 349, 325, 326, 327, 345, 316, 352, 348, 354, 357, 331, 360, 353, 356, 359, 317, 318, 319, 320, 384, 347, 341, 362, 329, 350, 351, 333, 322, 324, 386, 328, 335, 355, 358, 332, 361, 330, 334, 376, 336, 340, 338, 368, 363, 381, 375, 344, 364, 365, 366, 343, 339, 385, 342, 370, 337, 367, 383, 371, 372, 379, 380, 374, 373, 377, 378, 73: 395, 396, 397, 398, 390, 389, 391, 387, 388, 392, 394, 393, 305, 88: 187, 93: 473, 472, 120: 471, 131: 470},
{475, 88: 476},
{172, 88: 172},
{187, 85: 305, 88: 187, 93: 474},
{170, 88: 170},
// 255
{171, 88: 171},
{1: 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 92: 201},
{187, 346, 369, 321, 323, 382, 349, 325, 326, 327, 345, 316, 352, 348, 354, 357, 331, 360, 353, 356, 359, 317, 318, 319, 320, 384, 347, 341, 362, 329, 350, 351, 333, 322, 324, 386, 328, 335, 355, 358, 332, 361, 330, 334, 376, 336, 340, 338, 368, 363, 381, 375, 344, 364, 365, 366, 343, 339, 385, 342, 370, 337, 367, 383, 371, 372, 379, 380, 374, 373, 377, 378, 73: 395, 396, 397, 398, 390, 389, 391, 387, 388, 392, 394, 393, 305, 88: 187, 93: 473, 472, 120: 477},
{173, 88: 173},
{1: 346, 369, 321, 323, 382, 349, 325, 326, 327, 345, 316, 352, 348, 354, 357, 331, 360, 353, 356, 359, 317, 318, 319, 320, 384, 347, 341, 362, 329, 350, 351, 333, 322, 324, 386, 328, 335, 355, 358, 332, 361, 330, 334, 376, 336, 340, 338, 368, 363, 381, 375, 344, 364, 365, 366, 343, 339, 385, 342, 370, 337, 367, 383, 371, 372, 379, 380, 374, 373, 377, 378, 73: 395, 396, 397, 398, 390, 389, 391, 387, 388, 392, 394, 393, 94: 479},
// 260
{480},
{1: 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 92: 203},
{1: 346, 369, 321, 323, 382, 349, 325, 326, 327, 345, 316, 352, 348, 354, 357, 331, 360, 353, 356, 359, 317, 318, 319, 320, 384, 347, 341, 362, 329, 350, 351, 333, 322, 324, 386, 328, 335, 355, 358, 332, 361, 330, 334, 376, 336, 340, 338, 368, 363, 381, 375, 344, 364, 365, 366, 343, 339, 385, 342, 370, 337, 367, 383, 371, 372, 379, 380, 374, 373, 377, 378, 73: 395, 396, 397, 398, 390, 389, 391, 387, 388, 392, 394, 393, 94: 482},
{90: 483},
{1: 346, 369, 321, 323, 382, 349, 325, 326, 327, 345, 316, 352, 348, 354, 357, 331, 360, 353, 356, 359, 317, 318, 319, 320, 384, 347, 341, 362, 329, 350, 351, 333, 322, 324, 386, 328, 335, 355, 358, 332, 361, 330, 334, 376, 336, 340, 338, 368, 363, 381, 375, 344, 364, 365, 366, 343, 339, 385, 342, 370, 337, 367, 383, 371, 372, 379, 380, 374, 373, 377, 378, 73: 395, 396, 397, 398, 390, 389, 391, 387, 388, 392, 394, 393, 86: 427, 94: 426, 425, 100: 428, 429, 119: 484},
// 265
{485},
{1: 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 92: 204},
{85: 305, 187, 93: 487},
{86: 488},
{489},
// 270
{1: 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 92: 205},
{85: 305, 187, 93: 491},
{86: 492},
{493},
{1: 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 92: 206},
// 275
{187, 73: 187, 187, 187, 187, 85: 305, 93: 495},
{164, 73: 499, 500, 501, 502, 113: 498, 128: 497, 496},
{505},
{163, 72: 503},
{162, 72: 162},
// 280
{106, 72: 106},
{105, 72: 105},
{104, 72: 104},
{103, 72: 103},
{73: 499, 500, 501, 502, 113: 504},
// 285
{161, 72: 161},
{1: 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 92: 207},
{1: 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 73: 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 305, 93: 508, 103: 507},
{516},
{1: 346, 369, 321, 323, 382, 349, 325, 326, 327, 345, 316, 352, 348, 354, 357, 331, 360, 353, 356, 359, 317, 318, 319, 320, 384, 347, 341, 362, 329, 350, 351, 333, 322, 324, 386, 328, 335, 355, 358, 332, 361, 330, 334, 376, 336, 340, 338, 368, 363, 381, 375, 344, 364, 365, 366, 343, 339, 385, 342, 370, 337, 367, 383, 371, 372, 379, 380, 374, 373, 377, 378, 73: 395, 396, 397, 398, 390, 389, 391, 387, 388, 392, 394, 393, 94: 315, 97: 509},
// 290
{185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 408, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 96: 510},
{168, 346, 369, 321, 323, 382, 349, 325, 326, 327, 345, 316, 352, 348, 354, 357, 331, 360, 353, 356, 359, 317, 318, 319, 320, 384, 347, 341, 362, 329, 350, 351, 333, 322, 324, 386, 328, 335, 355, 358, 332, 361, 330, 334, 376, 336, 340, 338, 368, 363, 381, 375, 344, 364, 365, 366, 343, 339, 385, 342, 370, 337, 367, 383, 371, 372, 379, 380, 374, 373, 377, 378, 73: 395, 396, 397, 398, 390, 389, 391, 387, 388, 392, 394, 393, 94: 513, 124: 512, 511},
{169},
{167, 72: 514},
{166, 72: 166},
// 295
{1: 346, 369, 321, 323, 382, 349, 325, 326, 327, 345, 316, 352, 348, 354, 357, 331, 360, 353, 356, 359, 317, 318, 319, 320, 384, 347, 341, 362, 329, 350, 351, 333, 322, 324, 386, 328, 335, 355, 358, 332, 361, 330, 334, 376, 336, 340, 338, 368, 363, 381, 375, 344, 364, 365, 366, 343, 339, 385, 342, 370, 337, 367, 383, 371, 372, 379, 380, 374, 373, 377, 378, 73: 395, 396, 397, 398, 390, 389, 391, 387, 388, 392, 394, 393, 94: 515},
{165, 72: 165},
{1: 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 92: 208},
{1: 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 73: 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 305, 93: 508, 103: 518},
{519},
// 300
{1: 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 92: 209},
{187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 73: 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 305, 93: 523, 98: 522, 106: 521},
{524},
{179, 72: 414},
{178, 346, 369, 321, 323, 382, 349, 325, 326, 327, 345, 316, 352, 348, 354, 357, 331, 360, 353, 356, 359, 317, 318, 319, 320, 384, 347, 341, 362, 329, 350, 351, 333, 322, 324, 386, 328, 335, 355, 358, 332, 361, 330, 334, 376, 336, 340, 338, 368, 363, 381, 375, 344, 364, 365, 366, 343, 339, 385, 342, 370, 337, 367, 383, 371, 372, 379, 380, 374, 373, 377, 378, 73: 395, 396, 397, 398, 390, 389, 391, 387, 388, 392, 394, 393, 94: 315, 97: 314},
// 305
{1: 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 92: 210},
{187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 73: 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 305, 93: 523, 98: 522, 106: 526},
{527},
{1: 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 92: 211},
{1: 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 73: 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 305, 93: 313, 98: 529},
// 310
{530, 72: 414},
{1: 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 92: 212},
{187, 85: 305, 93: 532},
{533},
{1: 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 92: 213},
// 315
{1: 295, 253, 246, 248, 283, 291, 267, 269, 270, 272, 241, 281, 299, 260, 256, 273, 265, 259, 255, 264, 224, 243, 244, 245, 271, 296, 231, 236, 258, 292, 293, 274, 247, 249, 302, 268, 276, 261, 257, 297, 266, 250, 275, 285, 277, 287, 279, 252, 263, 232, 284, 235, 240, 298, 242, 234, 286, 301, 233, 254, 278, 251, 300, 294, 262, 237, 289, 280, 282, 290, 288, 102: 238, 107: 225, 239, 111: 536, 230, 114: 229, 227, 535, 228, 226},
{1: 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 92: 216},
{1: 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 92: 214},
}
)
var yyhintDebug = 0
type yyhintLexer interface {
Lex(lval *yyhintSymType) int
Errorf(format string, a ...interface{}) error
AppendError(err error)
AppendWarn(err error)
Errors() (warns []error, errs []error)
}
type yyhintLexerEx interface {
yyhintLexer
Reduced(rule, state int, lval *yyhintSymType) bool
}
func yyhintSymName(c int) (s string) {
x, ok := yyhintXLAT[c]
if ok {
return yyhintSymNames[x]
}
return __yyfmt__.Sprintf("%d", c)
}
func yyhintlex1(yylex yyhintLexer, lval *yyhintSymType) (n int) {
n = yylex.Lex(lval)
if n <= 0 {
n = yyhintEOFCode
}
if yyhintDebug >= 3 {
__yyfmt__.Printf("\nlex %s(%#x %d), lval: %+v\n", yyhintSymName(n), n, n, lval)
}
return n
}
func yyhintParse(yylex yyhintLexer, parser *hintParser) int {
const yyError = 133
yyEx, _ := yylex.(yyhintLexerEx)
var yyn int
parser.yylval = yyhintSymType{}
yyS := parser.cache
Nerrs := 0 /* number of errors */
Errflag := 0 /* error recovery flag */
yyerrok := func() {
if yyhintDebug >= 2 {
__yyfmt__.Printf("yyerrok()\n")
}
Errflag = 0
}
_ = yyerrok
yystate := 0
yychar := -1
var yyxchar int
var yyshift int
yyp := -1
goto yystack
ret0:
return 0
ret1:
return 1
yystack:
/* put a state and value onto the stack */
yyp++
if yyp+1 >= len(yyS) {
nyys := make([]yyhintSymType, len(yyS)*2)
copy(nyys, yyS)
yyS = nyys
parser.cache = yyS
}
parser.yyVAL = &yyS[yyp+1]
yyS[yyp].yys = yystate
yynewstate:
if yychar < 0 {
yychar = yyhintlex1(yylex, &parser.yylval)
var ok bool
if yyxchar, ok = yyhintXLAT[yychar]; !ok {
yyxchar = len(yyhintSymNames) // > tab width
}
}
if yyhintDebug >= 4 {
var a []int
for _, v := range yyS[:yyp+1] {
a = append(a, v.yys)
}
__yyfmt__.Printf("state stack %v\n", a)
}
row := yyhintParseTab[yystate]
yyn = 0
if yyxchar < len(row) {
if yyn = int(row[yyxchar]); yyn != 0 {
yyn += yyhintTabOfs
}
}
switch {
case yyn > 0: // shift
yychar = -1
*parser.yyVAL = parser.yylval
yystate = yyn
yyshift = yyn
if yyhintDebug >= 2 {
__yyfmt__.Printf("shift, and goto state %d\n", yystate)
}
if Errflag > 0 {
Errflag--
}
goto yystack
case yyn < 0: // reduce
case yystate == 1: // accept
if yyhintDebug >= 2 {
__yyfmt__.Println("accept")
}
goto ret0
}
if yyn == 0 {
/* error ... attempt to resume parsing */
switch Errflag {
case 0: /* brand new error */
if yyhintDebug >= 1 {
__yyfmt__.Printf("no action for %s in state %d\n", yyhintSymName(yychar), yystate)
}
msg, ok := yyhintXErrors[yyhintXError{yystate, yyxchar}]
if !ok {
msg, ok = yyhintXErrors[yyhintXError{yystate, -1}]
}
if !ok && yyshift != 0 {
msg, ok = yyhintXErrors[yyhintXError{yyshift, yyxchar}]
}
if !ok {
msg, ok = yyhintXErrors[yyhintXError{yyshift, -1}]
}
if !ok || msg == "" {
msg = "syntax error"
}
// ignore goyacc error message
yylex.AppendError(yylex.Errorf(""))
Nerrs++
fallthrough
case 1, 2: /* incompletely recovered error ... try again */
Errflag = 3
/* find a state where "error" is a legal shift action */
for yyp >= 0 {
row := yyhintParseTab[yyS[yyp].yys]
if yyError < len(row) {
yyn = int(row[yyError]) + yyhintTabOfs
if yyn > 0 { // hit
if yyhintDebug >= 2 {
__yyfmt__.Printf("error recovery found error shift in state %d\n", yyS[yyp].yys)
}
yystate = yyn /* simulate a shift of "error" */
goto yystack
}
}
/* the current p has no shift on "error", pop stack */
if yyhintDebug >= 2 {
__yyfmt__.Printf("error recovery pops state %d\n", yyS[yyp].yys)
}
yyp--
}
/* there is no state on the stack with an error shift ... abort */
if yyhintDebug >= 2 {
__yyfmt__.Printf("error recovery failed\n")
}
goto ret1
case 3: /* no shift yet; clobber input char */
if yyhintDebug >= 2 {
__yyfmt__.Printf("error recovery discards %s\n", yyhintSymName(yychar))
}
if yychar == yyhintEOFCode {
goto ret1
}
yychar = -1
goto yynewstate /* try again in the same state */
}
}
r := -yyn
x0 := yyhintReductions[r]
x, n := x0.xsym, x0.components
yypt := yyp
_ = yypt // guard against "declared and not used"
yyp -= n
if yyp+1 >= len(yyS) {
nyys := make([]yyhintSymType, len(yyS)*2)
copy(nyys, yyS)
yyS = nyys
parser.cache = yyS
}
parser.yyVAL = &yyS[yyp+1]
/* consult goto table to find next state */
exState := yystate
yystate = int(yyhintParseTab[yyS[yyp].yys][x]) + yyhintTabOfs
/* reduction by production r */
if yyhintDebug >= 2 {
__yyfmt__.Printf("reduce using rule %v (%s), and goto state %d\n", r, yyhintSymNames[x], yystate)
}
switch r {
case 1:
{
parser.result = yyS[yypt-0].hints
}
case 2:
{
if yyS[yypt-0].hint != nil {
parser.yyVAL.hints = []*ast.TableOptimizerHint{yyS[yypt-0].hint}
}
}
case 3:
{
if yyS[yypt-0].hint != nil {
parser.yyVAL.hints = append(yyS[yypt-2].hints, yyS[yypt-0].hint)
} else {
parser.yyVAL.hints = yyS[yypt-2].hints
}
}
case 4:
{
parser.yyVAL.hints = yyS[yypt-0].hints
}
case 5:
{
parser.yyVAL.hints = append(yyS[yypt-2].hints, yyS[yypt-0].hints...)
}
case 6:
{
parser.warnUnsupportedHint(yyS[yypt-3].ident)
parser.yyVAL.hint = nil
}
case 7:
{
parser.warnUnsupportedHint(yyS[yypt-3].ident)
parser.yyVAL.hint = nil
}
case 8:
{
parser.warnUnsupportedHint(yyS[yypt-3].ident)
parser.yyVAL.hint = nil
}
case 9:
{
h := yyS[yypt-1].hint
h.HintName = ast.NewCIStr(yyS[yypt-3].ident)
parser.yyVAL.hint = h
}
case 10:
{
parser.warnUnsupportedHint(yyS[yypt-3].ident)
parser.yyVAL.hint = nil
}
case 11:
{
h := yyS[yypt-1].hint
h.HintName = ast.NewCIStr(yyS[yypt-3].ident)
parser.yyVAL.hint = h
}
case 12:
{
parser.warnUnsupportedHint(yyS[yypt-4].ident)
parser.yyVAL.hint = nil
}
case 13:
{
parser.yyVAL.hint = &ast.TableOptimizerHint{
HintName: ast.NewCIStr(yyS[yypt-4].ident),
QBName: ast.NewCIStr(yyS[yypt-2].ident),
HintData: yyS[yypt-1].number,
}
}
case 14:
{
parser.yyVAL.hint = &ast.TableOptimizerHint{
HintName: ast.NewCIStr(yyS[yypt-4].ident),
QBName: ast.NewCIStr(yyS[yypt-2].ident),
HintData: int64(yyS[yypt-1].number),
}
}
case 15:
{
parser.yyVAL.hint = &ast.TableOptimizerHint{
HintName: ast.NewCIStr(yyS[yypt-5].ident),
HintData: ast.HintSetVar{
VarName: yyS[yypt-3].ident,
Value: yyS[yypt-1].ident,
},
}
}
case 16:
{
parser.yyVAL.hint = &ast.TableOptimizerHint{
HintName: ast.NewCIStr(yyS[yypt-3].ident),
HintData: yyS[yypt-1].ident,
}
}
case 17:
{
parser.yyVAL.hint = &ast.TableOptimizerHint{
HintName: ast.NewCIStr(yyS[yypt-3].ident),
QBName: ast.NewCIStr(yyS[yypt-1].ident),
}
}
case 18:
{
parser.yyVAL.hint = &ast.TableOptimizerHint{
HintName: ast.NewCIStr(yyS[yypt-5].ident),
QBName: ast.NewCIStr(yyS[yypt-3].ident),
Tables: yyS[yypt-1].hint.Tables,
}
}
case 19:
{
maxValue := uint64(math.MaxInt64) / yyS[yypt-1].number
if yyS[yypt-2].number <= maxValue {
parser.yyVAL.hint = &ast.TableOptimizerHint{
HintName: ast.NewCIStr(yyS[yypt-5].ident),
HintData: int64(yyS[yypt-2].number * yyS[yypt-1].number),
QBName: ast.NewCIStr(yyS[yypt-3].ident),
}
} else {
yylex.AppendError(ErrWarnMemoryQuotaOverflow.GenWithStackByArgs(math.MaxInt))
parser.lastErrorAsWarn()
parser.yyVAL.hint = nil
}
}
case 20:
{
parser.yyVAL.hint = &ast.TableOptimizerHint{
HintName: ast.NewCIStr(yyS[yypt-5].ident),
HintData: ast.HintTimeRange{
From: yyS[yypt-3].ident,
To: yyS[yypt-1].ident,
},
}
}
case 21:
{
h := yyS[yypt-1].hint
h.HintName = ast.NewCIStr(yyS[yypt-4].ident)
h.QBName = ast.NewCIStr(yyS[yypt-2].ident)
parser.yyVAL.hint = h
}
case 22:
{
parser.yyVAL.hint = &ast.TableOptimizerHint{
HintName: ast.NewCIStr(yyS[yypt-3].ident),
QBName: ast.NewCIStr(yyS[yypt-1].ident),
}
}
case 23:
{
parser.yyVAL.hint = &ast.TableOptimizerHint{
HintName: ast.NewCIStr(yyS[yypt-4].ident),
QBName: ast.NewCIStr(yyS[yypt-2].ident),
HintData: ast.NewCIStr(yyS[yypt-1].ident),
}
}
case 24:
{
parser.warnUnsupportedHint(yyS[yypt-4].ident)
parser.yyVAL.hint = nil
}
case 25:
{
parser.warnUnsupportedHint(yyS[yypt-3].ident)
parser.yyVAL.hint = nil
}
case 26:
{
parser.warnUnsupportedHint(yyS[yypt-5].ident)
parser.yyVAL.hint = nil
}
case 27:
{
parser.warnUnsupportedHint(yyS[yypt-5].ident)
parser.yyVAL.hint = nil
}
case 28:
{
hs := yyS[yypt-1].hints
name := ast.NewCIStr(yyS[yypt-4].ident)
qb := ast.NewCIStr(yyS[yypt-2].ident)
for _, h := range hs {
h.HintName = name
h.QBName = qb
}
parser.yyVAL.hints = hs
}
case 29:
{
parser.yyVAL.hints = []*ast.TableOptimizerHint{yyS[yypt-0].hint}
}
case 30:
{
parser.yyVAL.hints = append(yyS[yypt-2].hints, yyS[yypt-0].hint)
}
case 31:
{
h := yyS[yypt-1].hint
h.HintData = ast.NewCIStr(yyS[yypt-3].ident)
parser.yyVAL.hint = h
}
case 32:
{
parser.yyVAL.ident = ""
}
case 36:
{
parser.yyVAL.modelIdents = nil
}
case 37:
{
parser.yyVAL.modelIdents = yyS[yypt-1].modelIdents
}
case 38:
{
parser.yyVAL.modelIdents = []ast.CIStr{ast.NewCIStr(yyS[yypt-0].ident)}
}
case 39:
{
parser.yyVAL.modelIdents = append(yyS[yypt-2].modelIdents, ast.NewCIStr(yyS[yypt-0].ident))
}
case 41:
{
parser.yyVAL.hint = &ast.TableOptimizerHint{
QBName: ast.NewCIStr(yyS[yypt-0].ident),
}
}
case 42:
{
parser.yyVAL.hint = &ast.TableOptimizerHint{
Tables: []ast.HintTable{yyS[yypt-0].table},
QBName: ast.NewCIStr(yyS[yypt-1].ident),
}
}
case 43:
{
h := yyS[yypt-2].hint
h.Tables = append(h.Tables, yyS[yypt-0].table)
parser.yyVAL.hint = h
}
case 44:
{
parser.yyVAL.table = ast.HintTable{
TableName: ast.NewCIStr(yyS[yypt-2].ident),
QBName: ast.NewCIStr(yyS[yypt-1].ident),
PartitionList: yyS[yypt-0].modelIdents,
}
}
case 45:
{
parser.yyVAL.table = ast.HintTable{
DBName: ast.NewCIStr(yyS[yypt-4].ident),
TableName: ast.NewCIStr(yyS[yypt-2].ident),
QBName: ast.NewCIStr(yyS[yypt-1].ident),
PartitionList: yyS[yypt-0].modelIdents,
}
}
case 46:
{
h := yyS[yypt-2].hint
h.Tables = append(h.Tables, yyS[yypt-0].table)
parser.yyVAL.hint = h
}
case 47:
{
parser.yyVAL.hint = &ast.TableOptimizerHint{
Tables: []ast.HintTable{yyS[yypt-0].table},
}
}
case 48:
{
parser.yyVAL.table = ast.HintTable{
TableName: ast.NewCIStr(yyS[yypt-1].ident),
QBName: ast.NewCIStr(yyS[yypt-0].ident),
}
}
case 49:
{
parser.yyVAL.table = ast.HintTable{
QBName: ast.NewCIStr(yyS[yypt-0].ident),
}
}
case 50:
{
h := yyS[yypt-0].hint
h.Tables = []ast.HintTable{yyS[yypt-2].table}
h.QBName = ast.NewCIStr(yyS[yypt-3].ident)
parser.yyVAL.hint = h
}
case 51:
{
parser.yyVAL.hint = &ast.TableOptimizerHint{}
}
case 53:
{
parser.yyVAL.hint = &ast.TableOptimizerHint{
Indexes: []ast.CIStr{ast.NewCIStr(yyS[yypt-0].ident)},
}
}
case 54:
{
h := yyS[yypt-2].hint
h.Indexes = append(h.Indexes, ast.NewCIStr(yyS[yypt-0].ident))
parser.yyVAL.hint = h
}
case 61:
{
parser.yyVAL.ident = strconv.FormatUint(yyS[yypt-0].number, 10)
}
case 62:
{
parser.yyVAL.ident = strconv.FormatUint(yyS[yypt-0].number, 10)
}
case 63:
{
if yyS[yypt-0].number > 9223372036854775808 {
yylex.AppendError(yylex.Errorf("the Signed Value should be at the range of [-9223372036854775808, 9223372036854775807]."))
return 1
} else if yyS[yypt-0].number == 9223372036854775808 {
signed_one := int64(1)
parser.yyVAL.ident = strconv.FormatInt(signed_one<<63, 10)
} else {
parser.yyVAL.ident = strconv.FormatInt(-int64(yyS[yypt-0].number), 10)
}
}
case 64:
{
parser.yyVAL.number = 1024 * 1024
}
case 65:
{
parser.yyVAL.number = 1024 * 1024 * 1024
}
case 66:
{
parser.yyVAL.hint = &ast.TableOptimizerHint{HintData: true}
}
case 67:
{
parser.yyVAL.hint = &ast.TableOptimizerHint{HintData: false}
}
}
if !parser.lexer.skipPositionRecording {
yyhintSetOffset(parser.yyVAL, parser.yyVAL.offset)
}
if yyEx != nil && yyEx.Reduced(r, exState, parser.yyVAL) {
return -1
}
goto yystack /* stack new state and value */
}
// Copyright 2020 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// See the License for the specific language governing permissions and
// limitations under the License.
package parser
import (
"strconv"
"strings"
"github.com/pingcap/tidb/pkg/parser/ast"
"github.com/pingcap/tidb/pkg/parser/mysql"
"github.com/pingcap/tidb/pkg/parser/terror"
)
//revive:disable:exported
var (
ErrWarnOptimizerHintUnsupportedHint = terror.ClassParser.NewStd(mysql.ErrWarnOptimizerHintUnsupportedHint)
ErrWarnOptimizerHintInvalidToken = terror.ClassParser.NewStd(mysql.ErrWarnOptimizerHintInvalidToken)
ErrWarnMemoryQuotaOverflow = terror.ClassParser.NewStd(mysql.ErrWarnMemoryQuotaOverflow)
ErrWarnOptimizerHintParseError = terror.ClassParser.NewStd(mysql.ErrWarnOptimizerHintParseError)
ErrWarnOptimizerHintInvalidInteger = terror.ClassParser.NewStd(mysql.ErrWarnOptimizerHintInvalidInteger)
ErrWarnOptimizerHintWrongPos = terror.ClassParser.NewStd(mysql.ErrWarnOptimizerHintWrongPos)
)
//revive:enable:exported
// hintScanner implements the yyhintLexer interface
type hintScanner struct {
Scanner
}
func (hs *hintScanner) Errorf(format string, args ...interface{}) error {
inner := hs.Scanner.Errorf(format, args...)
return ErrParse.GenWithStackByArgs("Optimizer hint syntax error at", inner)
}
func (hs *hintScanner) Lex(lval *yyhintSymType) int {
tok, pos, lit := hs.scan()
hs.lastScanOffset = pos.Offset
var errorTokenType string
switch tok {
case intLit:
n, e := strconv.ParseUint(lit, 10, 64)
if e != nil {
hs.AppendError(ErrWarnOptimizerHintInvalidInteger.GenWithStackByArgs(lit))
return hintInvalid
}
lval.number = n
return hintIntLit
case singleAtIdentifier:
lval.ident = lit
return hintSingleAtIdentifier
case identifier:
lval.ident = lit
if tok1, ok := hintTokenMap[strings.ToUpper(lit)]; ok {
return tok1
}
return hintIdentifier
case stringLit:
lval.ident = lit
if hs.sqlMode.HasANSIQuotesMode() && hs.r.s[pos.Offset] == '"' {
return hintIdentifier
}
return hintStringLit
case bitLit:
if strings.HasPrefix(lit, "0b") {
lval.ident = lit
return hintIdentifier
}
errorTokenType = "bit-value literal"
case hexLit:
if strings.HasPrefix(lit, "0x") {
lval.ident = lit
return hintIdentifier
}
errorTokenType = "hexadecimal literal"
case quotedIdentifier:
lval.ident = lit
return hintIdentifier
case eq:
return '='
case floatLit:
errorTokenType = "floating point number"
case decLit:
errorTokenType = "decimal number"
default:
if tok <= 0x7f {
return tok
}
errorTokenType = "unknown token"
}
hs.AppendError(ErrWarnOptimizerHintInvalidToken.GenWithStackByArgs(errorTokenType, lit, tok))
return hintInvalid
}
type hintParser struct {
lexer hintScanner
result []*ast.TableOptimizerHint
// the following fields are used by yyParse to reduce allocation.
cache []yyhintSymType
yylval yyhintSymType
yyVAL *yyhintSymType
}
func newHintParser() *hintParser {
return &hintParser{cache: make([]yyhintSymType, 50)}
}
func (hp *hintParser) parse(input string, sqlMode mysql.SQLMode, initPos Pos) ([]*ast.TableOptimizerHint, []error) {
hp.result = nil
hp.lexer.reset(input[3:])
hp.lexer.SetSQLMode(sqlMode)
hp.lexer.r.updatePos(Pos{
Line: initPos.Line,
Col: initPos.Col + 3, // skipped the initial '/*+'
Offset: 0,
})
hp.lexer.inBangComment = true // skip the final '*/' (we need the '*/' for reporting warnings)
yyhintParse(&hp.lexer, hp)
warns, errs := hp.lexer.Errors()
if len(errs) == 0 {
errs = warns
}
return hp.result, errs
}
// ParseHint parses an optimizer hint (the interior of `/*+ ... */`).
func ParseHint(input string, sqlMode mysql.SQLMode, initPos Pos) ([]*ast.TableOptimizerHint, []error) {
hp := newHintParser()
return hp.parse(input, sqlMode, initPos)
}
func (hp *hintParser) warnUnsupportedHint(name string) {
warn := ErrWarnOptimizerHintUnsupportedHint.FastGenByArgs(name)
hp.lexer.warns = append(hp.lexer.warns, warn)
}
func (hp *hintParser) lastErrorAsWarn() {
hp.lexer.lastErrorAsWarn()
}
// Copyright 2016 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// See the License for the specific language governing permissions and
// limitations under the License.
package parser
import (
"bytes"
"fmt"
"strconv"
"strings"
"unicode"
"github.com/pingcap/tidb/pkg/parser/charset"
"github.com/pingcap/tidb/pkg/parser/mysql"
tidbfeature "github.com/pingcap/tidb/pkg/parser/tidb"
)
var _ = yyLexer(&Scanner{})
// Pos represents the position of a token.
type Pos struct {
Line int
Col int
Offset int
}
// Scanner implements the yyLexer interface.
type Scanner struct {
r reader
buf bytes.Buffer
client charset.Encoding
connection charset.Encoding
errs []error
warns []error
stmtStartPos int
// inBangComment is true if we are inside a `/*! ... */` block.
// It is used to ignore a stray `*/` when scanning.
inBangComment bool
sqlMode mysql.SQLMode
// If the lexer should recognize keywords for window function.
// It may break the compatibility when support those keywords,
// because some application may already use them as identifiers.
supportWindowFunc bool
// Whether record the original text keyword position to the AST node.
skipPositionRecording bool
// lastScanOffset indicates last offset returned by scan().
// It's used to substring sql in syntax error message.
lastScanOffset int
// lastKeyword records the previous keyword returned by scan().
// determine whether an optimizer hint should be parsed or ignored.
lastKeyword int
// lastKeyword2 records the keyword before lastKeyword, it is used
// to disambiguate hint after for update, which should be ignored.
lastKeyword2 int
// lastKeyword3 records the keyword before lastKeyword2, it is used
// to disambiguate hint after create binding for update, which should
// be pertained.
lastKeyword3 int
// hintPos records the start position of the previous optimizer hint.
lastHintPos Pos
// true if a dot follows an identifier
identifierDot bool
// keepHint, if true, Scanner will keep hint when normalizing .
keepHint bool
}
// Errors returns the errors and warns during a scan.
func (s *Scanner) Errors() (warns []error, errs []error) {
return s.warns, s.errs
}
// reset resets the sql string to be scanned.
func (s *Scanner) reset(sql string) {
s.client = charset.FindEncoding(mysql.DefaultCharset)
s.connection = charset.FindEncoding(mysql.DefaultCharset)
s.r = reader{s: sql, p: Pos{Line: 1}, l: len(sql)}
s.buf.Reset()
s.errs = s.errs[:0]
s.warns = s.warns[:0]
s.stmtStartPos = 0
s.inBangComment = false
s.lastKeyword = 0
s.identifierDot = false
}
func (s *Scanner) stmtText() string {
endPos := s.r.pos().Offset
if s.r.s[endPos-1] == '\n' {
endPos = endPos - 1 // trim new line
}
if s.r.s[s.stmtStartPos] == '\n' {
s.stmtStartPos++
}
text := s.r.s[s.stmtStartPos:endPos]
s.stmtStartPos = endPos
return text
}
// Errorf tells scanner something is wrong.
// Scanner satisfies yyLexer interface which need this function.
func (s *Scanner) Errorf(format string, a ...interface{}) (err error) {
str := fmt.Sprintf(format, a...)
val := s.r.s[s.lastScanOffset:]
var lenStr = ""
if len(val) > 2048 {
lenStr = "(total length " + strconv.Itoa(len(val)) + ")"
val = val[:2048]
}
err = fmt.Errorf("line %d column %d near \"%s\"%s %s",
s.r.p.Line, s.r.p.Col, val, str, lenStr)
return
}
// AppendError sets error into scanner.
// Scanner satisfies yyLexer interface which need this function.
func (s *Scanner) AppendError(err error) {
if err == nil {
return
}
s.errs = append(s.errs, err)
}
// AppendWarn sets warning into scanner.
func (s *Scanner) AppendWarn(err error) {
if err == nil {
return
}
s.warns = append(s.warns, err)
}
// convert2System convert lit from client encoding to system encoding which is utf8mb4.
func (s *Scanner) convert2System(tok int, lit string) (int, string) {
utf8Lit, err := s.client.Transform(nil, charset.HackSlice(lit), charset.OpDecodeReplace)
if err != nil {
s.AppendWarn(err)
}
return tok, charset.HackString(utf8Lit)
}
// convert2Connection convert lit from client encoding to connection encoding.
func (s *Scanner) convert2Connection(tok int, lit string) (int, string) {
if mysql.IsUTF8Charset(s.client.Name()) {
return tok, lit
}
utf8Lit, err := s.client.Transform(nil, charset.HackSlice(lit), charset.OpDecodeReplace)
if err != nil {
s.AppendError(err)
if s.sqlMode.HasStrictMode() && s.client.Tp() == s.connection.Tp() {
return invalid, lit
}
s.lastErrorAsWarn()
}
// It is definitely valid if `client` is the same with `connection`, so just transform if they are not the same.
if s.client.Tp() != s.connection.Tp() {
utf8Lit, _ = s.connection.Transform(nil, utf8Lit, charset.OpReplaceNoErr)
}
return tok, charset.HackString(utf8Lit)
}
func (s *Scanner) getNextToken() int {
r := s.r
tok, pos, lit := s.scan()
if tok == identifier {
tok = s.handleIdent(&yySymType{})
}
if tok == identifier {
if tok1 := s.isTokenIdentifier(lit, pos.Offset); tok1 != 0 {
tok = tok1
}
}
s.r = r
return tok
}
func (s *Scanner) getNextTwoTokens() (tok1 int, tok2 int) {
r := s.r
tok1, pos, lit := s.scan()
if tok1 == identifier {
tok1 = s.handleIdent(&yySymType{})
}
if tok1 == identifier {
if tmpToken := s.isTokenIdentifier(lit, pos.Offset); tmpToken != 0 {
tok1 = tmpToken
}
}
tok2, pos, lit = s.scan()
if tok2 == identifier {
tok2 = s.handleIdent(&yySymType{})
}
if tok2 == identifier {
if tmpToken := s.isTokenIdentifier(lit, pos.Offset); tmpToken != 0 {
tok2 = tmpToken
}
}
s.r = r
return tok1, tok2
}
// Lex returns a token and store the token value in v.
// Scanner satisfies yyLexer interface.
// 0 and invalid are special token id this function would return:
// return 0 tells parser that scanner meets EOF,
// return invalid tells parser that scanner meets illegal character.
func (s *Scanner) Lex(v *yySymType) int {
tok, pos, lit := s.scan()
s.lastScanOffset = pos.Offset
s.lastKeyword3 = s.lastKeyword2
s.lastKeyword2 = s.lastKeyword
s.lastKeyword = 0
v.offset = pos.Offset
v.ident = lit
if tok == identifier {
tok = s.handleIdent(v)
}
if tok == identifier {
if tok1 := s.isTokenIdentifier(lit, pos.Offset); tok1 != 0 {
tok = tok1
s.lastKeyword = tok1
}
}
if s.sqlMode.HasANSIQuotesMode() &&
tok == stringLit &&
s.r.s[v.offset] == '"' {
tok = identifier
}
if tok == pipes && !(s.sqlMode.HasPipesAsConcatMode()) {
return pipesAsOr
}
if tok == not && s.sqlMode.HasHighNotPrecedenceMode() {
return not2
}
if (tok == as || tok == member) && s.getNextToken() == of {
_, pos, lit = s.scan()
v.ident = fmt.Sprintf("%s %s", v.ident, lit)
s.lastScanOffset = pos.Offset
v.offset = pos.Offset
if tok == as {
s.lastKeyword = asof
return asof
}
s.lastKeyword = memberof
return memberof
}
if tok == to {
tok1, tok2 := s.getNextTwoTokens()
if tok1 == timestampType && tok2 == stringLit {
_, pos, lit = s.scan()
v.ident = fmt.Sprintf("%s %s", v.ident, lit)
s.lastKeyword = toTimestamp
s.lastScanOffset = pos.Offset
v.offset = pos.Offset
return toTimestamp
}
if tok1 == tsoType && tok2 == intLit {
_, pos, lit = s.scan()
v.ident = fmt.Sprintf("%s %s", v.ident, lit)
s.lastKeyword = toTSO
s.lastScanOffset = pos.Offset
v.offset = pos.Offset
return toTSO
}
}
// fix shift/reduce conflict with DEFINED NULL BY xxx OPTIONALLY ENCLOSED
if tok == optionally {
tok1, tok2 := s.getNextTwoTokens()
if tok1 == enclosed && tok2 == by {
_, _, lit = s.scan()
_, pos2, lit2 := s.scan()
v.ident = fmt.Sprintf("%s %s %s", v.ident, lit, lit2)
s.lastKeyword = optionallyEnclosedBy
s.lastScanOffset = pos2.Offset
v.offset = pos2.Offset
return optionallyEnclosedBy
}
}
switch tok {
case intLit:
return toInt(s, v, lit)
case floatLit:
return toFloat(s, v, lit)
case decLit:
return toDecimal(s, v, lit)
case hexLit:
return toHex(s, v, lit)
case bitLit:
return toBit(s, v, lit)
case singleAtIdentifier, doubleAtIdentifier, cast, extract:
v.item = lit
return tok
case null:
v.item = nil
case quotedIdentifier, identifier:
tok = identifier
s.identifierDot = s.r.peek() == '.'
tok, v.ident = s.convert2System(tok, lit)
case stringLit:
tok, v.ident = s.convert2Connection(tok, lit)
}
return tok
}
// LexLiteral returns the value of the converted literal
func (s *Scanner) LexLiteral() interface{} {
symType := &yySymType{}
s.Lex(symType)
if symType.item == nil {
return symType.ident
}
return symType.item
}
// SetSQLMode sets the SQL mode for scanner.
func (s *Scanner) SetSQLMode(mode mysql.SQLMode) {
s.sqlMode = mode
}
// GetSQLMode return the SQL mode of scanner.
func (s *Scanner) GetSQLMode() mysql.SQLMode {
return s.sqlMode
}
// EnableWindowFunc controls whether the scanner recognize the keywords of window function.
func (s *Scanner) EnableWindowFunc(val bool) {
s.supportWindowFunc = val
}
// setKeepHint set the keepHint flag when normalizing.
func (s *Scanner) setKeepHint(val bool) {
s.keepHint = val
}
// InheritScanner returns a new scanner object which inherits configurations from the parent scanner.
func (s *Scanner) InheritScanner(sql string) *Scanner {
return &Scanner{
r: reader{s: sql},
client: s.client,
sqlMode: s.sqlMode,
supportWindowFunc: s.supportWindowFunc,
}
}
// NewScanner returns a new scanner object.
func NewScanner(s string) *Scanner {
lexer := &Scanner{r: reader{s: s}}
lexer.reset(s)
return lexer
}
func (*Scanner) handleIdent(lval *yySymType) int {
str := lval.ident
// A character string literal may have an optional character set introducer and COLLATE clause:
// [_charset_name]'string' [COLLATE collation_name]
// See https://dev.mysql.com/doc/refman/5.7/en/charset-literal.html
if !strings.HasPrefix(str, "_") {
return identifier
}
cs, _ := charset.GetCharsetInfo(str[1:])
if cs == nil {
return identifier
}
lval.ident = cs.Name
return underscoreCS
}
func (s *Scanner) skipWhitespace() byte {
return s.r.incAsLongAs(func(b byte) bool {
return unicode.IsSpace(rune(b))
})
}
func (s *Scanner) scan() (tok int, pos Pos, lit string) {
ch0 := s.r.peek()
if unicode.IsSpace(rune(ch0)) {
ch0 = s.skipWhitespace()
}
pos = s.r.pos()
if s.r.eof() {
// when scanner meets EOF, the returned token should be 0,
// because 0 is a special token id to remind the parser that stream is end.
return 0, pos, ""
}
if isIdentExtend(ch0) {
return scanIdentifier(s)
}
// search a trie to get a token.
node := &ruleTable
for !(node.childs[ch0] == nil || s.r.eof()) {
node = node.childs[ch0]
if node.fn != nil {
return node.fn(s)
}
s.r.inc()
ch0 = s.r.peek()
}
tok, lit = node.token, s.r.data(&pos)
return
}
func startWithXx(s *Scanner) (tok int, pos Pos, lit string) {
pos = s.r.pos()
s.r.inc()
if s.r.peek() == '\'' {
s.r.inc()
s.scanHex()
if s.r.peek() == '\'' {
s.r.inc()
tok, lit = hexLit, s.r.data(&pos)
} else {
tok = invalid
}
return
}
s.r.updatePos(pos)
return scanIdentifier(s)
}
func startWithNn(s *Scanner) (tok int, pos Pos, lit string) {
tok, pos, lit = scanIdentifier(s)
// The National Character Set, N'some text' or n'some test'.
// See https://dev.mysql.com/doc/refman/5.7/en/string-literals.html
// and https://dev.mysql.com/doc/refman/5.7/en/charset-national.html
if lit == "N" || lit == "n" {
if s.r.peek() == '\'' {
tok = underscoreCS
lit = "utf8"
}
}
return
}
func startWithBb(s *Scanner) (tok int, pos Pos, lit string) {
pos = s.r.pos()
s.r.inc()
if s.r.peek() == '\'' {
s.r.inc()
s.scanBit()
if s.r.peek() == '\'' {
s.r.inc()
tok, lit = bitLit, s.r.data(&pos)
} else {
tok = invalid
}
return
}
s.r.updatePos(pos)
return scanIdentifier(s)
}
func startWithSharp(s *Scanner) (tok int, pos Pos, lit string) {
s.r.incAsLongAs(func(ch byte) bool {
return ch != '\n'
})
return s.scan()
}
func startWithDash(s *Scanner) (tok int, pos Pos, lit string) {
pos = s.r.pos()
if strings.HasPrefix(s.r.s[pos.Offset:], "--") {
remainLen := len(s.r.s[pos.Offset:])
if remainLen == 2 || (remainLen > 2 && unicode.IsSpace(rune(s.r.s[pos.Offset+2]))) {
s.r.incAsLongAs(func(ch byte) bool {
return ch != '\n'
})
return s.scan()
}
}
if strings.HasPrefix(s.r.s[pos.Offset:], "->>") {
tok = juss
s.r.incN(3)
return
}
if strings.HasPrefix(s.r.s[pos.Offset:], "->") {
tok = jss
s.r.incN(2)
return
}
tok = int('-')
lit = "-"
s.r.inc()
return
}
func startWithSlash(s *Scanner) (tok int, pos Pos, lit string) {
pos = s.r.pos()
s.r.inc()
if s.r.peek() != '*' {
tok = int('/')
lit = "/"
return
}
isOptimizerHint := false
currentCharIsStar := false
s.r.inc() // we see '/*' so far.
switch s.r.readByte() {
case '!': // '/*!' MySQL-specific comments
// See http://dev.mysql.com/doc/refman/5.7/en/comments.html
// in '/*!', which we always recognize regardless of version.
s.scanVersionDigits(5, 5)
s.inBangComment = true
return s.scan()
case 'T': // '/*T' maybe TiDB-specific comments
if s.r.peek() != '!' {
// '/*TX' is just normal comment.
break
}
s.r.inc()
// in '/*T!', try to match the pattern '/*T![feature1,feature2,...]'.
features := s.scanFeatureIDs()
if tidbfeature.CanParseFeature(features...) {
s.inBangComment = true
return s.scan()
}
case 'M': // '/*M' maybe MariaDB-specific comments
// no special treatment for now.
case '+': // '/*+' optimizer hints
// See https://dev.mysql.com/doc/refman/5.7/en/optimizer-hints.html
if _, ok := hintedTokens[s.lastKeyword]; ok || s.keepHint {
// only recognize optimizers hints directly followed by certain
// keywords like SELECT, INSERT, etc., only a special case "FOR UPDATE" needs to be handled
// we will report a warning in order to match MySQL's behavior, but the hint content will be ignored
if s.lastKeyword2 == forKwd {
if s.lastKeyword3 == binding {
// special case of `create binding for update`
isOptimizerHint = true
} else {
s.warns = append(s.warns, ParseErrorWith(s.r.data(&pos), s.r.p.Line))
}
} else {
isOptimizerHint = true
}
} else {
s.AppendWarn(ErrWarnOptimizerHintWrongPos)
}
case '*': // '/**' if the next char is '/' it would close the comment.
currentCharIsStar = true
default:
}
// standard C-like comment. read until we see '*/' then drop it.
for {
if currentCharIsStar || s.r.incAsLongAs(func(ch byte) bool { return ch != '*' }) == '*' {
switch s.r.readByte() {
case '/':
// Meets */, means comment end.
if isOptimizerHint {
s.lastHintPos = pos
return hintComment, pos, s.r.data(&pos)
}
return s.scan()
case '*':
currentCharIsStar = true
continue
default:
currentCharIsStar = false
continue
}
}
// unclosed comment or other errors.
s.errs = append(s.errs, ParseErrorWith(s.r.data(&pos), s.r.p.Line))
return
}
}
func startWithStar(s *Scanner) (tok int, pos Pos, lit string) {
pos = s.r.pos()
s.r.inc()
// skip and exit '/*!' if we see '*/'
if s.inBangComment && s.r.peek() == '/' {
s.inBangComment = false
s.r.inc()
return s.scan()
}
// otherwise it is just a normal star.
s.identifierDot = false
return '*', pos, "*"
}
func startWithAt(s *Scanner) (tok int, pos Pos, lit string) {
pos = s.r.pos()
s.r.inc()
tok, lit = scanIdentifierOrString(s)
switch tok {
case '@':
s.r.inc()
stream := s.r.s[pos.Offset+2:]
var prefix string
for _, v := range []string{"global.", "session.", "local."} {
if len(v) > len(stream) {
continue
}
if strings.EqualFold(stream[:len(v)], v) {
prefix = v
s.r.incN(len(v))
break
}
}
tok, lit = scanIdentifierOrString(s)
switch tok {
case stringLit, quotedIdentifier:
var sb strings.Builder
sb.WriteString("@@")
sb.WriteString(prefix)
sb.WriteString(lit)
tok, lit = doubleAtIdentifier, sb.String()
case identifier:
tok, lit = doubleAtIdentifier, s.r.data(&pos)
}
case invalid:
return
default:
tok = singleAtIdentifier
}
return
}
func scanIdentifier(s *Scanner) (int, Pos, string) {
pos := s.r.pos()
s.r.incAsLongAs(isIdentChar)
return identifier, pos, s.r.data(&pos)
}
func scanIdentifierOrString(s *Scanner) (tok int, lit string) {
ch1 := s.r.peek()
switch ch1 {
case '\'', '"':
tok, _, lit = startString(s)
case '`':
tok, _, lit = scanQuotedIdent(s)
default:
if isUserVarChar(ch1) {
pos := s.r.pos()
s.r.incAsLongAs(isUserVarChar)
tok, lit = identifier, s.r.data(&pos)
} else {
tok = int(ch1)
}
}
return
}
var (
quotedIdentifier = -identifier
)
func scanQuotedIdent(s *Scanner) (tok int, pos Pos, lit string) {
pos = s.r.pos()
s.r.inc()
s.buf.Reset()
for !s.r.eof() {
tPos := s.r.pos()
if s.r.skipRune(s.client) {
s.buf.WriteString(s.r.data(&tPos))
continue
}
ch := s.r.readByte()
if ch == '`' {
if s.r.peek() != '`' {
// don't return identifier in case that it's interpreted as keyword token later.
tok, lit = quotedIdentifier, s.buf.String()
return
}
s.r.inc()
}
s.buf.WriteByte(ch)
}
tok = invalid
return
}
func startString(s *Scanner) (tok int, pos Pos, lit string) {
return s.scanString()
}
// lazyBuf is used to avoid allocation if possible.
// it has a useBuf field indicates whether bytes.Buffer is necessary. if
// useBuf is false, we can avoid calling bytes.Buffer.String(), which
// make a copy of data and cause allocation.
type lazyBuf struct {
useBuf bool
r *reader
b *bytes.Buffer
p *Pos
}
func (mb *lazyBuf) setUseBuf(str string) {
if !mb.useBuf {
mb.useBuf = true
mb.b.Reset()
mb.b.WriteString(str)
}
}
func (mb *lazyBuf) writeRune(r rune, w int) {
if mb.useBuf {
if w > 1 {
mb.b.WriteRune(r)
} else {
mb.b.WriteByte(byte(r))
}
}
}
func (mb *lazyBuf) data() string {
var lit string
if mb.useBuf {
lit = mb.b.String()
} else {
lit = mb.r.data(mb.p)
lit = lit[1 : len(lit)-1]
}
return lit
}
func (s *Scanner) scanString() (tok int, pos Pos, lit string) {
tok, pos = stringLit, s.r.pos()
ending := s.r.readByte()
s.buf.Reset()
for !s.r.eof() {
tPos := s.r.pos()
if s.r.skipRune(s.client) {
s.buf.WriteString(s.r.data(&tPos))
continue
}
ch0 := s.r.readByte()
if ch0 == ending {
if s.r.peek() != ending {
lit = s.buf.String()
return
}
s.r.inc()
s.buf.WriteByte(ch0)
} else if ch0 == '\\' && !s.sqlMode.HasNoBackslashEscapesMode() {
if s.r.eof() {
break
}
s.handleEscape(s.r.peek(), &s.buf)
s.r.inc()
} else {
s.buf.WriteByte(ch0)
}
}
tok = invalid
return
}
// handleEscape handles the case in scanString when previous char is '\'.
func (*Scanner) handleEscape(b byte, buf *bytes.Buffer) {
var ch0 byte
/*
\" \' \\ \n \0 \b \Z \r \t ==> escape to one char
\% \_ ==> preserve both char
other ==> remove \
*/
switch b {
case 'n':
ch0 = '\n'
case '0':
ch0 = 0
case 'b':
ch0 = 8
case 'Z':
ch0 = 26
case 'r':
ch0 = '\r'
case 't':
ch0 = '\t'
case '%', '_':
buf.WriteByte('\\')
ch0 = b
default:
ch0 = b
}
buf.WriteByte(ch0)
}
func startWithNumber(s *Scanner) (tok int, pos Pos, lit string) {
if s.identifierDot {
return scanIdentifier(s)
}
pos = s.r.pos()
tok = intLit
ch0 := s.r.readByte()
if ch0 == '0' {
tok = intLit
ch1 := s.r.peek()
switch {
case ch1 >= '0' && ch1 <= '7':
s.r.inc()
s.scanOct()
case ch1 == 'x' || ch1 == 'X':
s.r.inc()
p1 := s.r.pos()
s.scanHex()
p2 := s.r.pos()
// 0x, 0x7fz3 are identifier
if p1 == p2 || isDigit(s.r.peek()) {
s.r.incAsLongAs(isIdentChar)
return identifier, pos, s.r.data(&pos)
}
tok = hexLit
case ch1 == 'b':
s.r.inc()
p1 := s.r.pos()
s.scanBit()
p2 := s.r.pos()
// 0b, 0b123, 0b1ab are identifier
if p1 == p2 || isDigit(s.r.peek()) {
s.r.incAsLongAs(isIdentChar)
return identifier, pos, s.r.data(&pos)
}
tok = bitLit
case ch1 == '.':
return s.scanFloat(&pos)
case ch1 == 'B':
s.r.incAsLongAs(isIdentChar)
return identifier, pos, s.r.data(&pos)
}
}
s.scanDigits()
ch0 = s.r.peek()
if ch0 == '.' || ch0 == 'e' || ch0 == 'E' {
return s.scanFloat(&pos)
}
// Identifiers may begin with a digit but unless quoted may not consist solely of digits.
if !s.r.eof() && isIdentChar(ch0) {
s.r.incAsLongAs(isIdentChar)
return identifier, pos, s.r.data(&pos)
}
lit = s.r.data(&pos)
return
}
func startWithDot(s *Scanner) (tok int, pos Pos, lit string) {
pos = s.r.pos()
s.r.inc()
if s.identifierDot {
return int('.'), pos, "."
}
if isDigit(s.r.peek()) {
tok, p, l := s.scanFloat(&pos)
if tok == identifier {
return invalid, p, l
}
return tok, p, l
}
tok, lit = int('.'), "."
return
}
func (s *Scanner) scanOct() {
s.r.incAsLongAs(func(ch byte) bool {
return ch >= '0' && ch <= '7'
})
}
func (s *Scanner) scanHex() {
s.r.incAsLongAs(func(ch byte) bool {
return ch >= '0' && ch <= '9' ||
ch >= 'a' && ch <= 'f' ||
ch >= 'A' && ch <= 'F'
})
}
func (s *Scanner) scanBit() {
s.r.incAsLongAs(func(ch byte) bool {
return ch == '0' || ch == '1'
})
}
func (s *Scanner) scanFloat(beg *Pos) (tok int, pos Pos, lit string) {
s.r.updatePos(*beg)
// float = D1 . D2 e D3
s.scanDigits()
ch0 := s.r.peek()
if ch0 == '.' {
s.r.inc()
s.scanDigits()
ch0 = s.r.peek()
}
if ch0 == 'e' || ch0 == 'E' {
s.r.inc()
ch0 = s.r.peek()
if ch0 == '-' || ch0 == '+' {
s.r.inc()
}
if isDigit(s.r.peek()) {
s.scanDigits()
tok = floatLit
} else {
// D1 . D2 e XX when XX is not D3, parse the result to an identifier.
// 9e9e = 9e9(float) + e(identifier)
// 9est = 9est(identifier)
s.r.updatePos(*beg)
s.r.incAsLongAs(isIdentChar)
tok = identifier
}
} else {
tok = decLit
}
pos, lit = *beg, s.r.data(beg)
return
}
func (s *Scanner) scanDigits() string {
pos := s.r.pos()
s.r.incAsLongAs(isDigit)
return s.r.data(&pos)
}
// scanVersionDigits scans for `min` to `max` digits (range inclusive) used in
// `/*!12345 ... */` comments.
func (s *Scanner) scanVersionDigits(minv, maxv int) {
pos := s.r.pos()
for i := range maxv {
ch := s.r.peek()
if isDigit(ch) {
s.r.inc()
} else if i < minv {
s.r.updatePos(pos)
return
} else {
break
}
}
}
func (s *Scanner) scanFeatureIDs() (featureIDs []string) {
pos := s.r.pos()
const init, expectChar, obtainChar = 0, 1, 2
state := init
var b strings.Builder
for !s.r.eof() {
ch := s.r.peek()
s.r.inc()
switch state {
case init:
if ch == '[' {
state = expectChar
break
}
s.r.updatePos(pos)
return nil
case expectChar:
if isIdentChar(ch) {
b.WriteByte(ch)
state = obtainChar
break
}
s.r.updatePos(pos)
return nil
case obtainChar:
if isIdentChar(ch) {
b.WriteByte(ch)
state = obtainChar
break
} else if ch == ',' {
featureIDs = append(featureIDs, b.String())
b.Reset()
state = expectChar
break
} else if ch == ']' {
featureIDs = append(featureIDs, b.String())
return featureIDs
}
s.r.updatePos(pos)
return nil
}
}
s.r.updatePos(pos)
return nil
}
func (s *Scanner) lastErrorAsWarn() {
if len(s.errs) == 0 {
return
}
s.warns = append(s.warns, s.errs[len(s.errs)-1])
s.errs = s.errs[:len(s.errs)-1]
}
type reader struct {
s string
p Pos
l int
}
var eof = Pos{-1, -1, -1}
func (r *reader) eof() bool {
return r.p.Offset >= r.l
}
// peek() peeks a rune from underlying reader.
// if reader meets EOF, it will return 0. to distinguish from
// the real 0, the caller should call r.eof() again to check.
func (r *reader) peek() byte {
if r.eof() {
return 0
}
return r.s[r.p.Offset]
}
// inc increase the position offset of the reader.
// peek must be called before calling inc!
func (r *reader) inc() {
if r.s[r.p.Offset] == '\n' {
r.p.Line++
r.p.Col = 0
}
r.p.Offset++
r.p.Col++
}
func (r *reader) incN(n int) {
for range n {
r.inc()
}
}
func (r *reader) readByte() (ch byte) {
ch = r.peek()
if r.eof() {
return
}
r.inc()
return
}
func (r *reader) pos() Pos {
return r.p
}
func (r *reader) updatePos(pos Pos) {
r.p = pos
}
func (r *reader) data(from *Pos) string {
return r.s[from.Offset:r.p.Offset]
}
func (r *reader) incAsLongAs(fn func(b byte) bool) byte {
for {
ch := r.peek()
if !fn(ch) {
return ch
}
if r.eof() {
return 0
}
r.inc()
}
}
// skipRune skip mb character, return true indicate something has been skipped.
func (r *reader) skipRune(enc charset.Encoding) bool {
if r.s[r.p.Offset] <= unicode.MaxASCII {
return false
}
c := enc.MbLen(r.s[r.p.Offset:])
r.incN(c)
return c > 0
}
// Copyright 2016 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// See the License for the specific language governing permissions and
// limitations under the License.
package parser
func isLetter(ch byte) bool {
return (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z')
}
func isDigit(ch byte) bool {
return ch >= '0' && ch <= '9'
}
func isIdentChar(ch byte) bool {
return isLetter(ch) || isDigit(ch) || ch == '_' || ch == '$' || isIdentExtend(ch)
}
func isIdentExtend(ch byte) bool {
return ch >= 0x80
}
// See https://dev.mysql.com/doc/refman/5.7/en/identifiers.html
func isInCorrectIdentifierName(name string) bool {
if len(name) == 0 {
return true
}
if name[len(name)-1] == ' ' {
return true
}
return false
}
// Initialize a lookup table for isUserVarChar
var isUserVarCharTable [256]bool
func init() {
for i := range 256 {
ch := byte(i)
isUserVarCharTable[i] = isLetter(ch) || isDigit(ch) || ch == '_' || ch == '$' || ch == '.' || isIdentExtend(ch)
}
}
func isUserVarChar(ch byte) bool {
return isUserVarCharTable[ch]
}
type trieNode struct {
childs [256]*trieNode
token int
fn func(s *Scanner) (int, Pos, string)
}
var ruleTable trieNode
func initTokenByte(c byte, tok int) {
if ruleTable.childs[c] == nil {
ruleTable.childs[c] = &trieNode{}
}
ruleTable.childs[c].token = tok
}
func initTokenString(str string, tok int) {
node := &ruleTable
for _, c := range str {
if node.childs[c] == nil {
node.childs[c] = &trieNode{}
}
node = node.childs[c]
}
node.token = tok
}
func initTokenFunc(str string, fn func(s *Scanner) (int, Pos, string)) {
for i := range len(str) {
c := str[i]
if ruleTable.childs[c] == nil {
ruleTable.childs[c] = &trieNode{}
}
ruleTable.childs[c].fn = fn
}
}
func init() {
// invalid is a special token defined in parser.y, when parser meet
// this token, it will throw an error.
// set root trie node's token to invalid, so when input match nothing
// in the trie, invalid will be the default return token.
ruleTable.token = invalid
initTokenByte('/', int('/'))
initTokenByte('+', int('+'))
initTokenByte('>', int('>'))
initTokenByte('<', int('<'))
initTokenByte('(', int('('))
initTokenByte(')', int(')'))
initTokenByte('[', int('['))
initTokenByte(']', int(']'))
initTokenByte(';', int(';'))
initTokenByte(',', int(','))
initTokenByte('&', int('&'))
initTokenByte('%', int('%'))
initTokenByte(':', int(':'))
initTokenByte('|', int('|'))
initTokenByte('!', int('!'))
initTokenByte('^', int('^'))
initTokenByte('~', int('~'))
initTokenByte('\\', int('\\'))
initTokenByte('?', paramMarker)
initTokenByte('=', eq)
initTokenByte('{', int('{'))
initTokenByte('}', int('}'))
initTokenString("||", pipes)
initTokenString("&&", andand)
initTokenString("&^", andnot)
initTokenString(":=", assignmentEq)
initTokenString("<=>", nulleq)
initTokenString(">=", ge)
initTokenString("<=", le)
initTokenString("!=", neq)
initTokenString("<>", neqSynonym)
initTokenString("<<", lsh)
initTokenString(">>", rsh)
initTokenString("\\N", null)
initTokenFunc("@", startWithAt)
initTokenFunc("/", startWithSlash)
initTokenFunc("*", startWithStar)
initTokenFunc("-", startWithDash)
initTokenFunc("#", startWithSharp)
initTokenFunc("Xx", startWithXx)
initTokenFunc("Nn", startWithNn)
initTokenFunc("Bb", startWithBb)
initTokenFunc(".", startWithDot)
initTokenFunc("_$ACDEFGHIJKLMOPQRSTUVWYZacdefghijklmopqrstuvwyz", scanIdentifier)
initTokenFunc("`", scanQuotedIdent)
initTokenFunc("0123456789", startWithNumber)
initTokenFunc("'\"", startString)
}
// isInTokenMap indicates whether the target string is contained in tokenMap.
func isInTokenMap(target string) bool {
_, ok := tokenMap[target]
return ok
}
// tokenMap is a map of known identifiers to the parser token ID.
// Please try to keep the map in alphabetical order.
var tokenMap = map[string]int{
"ACCOUNT": account,
"ACTION": action,
"ADD": add,
"ADDDATE": addDate,
"ADD_COLUMNAR_REPLICA_ON_DEMAND": addColumnarReplicaOnDemand,
"ADMIN": admin,
"ADVISE": advise,
"AFTER": after,
"AGAINST": against,
"AGO": ago,
"ALGORITHM": algorithm,
"ALL": all,
"ALTER": alter,
"ALWAYS": always,
"ANALYZE": analyze,
"AND": and,
"ANY": any,
"APPROX_COUNT_DISTINCT": approxCountDistinct,
"APPROX_PERCENTILE": approxPercentile,
"ARRAY": array,
"AS": as,
"ASC": asc,
"ASCII": ascii,
"APPLY": apply,
"ATTRIBUTE": attribute,
"ATTRIBUTES": attributes,
"BATCH": batch,
"BACKGROUND": background,
"STATS_OPTIONS": statsOptions,
"STATS_SAMPLE_RATE": statsSampleRate,
"STATS_COL_CHOICE": statsColChoice,
"STATS_COL_LIST": statsColList,
"AUTO_ID_CACHE": autoIdCache,
"AUTO_INCREMENT": autoIncrement,
"AUTO_RANDOM": autoRandom,
"AUTO_RANDOM_BASE": autoRandomBase,
"AVG_ROW_LENGTH": avgRowLength,
"AVG": avg,
"BACKEND": backend,
"BACKUP": backup,
"BACKUPS": backups,
"BDR": bdr,
"BEGIN": begin,
"BETWEEN": between,
"BERNOULLI": bernoulli,
"BIGINT": bigIntType,
"BINARY": binaryType,
"BINDING": binding,
"BINDING_CACHE": bindingCache,
"BINDINGS": bindings,
"BINLOG": binlog,
"BIT_AND": bitAnd,
"BIT_OR": bitOr,
"BIT_XOR": bitXor,
"BIT": bitType,
"BLOB": blobType,
"BLOCK": block,
"BOOL": boolType,
"BOOLEAN": booleanType,
"BOTH": both,
"BOUND": bound,
"BR": br,
"BRIEF": briefType,
"BTREE": btree,
"BUCKETS": buckets,
"BUILTINS": builtins,
"BURSTABLE": burstable,
"BY": by,
"BYTE": byteType,
"CACHE": cache,
"CALIBRATE": calibrate,
"CALL": call,
"CANCEL": cancel,
"CAPTURE": capture,
"CARDINALITY": cardinality,
"CASCADE": cascade,
"CASCADED": cascaded,
"CASE": caseKwd,
"CAST": cast,
"CAUSAL": causal,
"CHAIN": chain,
"CHANGE": change,
"CHAR": charType,
"CHARACTER": character,
"CHARSET": charsetKwd,
"CHECK": check,
"CHECKPOINT": checkpoint,
"CHECKSUM": checksum,
"CIPHER": cipher,
"CLEANUP": cleanup,
"CLIENT": client,
"CLIENT_ERRORS_SUMMARY": clientErrorsSummary,
"CLOSE": close,
"CLUSTER": cluster,
"CLUSTERED": clustered,
"CMSKETCH": cmSketch,
"COALESCE": coalesce,
"COLLATE": collate,
"COLLATION": collation,
"COLUMN_FORMAT": columnFormat,
"COLUMN_STATS_USAGE": columnStatsUsage,
"COLUMN": column,
"COLUMNAR": columnar,
"COLUMNS": columns,
"COMMENT": comment,
"COMMIT": commit,
"COMMITTED": committed,
"COMPACT": compact,
"COMPRESS": compress,
"COMPRESSED": compressed,
"COMPRESSION": compression,
"CONCURRENCY": concurrency,
"CONFIG": config,
"CONNECTION": connection,
"CONSISTENCY": consistency,
"CONSISTENT": consistent,
"CONSTRAINT": constraint,
"CONSTRAINTS": constraints,
"CONTEXT": context,
"CONTINUE": continueKwd,
"CONVERT": convert,
"COOLDOWN": cooldown,
"COPY": copyKwd,
"CORRELATION": correlation,
"CPU": cpu,
"CREATE": create,
"CROSS": cross,
"CSV_BACKSLASH_ESCAPE": csvBackslashEscape,
"CSV_DELIMITER": csvDelimiter,
"CSV_HEADER": csvHeader,
"CSV_NOT_NULL": csvNotNull,
"CSV_NULL": csvNull,
"CSV_SEPARATOR": csvSeparator,
"CSV_TRIM_LAST_SEPARATORS": csvTrimLastSeparators,
"WAIT_TIFLASH_READY": waitTiflashReady,
"WITH_SYS_TABLE": withSysTable,
"IGNORE_STATS": ignoreStats,
"LOAD_STATS": loadStats,
"CHECKSUM_CONCURRENCY": checksumConcurrency,
"COMPRESSION_LEVEL": compressionLevel,
"COMPRESSION_TYPE": compressionType,
"ENCRYPTION_METHOD": encryptionMethod,
"ENCRYPTION_KEYFILE": encryptionKeyFile,
"CURDATE": curDate,
"CURRENT_DATE": currentDate,
"CURRENT_ROLE": currentRole,
"CURRENT_TIME": currentTime,
"CURRENT_TIMESTAMP": currentTs,
"CURRENT_USER": currentUser,
"CURRENT": current,
"CURSOR": cursor,
"CURTIME": curTime,
"CYCLE": cycle,
"DATA": data,
"DATABASE": database,
"DATABASES": databases,
"DATE_ADD": dateAdd,
"DATE_SUB": dateSub,
"DATE": dateType,
"DATETIME": datetimeType,
"DAY_HOUR": dayHour,
"DAY_MICROSECOND": dayMicrosecond,
"DAY_MINUTE": dayMinute,
"DAY_SECOND": daySecond,
"DAY": day,
"DDL": ddl,
"DEALLOCATE": deallocate,
"DEC": decimalType,
"DECIMAL": decimalType,
"DECLARE": declare,
"DEFAULT": defaultKwd,
"DEFINED": defined,
"DEFINER": definer,
"DELAY_KEY_WRITE": delayKeyWrite,
"DELAYED": delayed,
"DELETE": deleteKwd,
"DEPENDENCY": dependency,
"DEPTH": depth,
"DESC": desc,
"DESCRIBE": describe,
"DIGEST": digest,
"DIRECTORY": directory,
"DISABLE": disable,
"DISABLED": disabled,
"DISCARD": discard,
"DISK": disk,
"DISTINCT": distinct,
"DISTINCTROW": distinct,
"DISTRIBUTE": distribute,
"DISTRIBUTION": distribution,
"DISTRIBUTIONS": distributions,
"DIV": div,
"DO": do,
"DOT": dotType,
"DOUBLE": doubleType,
"DROP": drop,
"DRY": dry,
"DRYRUN": dryRun,
"DUAL": dual,
"DUMP": dump,
"DUPLICATE": duplicate,
"DURATION": timeDuration,
"DYNAMIC": dynamic,
"ELSE": elseKwd,
"ELSEIF": elseIfKwd,
"ENABLE": enable,
"ENABLED": enabled,
"ENCLOSED": enclosed,
"ENCRYPTION": encryption,
"END": end,
"END_TIME": endTime,
"ENFORCED": enforced,
"ENGINE": engine,
"ENGINES": engines,
"ENGINE_ATTRIBUTE": engine_attribute,
"SECONDARY_ENGINE_ATTRIBUTE": secondaryEngineAttribute,
"ENUM": enum,
"ERROR": errorKwd,
"ERRORS": identSQLErrors,
"ESCAPE": escape,
"ESCAPED": escaped,
"EVENT": event,
"EVENTS": events,
"EVOLVE": evolve,
"EXACT": exact,
"EXEC_ELAPSED": execElapsed,
"EXCEPT": except,
"EXCHANGE": exchange,
"EXCLUSIVE": exclusive,
"EXECUTE": execute,
"EXISTS": exists,
"EXIT": exit,
"EXPANSION": expansion,
"EXPIRE": expire,
"EXPLAIN": explain,
"EXPR_PUSHDOWN_BLACKLIST": exprPushdownBlacklist,
"EXTENDED": extended,
"EXPLORE": explore,
"EXTRACT": extract,
"FALSE": falseKwd,
"FAULTS": faultsSym,
"FETCH": fetch,
"FIELDS": fields,
"FILE": file,
"FIRST": first,
"FIXED": fixed,
"FLASHBACK": flashback,
"FLOAT": floatType,
"FLOAT4": float4Type,
"FLOAT8": float8Type,
"FLUSH": flush,
"FOLLOWER": follower,
"FOLLOWERS": followers,
"FOLLOWER_CONSTRAINTS": followerConstraints,
"FOLLOWING": following,
"FOR": forKwd,
"FORCE": force,
"FOREIGN": foreign,
"FORMAT": format,
"FOUND": found,
"FROM": from,
"FULL": full,
"FULL_BACKUP_STORAGE": fullBackupStorage,
"FULLTEXT": fulltext,
"FUNCTION": function,
"GC_TTL": gcTTL,
"GENERAL": general,
"GENERATED": generated,
"GET_FORMAT": getFormat,
"GLOBAL": global,
"GRANT": grant,
"GRANTS": grants,
"GROUP_CONCAT": groupConcat,
"GROUP": group,
"HASH": hash,
"HANDLER": handler,
"HAVING": having,
"HELP": help,
"HIGH_PRIORITY": highPriority,
"HISTORY": history,
"HISTOGRAM": histogram,
"HNSW": hnsw,
"HOSTS": hosts,
"HOUR_MICROSECOND": hourMicrosecond,
"HOUR_MINUTE": hourMinute,
"HOUR_SECOND": hourSecond,
"HOUR": hour,
"IDENTIFIED": identified,
"IF": ifKwd,
"IGNORE": ignore,
"ILIKE": ilike,
"IMPORT": importKwd,
"IMPORTS": imports,
"IN": in,
"INCREMENT": increment,
"INCREMENTAL": incremental,
"INDEX": index,
"INDEXES": indexes,
"INFILE": infile,
"INNER": inner,
"INOUT": inout,
"INPLACE": inplace,
"INSERT_METHOD": insertMethod,
"INSERT": insert,
"INSTANCE": instance,
"INSTANT": instant,
"INT": intType,
"INT1": int1Type,
"INT2": int2Type,
"INT3": int3Type,
"INT4": int4Type,
"INT8": int8Type,
"INTEGER": integerType,
"INTERNAL": internal,
"INTERSECT": intersect,
"INTERVAL": interval,
"INTO": into,
"INVERTED": inverted,
"INVISIBLE": invisible,
"INVOKER": invoker,
"ITERATE": iterate,
"IO": io,
"RU_PER_SEC": ruRate,
"PRIORITY": priority,
"HIGH": high,
"MEDIUM": medium,
"LOW": low,
"IO_READ_BANDWIDTH": ioReadBandwidth,
"IO_WRITE_BANDWIDTH": ioWriteBandwidth,
"IPC": ipc,
"IS": is,
"ISOLATION": isolation,
"ISSUER": issuer,
"JOB": job,
"JOBS": jobs,
"JOIN": join,
"JSON_ARRAYAGG": jsonArrayagg,
"JSON_OBJECTAGG": jsonObjectAgg,
"JSON_SUM_CRC32": jsonSumCrc32,
"JSON": jsonType,
"KEY_BLOCK_SIZE": keyBlockSize,
"KEY": key,
"KEYS": keys,
"KILL": kill,
"LABELS": labels,
"LANGUAGE": language,
"LAST_BACKUP": lastBackup,
"LAST": last,
"LASTVAL": lastval,
"LEADER": leader,
"LEADER_CONSTRAINTS": leaderConstraints,
"LEADING": leading,
"LEARNER": learner,
"LEARNER_CONSTRAINTS": learnerConstraints,
"LEARNERS": learners,
"LEAVE": leave,
"LEFT": left,
"LESS": less,
"LEVEL": level,
"LIKE": like,
"LIMIT": limit,
"LITE": lite,
"LINEAR": linear,
"LINES": lines,
"LIST": list,
"LOAD": load,
"LOCAL": local,
"LOCALTIME": localTime,
"LOCALTIMESTAMP": localTs,
"LOCATION": location,
"LOCK": lock,
"LOCKED": locked,
"LOG": log,
"LOGS": logs,
"LONG": long,
"LONGBLOB": longblobType,
"LONGTEXT": longtextType,
"LOW_PRIORITY": lowPriority,
"MASTER": master,
"MATCH": match,
"MAX_CONNECTIONS_PER_HOUR": maxConnectionsPerHour,
"MAX_IDXNUM": max_idxnum,
"MAX_MINUTES": max_minutes,
"MAX_QUERIES_PER_HOUR": maxQueriesPerHour,
"MAX_ROWS": maxRows,
"MAX_UPDATES_PER_HOUR": maxUpdatesPerHour,
"MAX_USER_CONNECTIONS": maxUserConnections,
"MAX": max,
"MAXVALUE": maxValue,
"MB": mb,
"MEDIUMBLOB": mediumblobType,
"MEDIUMINT": mediumIntType,
"MEDIUMTEXT": mediumtextType,
"MEMORY": memory,
"MEMBER": member,
"MERGE": merge,
"METADATA": metadata,
"MICROSECOND": microsecond,
"MIDDLEINT": middleIntType,
"MIN_ROWS": minRows,
"MIN": min,
"MINUTE_MICROSECOND": minuteMicrosecond,
"MINUTE_SECOND": minuteSecond,
"MINUTE": minute,
"MINVALUE": minValue,
"MOD": mod,
"MODE": mode,
"MODIFY": modify,
"MONTH": month,
"NAMES": names,
"NATIONAL": national,
"NATURAL": natural,
"NCHAR": ncharType,
"NEVER": never,
"NEXT_ROW_ID": next_row_id,
"NEXT": next,
"NEXTVAL": nextval,
"NO_WRITE_TO_BINLOG": noWriteToBinLog,
"NO": no,
"NOCACHE": nocache,
"NOCYCLE": nocycle,
"NODE_ID": nodeID,
"NODE_STATE": nodeState,
"NODEGROUP": nodegroup,
"NOMAXVALUE": nomaxvalue,
"NOMINVALUE": nominvalue,
"NONCLUSTERED": nonclustered,
"NONE": none,
"NOT": not,
"NOW": now,
"NOWAIT": nowait,
"NULL": null,
"NULLS": nulls,
"NUMERIC": numericType,
"NVARCHAR": nvarcharType,
"OF": of,
"OFF": off,
"OFFSET": offset,
"OLTP_READ_ONLY": oltpReadOnly,
"OLTP_READ_WRITE": oltpReadWrite,
"OLTP_WRITE_ONLY": oltpWriteOnly,
"TPCH_10": tpch10,
"ON_DUPLICATE": onDuplicate,
"ON": on,
"ONLINE": online,
"ONLY": only,
"OPEN": open,
"OPT_RULE_BLACKLIST": optRuleBlacklist,
"OPTIMISTIC": optimistic,
"OPTIMIZE": optimize,
"OPTION": option,
"OPTIONAL": optional,
"OPTIONALLY": optionally,
"OR": or,
"ORDER": order,
"OUT": out,
"OUTER": outer,
"OUTFILE": outfile,
"PACK_KEYS": packKeys,
"PAGE": pageSym,
"PARSER": parser,
"PARTIAL": partial,
"PARTITION": partition,
"PARTITIONING": partitioning,
"PARTITIONS": partitions,
"PASSWORD": password,
"PAUSE": pause,
"PERCENT": percent,
"PER_DB": per_db,
"PER_TABLE": per_table,
"PESSIMISTIC": pessimistic,
"PLACEMENT": placement,
"PLAN": plan,
"PLAN_CACHE": planCache,
"PLUGINS": plugins,
"POINT": point,
"POLICY": policy,
"POSITION": position,
"PRE_SPLIT_REGIONS": preSplitRegions,
"PRECEDING": preceding,
"PREDICATE": predicate,
"PRECISION": precisionType,
"PREPARE": prepare,
"PRESERVE": preserve,
"PRIMARY": primary,
"PRIMARY_REGION": primaryRegion,
"PRIVILEGES": privileges,
"PROCEDURE": procedure,
"PROCESS": process,
"PROCESSED_KEYS": processedKeys,
"PROCESSLIST": processlist,
"PROFILE": profile,
"PROFILES": profiles,
"PROXY": proxy,
"PURGE": purge,
"QUARTER": quarter,
"QUERIES": queries,
"QUERY": query,
"QUERY_LIMIT": queryLimit,
"QUICK": quick,
"RANGE": rangeKwd,
"RATE_LIMIT": rateLimit,
"READ": read,
"READ_ONLY": readOnly,
"REAL": realType,
"REBUILD": rebuild,
"RECENT": recent,
"RECOMMEND": recommend,
"RECOVER": recover,
"RECURSIVE": recursive,
"REDUNDANT": redundant,
"REFERENCES": references,
"REFRESH": refresh,
"REGEXP": regexpKwd,
"REGION": region,
"REGIONS": regions,
"RELEASE": release,
"RELOAD": reload,
"REMOVE": remove,
"RENAME": rename,
"REORGANIZE": reorganize,
"REPAIR": repair,
"REPEAT": repeat,
"REPEATABLE": repeatable,
"REPLACE": replace,
"REPLAY": replay,
"REPLAYER": replayer,
"REPLICA": replica,
"REPLICAS": replicas,
"REPLICATION": replication,
"RU": ru,
"RULE": rule,
"REQUIRE": require,
"REQUIRED": required,
"RESET": reset,
"RESOURCE": resource,
"RESPECT": respect,
"RESTART": restart,
"RESTORE": restore,
"RESTORES": restores,
"RESTORED_TS": restoredTS,
"RESTRICT": restrict,
"REVERSE": reverse,
"REVOKE": revoke,
"RIGHT": right,
"RLIKE": rlike,
"ROLE": role,
"ROLLBACK": rollback,
"ROLLUP": rollup,
"ROUTINE": routine,
"ROW_COUNT": rowCount,
"ROW_FORMAT": rowFormat,
"ROW": row,
"ROWS": rows,
"RTREE": rtree,
"HYPO": hypo,
"RESUME": resume,
"RUN": run,
"RUNNING": running,
"S3": s3,
"SAMPLES": samples,
"SAMPLERATE": sampleRate,
"SAN": san,
"SAVEPOINT": savepoint,
"SCHEDULE": schedule,
"SCHEMA": database,
"SCHEMAS": databases,
"SECOND_MICROSECOND": secondMicrosecond,
"SECOND": second,
"SECONDARY": secondary,
"SECONDARY_ENGINE": secondaryEngine,
"SECONDARY_LOAD": secondaryLoad,
"SECONDARY_UNLOAD": secondaryUnload,
"SECURITY": security,
"SELECT": selectKwd,
"SEND_CREDENTIALS_TO_TIKV": sendCredentialsToTiKV,
"SEPARATOR": separator,
"SEQUENCE": sequence,
"SERIAL": serial,
"SERIALIZABLE": serializable,
"SESSION": session,
"SESSION_STATES": sessionStates,
"SET": set,
"SETVAL": setval,
"SHARD_ROW_ID_BITS": shardRowIDBits,
"SHARE": share,
"SHARED": shared,
"SHOW": show,
"SHUTDOWN": shutdown,
"SIGNED": signed,
"SIMILAR": similar,
"SIMPLE": simple,
"SKIP": skip,
"SKIP_SCHEMA_FILES": skipSchemaFiles,
"SLAVE": slave,
"SLOW": slow,
"SMALLINT": smallIntType,
"SNAPSHOT": snapshot,
"SOME": some,
"SOURCE": source,
"SPATIAL": spatial,
"SPEED": speed,
"SPLIT": split,
"SQL_BIG_RESULT": sqlBigResult,
"SQL_BUFFER_RESULT": sqlBufferResult,
"SQL_CACHE": sqlCache,
"SQL_CALC_FOUND_ROWS": sqlCalcFoundRows,
"SQL_NO_CACHE": sqlNoCache,
"SQL_SMALL_RESULT": sqlSmallResult,
"SQL_TSI_DAY": sqlTsiDay,
"SQL_TSI_HOUR": sqlTsiHour,
"SQL_TSI_MINUTE": sqlTsiMinute,
"SQL_TSI_MONTH": sqlTsiMonth,
"SQL_TSI_QUARTER": sqlTsiQuarter,
"SQL_TSI_SECOND": sqlTsiSecond,
"SQL_TSI_WEEK": sqlTsiWeek,
"SQL_TSI_YEAR": sqlTsiYear,
"SQL": sql,
"SQLEXCEPTION": sqlexception,
"SQLSTATE": sqlstate,
"SQLWARNING": sqlwarning,
"SSL": ssl,
"STALENESS": staleness,
"START": start,
"START_TIME": startTime,
"START_TS": startTS,
"STARTING": starting,
"STATISTICS": statistics,
"STATS_AUTO_RECALC": statsAutoRecalc,
"STATS_BUCKETS": statsBuckets,
"STATS_EXTENDED": statsExtended,
"STATS_HEALTHY": statsHealthy,
"STATS_HISTOGRAMS": statsHistograms,
"STATS_TOPN": statsTopN,
"STATS_META": statsMeta,
"STATS_LOCKED": statsLocked,
"HISTOGRAMS_IN_FLIGHT": histogramsInFlight,
"STATS_PERSISTENT": statsPersistent,
"STATS_SAMPLE_PAGES": statsSamplePages,
"STATS": stats,
"STATUS": status,
"STD": stddevPop,
"STDDEV_POP": stddevPop,
"STDDEV_SAMP": stddevSamp,
"STDDEV": stddevPop,
"STOP": stop,
"STORAGE": storage,
"STORED": stored,
"STRAIGHT_JOIN": straightJoin,
"STRICT": strict,
"STRICT_FORMAT": strictFormat,
"STRONG": strong,
"SUBDATE": subDate,
"SUBJECT": subject,
"SUBPARTITION": subpartition,
"SUBPARTITIONS": subpartitions,
"SUBSTR": substring,
"SUBSTRING": substring,
"SUM": sum,
"SUPER": super,
"SURVIVAL_PREFERENCES": survivalPreferences,
"SWAPS": swaps,
"SWITCHES": switchesSym,
"SWITCH_GROUP": switchGroup,
"SYSTEM": system,
"SYSTEM_TIME": systemTime,
"TARGET": target,
"TASK_TYPES": taskTypes,
"TABLE_CHECKSUM": tableChecksum,
"TABLE": tableKwd,
"TABLES": tables,
"TABLESAMPLE": tableSample,
"TABLESPACE": tablespace,
"TEMPORARY": temporary,
"TEMPTABLE": temptable,
"TERMINATED": terminated,
"TEXT": textType,
"THAN": than,
"THEN": then,
"TIDB": tidb,
"TIDB_CURRENT_TSO": tidbCurrentTSO,
"TIDB_JSON": tidbJson,
"TIFLASH": tiFlash,
"TIKV_IMPORTER": tikvImporter,
"TIME": timeType,
"TIMESTAMP": timestampType,
"TIMESTAMPADD": timestampAdd,
"TIMESTAMPDIFF": timestampDiff,
"TIMEOUT": timeout,
"TINYBLOB": tinyblobType,
"TINYINT": tinyIntType,
"TINYTEXT": tinytextType,
"TLS": tls,
"TO": to,
"TOKEN_ISSUER": tokenIssuer,
"TOKUDB_DEFAULT": tokudbDefault,
"TOKUDB_FAST": tokudbFast,
"TOKUDB_LZMA": tokudbLzma,
"TOKUDB_QUICKLZ": tokudbQuickLZ,
"TOKUDB_SMALL": tokudbSmall,
"TOKUDB_SNAPPY": tokudbSnappy,
"TOKUDB_UNCOMPRESSED": tokudbUncompressed,
"TOKUDB_ZLIB": tokudbZlib,
"TOKUDB_ZSTD": tokudbZstd,
"TOP": top,
"TOPN": topn,
"TPCC": tpcc,
"TRACE": trace,
"TRADITIONAL": traditional,
"TRAFFIC": traffic,
"TRAILING": trailing,
"TRANSACTION": transaction,
"TRIGGER": trigger,
"TRIGGERS": triggers,
"TRIM": trim,
"TRUE": trueKwd,
"TRUNCATE": truncate,
"TRUE_CARD_COST": trueCardCost,
"TSO": tsoType,
"TTL": ttl,
"TTL_ENABLE": ttlEnable,
"TTL_JOB_INTERVAL": ttlJobInterval,
"TYPE": tp,
"UNBOUNDED": unbounded,
"UNCOMMITTED": uncommitted,
"UNDEFINED": undefined,
"UNICODE": unicodeSym,
"UNION": union,
"UNIQUE": unique,
"UNKNOWN": unknown,
"UNLOCK": unlock,
"UNLIMITED": unlimited,
"MODERATED": moderated,
"UNSET": unset,
"UNSIGNED": unsigned,
"UNTIL": until,
"UNTIL_TS": untilTS,
"UPDATE": update,
"USAGE": usage,
"USE": use,
"USER": user,
"USING": using,
"UTC_DATE": utcDate,
"UTC_TIME": utcTime,
"UTC_TIMESTAMP": utcTimestamp,
"UTILIZATION_LIMIT": utilizationLimit,
"VALIDATION": validation,
"VALUE": value,
"VALUES": values,
"VAR_POP": varPop,
"VAR_SAMP": varSamp,
"VARBINARY": varbinaryType,
"VARCHAR": varcharType,
"VARCHARACTER": varcharacter,
"VARIABLES": variables,
"VARIANCE": varPop,
"VARYING": varying,
"VECTOR": vectorType,
"VERBOSE": verboseType,
"VOTER": voter,
"VOTER_CONSTRAINTS": voterConstraints,
"VOTERS": voters,
"VIEW": view,
"VIRTUAL": virtual,
"VISIBLE": visible,
"WARNINGS": warnings,
"WATCH": watch,
"WEEK": week,
"WEIGHT_STRING": weightString,
"WHEN": when,
"WHERE": where,
"WHILE": while,
"WIDTH": width,
"WITH": with,
"WITHOUT": without,
"WRITE": write,
"WORKLOAD": workload,
"X509": x509,
"XOR": xor,
"YEAR_MONTH": yearMonth,
"YEAR": yearType,
"ZEROFILL": zerofill,
"WAIT": wait,
"FAILED_LOGIN_ATTEMPTS": failedLoginAttempts,
"PASSWORD_LOCK_TIME": passwordLockTime,
"REUSE": reuse,
}
// See https://dev.mysql.com/doc/refman/8.0/en/function-resolution.html for details.
// ADDDATE, SESSION_USER, SUBDATE, and SYSTEM_USER are exceptions because they are actually recognized as
// identifiers even in `create table adddate (a int)`.
var btFuncTokenMap = map[string]int{
"BIT_AND": builtinBitAnd,
"BIT_OR": builtinBitOr,
"BIT_XOR": builtinBitXor,
"CAST": builtinCast,
"COUNT": builtinCount,
"APPROX_COUNT_DISTINCT": builtinApproxCountDistinct,
"APPROX_PERCENTILE": builtinApproxPercentile,
"CURDATE": builtinCurDate,
"CURTIME": builtinCurTime,
"DATE_ADD": builtinDateAdd,
"DATE_SUB": builtinDateSub,
"EXTRACT": builtinExtract,
"GROUP_CONCAT": builtinGroupConcat,
"MAX": builtinMax,
"MID": builtinSubstring,
"MIN": builtinMin,
"NOW": builtinNow,
"POSITION": builtinPosition,
"STD": builtinStddevPop,
"STDDEV": builtinStddevPop,
"STDDEV_POP": builtinStddevPop,
"STDDEV_SAMP": builtinStddevSamp,
"SUBSTR": builtinSubstring,
"SUBSTRING": builtinSubstring,
"SUM": builtinSum,
"SYSDATE": builtinSysDate,
"TRANSLATE": builtinTranslate,
"TRIM": builtinTrim,
"VARIANCE": builtinVarPop,
"VAR_POP": builtinVarPop,
"VAR_SAMP": builtinVarSamp,
}
var windowFuncTokenMap = map[string]int{
"CUME_DIST": cumeDist,
"DENSE_RANK": denseRank,
"FIRST_VALUE": firstValue,
"GROUPS": groups,
"LAG": lag,
"LAST_VALUE": lastValue,
"LEAD": lead,
"NTH_VALUE": nthValue,
"NTILE": ntile,
"OVER": over,
"PERCENT_RANK": percentRank,
"RANK": rank,
"ROW_NUMBER": rowNumber,
"WINDOW": window,
}
// aliases are strings directly map to another string and use the same token.
var aliases = map[string]string{
"SCHEMA": "DATABASE",
"SCHEMAS": "DATABASES",
"DEC": "DECIMAL",
"SUBSTR": "SUBSTRING",
}
// hintedTokens is a set of tokens which recognizes a hint.
// According to https://dev.mysql.com/doc/refman/8.0/en/optimizer-hints.html,
// only SELECT, INSERT, REPLACE, UPDATE and DELETE accept optimizer hints.
// additionally we support CREATE and PARTITION for hints at table creation.
var hintedTokens = map[int]struct{}{
selectKwd: {},
insert: {},
replace: {},
update: {},
deleteKwd: {},
create: {},
partition: {},
}
var hintTokenMap = map[string]int{
// MySQL 8.0 hint names
"JOIN_FIXED_ORDER": hintJoinFixedOrder,
"JOIN_ORDER": hintJoinOrder,
"JOIN_PREFIX": hintJoinPrefix,
"JOIN_SUFFIX": hintJoinSuffix,
"BKA": hintBKA,
"NO_BKA": hintNoBKA,
"BNL": hintBNL,
"NO_BNL": hintNoBNL,
"HASH_JOIN": hintHashJoin,
"HASH_JOIN_BUILD": hintHashJoinBuild,
"HASH_JOIN_PROBE": hintHashJoinProbe,
"NO_HASH_JOIN": hintNoHashJoin,
"MERGE": hintMerge,
"NO_MERGE": hintNoMerge,
"INDEX_MERGE": hintIndexMerge,
"NO_INDEX_MERGE": hintNoIndexMerge,
"MRR": hintMRR,
"NO_MRR": hintNoMRR,
"NO_ICP": hintNoICP,
"NO_RANGE_OPTIMIZATION": hintNoRangeOptimization,
"SKIP_SCAN": hintSkipScan,
"NO_SKIP_SCAN": hintNoSkipScan,
"SEMIJOIN": hintSemijoin,
"NO_SEMIJOIN": hintNoSemijoin,
"MAX_EXECUTION_TIME": hintMaxExecutionTime,
"SET_VAR": hintSetVar,
"RESOURCE_GROUP": hintResourceGroup,
"QB_NAME": hintQBName,
"HYPO_INDEX": hintHypoIndex,
// TiDB hint names
"AGG_TO_COP": hintAggToCop,
"LIMIT_TO_COP": hintLimitToCop,
"IGNORE_PLAN_CACHE": hintIgnorePlanCache,
"HASH_AGG": hintHashAgg,
"MPP_1PHASE_AGG": hintMpp1PhaseAgg,
"MPP_2PHASE_AGG": hintMpp2PhaseAgg,
"IGNORE_INDEX": hintIgnoreIndex,
"INL_HASH_JOIN": hintInlHashJoin,
"INDEX_HASH_JOIN": hintIndexHashJoin,
"NO_INDEX_HASH_JOIN": hintNoIndexHashJoin,
"INL_JOIN": hintInlJoin,
"INDEX_JOIN": hintIndexJoin,
"NO_INDEX_JOIN": hintNoIndexJoin,
"INL_MERGE_JOIN": hintInlMergeJoin,
"INDEX_MERGE_JOIN": hintIndexMergeJoin,
"NO_INDEX_MERGE_JOIN": hintNoIndexMergeJoin,
"MEMORY_QUOTA": hintMemoryQuota,
"NO_SWAP_JOIN_INPUTS": hintNoSwapJoinInputs,
"QUERY_TYPE": hintQueryType,
"READ_CONSISTENT_REPLICA": hintReadConsistentReplica,
"READ_FROM_STORAGE": hintReadFromStorage,
"BROADCAST_JOIN": hintBCJoin,
"SHUFFLE_JOIN": hintShuffleJoin,
"MERGE_JOIN": hintSMJoin,
"NO_MERGE_JOIN": hintNoSMJoin,
"STREAM_AGG": hintStreamAgg,
"SWAP_JOIN_INPUTS": hintSwapJoinInputs,
"USE_INDEX_MERGE": hintUseIndexMerge,
"USE_INDEX": hintUseIndex,
"ORDER_INDEX": hintOrderIndex,
"NO_ORDER_INDEX": hintNoOrderIndex,
"USE_PLAN_CACHE": hintUsePlanCache,
"USE_TOJA": hintUseToja,
"TIME_RANGE": hintTimeRange,
"USE_CASCADES": hintUseCascades,
"NTH_PLAN": hintNthPlan,
"FORCE_INDEX": hintForceIndex,
"STRAIGHT_JOIN": hintStraightJoin,
"LEADING": hintLeading,
"SEMI_JOIN_REWRITE": hintSemiJoinRewrite,
"NO_DECORRELATE": hintNoDecorrelate,
// TiDB hint aliases
"TIDB_HJ": hintHashJoin,
"TIDB_INLJ": hintInlJoin,
"TIDB_SMJ": hintSMJoin,
// Other keywords
"OLAP": hintOLAP,
"OLTP": hintOLTP,
"TIKV": hintTiKV,
"TIFLASH": hintTiFlash,
"PARTITION": hintPartition,
"FALSE": hintFalse,
"TRUE": hintTrue,
"MB": hintMB,
"GB": hintGB,
"DUPSWEEDOUT": hintDupsWeedOut,
"FIRSTMATCH": hintFirstMatch,
"LOOSESCAN": hintLooseScan,
"MATERIALIZATION": hintMaterialization,
}
func (s *Scanner) isTokenIdentifier(lit string, offset int) int {
// An identifier before or after '.' means it is part of a qualified identifier.
// We do not parse it as keyword.
if s.r.peek() == '.' {
return 0
}
for idx := offset - 1; idx >= 0; idx-- {
if s.r.s[idx] == ' ' {
continue
} else if s.r.s[idx] == '.' {
return 0
}
break
}
buf := &s.buf
buf.Reset()
buf.Grow(len(lit))
data := buf.Bytes()[:len(lit)]
for i := range len(lit) {
c := lit[i]
if c >= 'a' && c <= 'z' {
data[i] = c + 'A' - 'a'
} else {
data[i] = c
}
}
checkBtFuncToken := s.r.peek() == '('
if !checkBtFuncToken && s.sqlMode.HasIgnoreSpaceMode() {
s.skipWhitespace()
checkBtFuncToken = s.r.peek() == '('
}
if checkBtFuncToken {
if tok := btFuncTokenMap[string(data)]; tok != 0 {
return tok
}
}
tok, ok := tokenMap[string(data)]
if !ok && s.supportWindowFunc {
tok = windowFuncTokenMap[string(data)]
}
return tok
}
// Copyright 2015 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// See the License for the specific language governing permissions and
// limitations under the License.
package mysql
import "unicode"
// CharsetNameToID maps charset name to its default collation ID.
func CharsetNameToID(charset string) uint8 {
// Use quick path for TiDB to avoid access CharsetIDs map
// "SHOW CHARACTER SET;" to see all the supported character sets.
if charset == "utf8mb4" {
return UTF8MB4DefaultCollationID
} else if charset == "binary" {
return BinaryDefaultCollationID
} else if charset == "utf8" {
return UTF8DefaultCollationID
} else if charset == "ascii" {
return ASCIIDefaultCollationID
} else if charset == "latin1" {
return Latin1DefaultCollationID
}
return CharsetIDs[charset]
}
// CharsetIDs maps charset name to its default collation ID.
var CharsetIDs = map[string]uint8{
"big5": 1,
"dec8": 3,
"cp850": 4,
"hp8": 6,
"koi8r": 7,
"latin1": Latin1DefaultCollationID,
"latin2": 9,
"swe7": 10,
"ascii": ASCIIDefaultCollationID,
"ujis": 12,
"sjis": 13,
"hebrew": 16,
"tis620": 18,
"euckr": 19,
"koi8u": 22,
"gb2312": 24,
"greek": 25,
"cp1250": 26,
"gbk": 28,
"latin5": 30,
"armscii8": 32,
"utf8": UTF8DefaultCollationID,
"ucs2": 35,
"cp866": 36,
"keybcs2": 37,
"macce": 38,
"macroman": 39,
"cp852": 40,
"latin7": 41,
"utf8mb4": UTF8MB4DefaultCollationID,
"cp1251": 51,
"utf16": 54,
"utf16le": 56,
"cp1256": 57,
"cp1257": 59,
"utf32": 60,
"binary": BinaryDefaultCollationID,
"geostd8": 92,
"cp932": 95,
"eucjpms": 97,
"gb18030": GB18030DefaultCollationID,
}
// Collations maps MySQL collation ID to its name.
var Collations = map[uint16]string{
1: "big5_chinese_ci",
2: "latin2_czech_cs",
3: "dec8_swedish_ci",
4: "cp850_general_ci",
5: "latin1_german1_ci",
6: "hp8_english_ci",
7: "koi8r_general_ci",
8: "latin1_swedish_ci",
9: "latin2_general_ci",
10: "swe7_swedish_ci",
11: "ascii_general_ci",
12: "ujis_japanese_ci",
13: "sjis_japanese_ci",
14: "cp1251_bulgarian_ci",
15: "latin1_danish_ci",
16: "hebrew_general_ci",
18: "tis620_thai_ci",
19: "euckr_korean_ci",
20: "latin7_estonian_cs",
21: "latin2_hungarian_ci",
22: "koi8u_general_ci",
23: "cp1251_ukrainian_ci",
24: "gb2312_chinese_ci",
25: "greek_general_ci",
26: "cp1250_general_ci",
27: "latin2_croatian_ci",
28: "gbk_chinese_ci",
29: "cp1257_lithuanian_ci",
30: "latin5_turkish_ci",
31: "latin1_german2_ci",
32: "armscii8_general_ci",
33: "utf8_general_ci",
34: "cp1250_czech_cs",
35: "ucs2_general_ci",
36: "cp866_general_ci",
37: "keybcs2_general_ci",
38: "macce_general_ci",
39: "macroman_general_ci",
40: "cp852_general_ci",
41: "latin7_general_ci",
42: "latin7_general_cs",
43: "macce_bin",
44: "cp1250_croatian_ci",
45: "utf8mb4_general_ci",
46: "utf8mb4_bin",
47: "latin1_bin",
48: "latin1_general_ci",
49: "latin1_general_cs",
50: "cp1251_bin",
51: "cp1251_general_ci",
52: "cp1251_general_cs",
53: "macroman_bin",
54: "utf16_general_ci",
55: "utf16_bin",
56: "utf16le_general_ci",
57: "cp1256_general_ci",
58: "cp1257_bin",
59: "cp1257_general_ci",
60: "utf32_general_ci",
61: "utf32_bin",
62: "utf16le_bin",
63: "binary",
64: "armscii8_bin",
65: "ascii_bin",
66: "cp1250_bin",
67: "cp1256_bin",
68: "cp866_bin",
69: "dec8_bin",
70: "greek_bin",
71: "hebrew_bin",
72: "hp8_bin",
73: "keybcs2_bin",
74: "koi8r_bin",
75: "koi8u_bin",
77: "latin2_bin",
78: "latin5_bin",
79: "latin7_bin",
80: "cp850_bin",
81: "cp852_bin",
82: "swe7_bin",
83: "utf8_bin",
84: "big5_bin",
85: "euckr_bin",
86: "gb2312_bin",
87: "gbk_bin",
88: "sjis_bin",
89: "tis620_bin",
90: "ucs2_bin",
91: "ujis_bin",
92: "geostd8_general_ci",
93: "geostd8_bin",
94: "latin1_spanish_ci",
95: "cp932_japanese_ci",
96: "cp932_bin",
97: "eucjpms_japanese_ci",
98: "eucjpms_bin",
99: "cp1250_polish_ci",
101: "utf16_unicode_ci",
102: "utf16_icelandic_ci",
103: "utf16_latvian_ci",
104: "utf16_romanian_ci",
105: "utf16_slovenian_ci",
106: "utf16_polish_ci",
107: "utf16_estonian_ci",
108: "utf16_spanish_ci",
109: "utf16_swedish_ci",
110: "utf16_turkish_ci",
111: "utf16_czech_ci",
112: "utf16_danish_ci",
113: "utf16_lithuanian_ci",
114: "utf16_slovak_ci",
115: "utf16_spanish2_ci",
116: "utf16_roman_ci",
117: "utf16_persian_ci",
118: "utf16_esperanto_ci",
119: "utf16_hungarian_ci",
120: "utf16_sinhala_ci",
121: "utf16_german2_ci",
122: "utf16_croatian_ci",
123: "utf16_unicode_520_ci",
124: "utf16_vietnamese_ci",
128: "ucs2_unicode_ci",
129: "ucs2_icelandic_ci",
130: "ucs2_latvian_ci",
131: "ucs2_romanian_ci",
132: "ucs2_slovenian_ci",
133: "ucs2_polish_ci",
134: "ucs2_estonian_ci",
135: "ucs2_spanish_ci",
136: "ucs2_swedish_ci",
137: "ucs2_turkish_ci",
138: "ucs2_czech_ci",
139: "ucs2_danish_ci",
140: "ucs2_lithuanian_ci",
141: "ucs2_slovak_ci",
142: "ucs2_spanish2_ci",
143: "ucs2_roman_ci",
144: "ucs2_persian_ci",
145: "ucs2_esperanto_ci",
146: "ucs2_hungarian_ci",
147: "ucs2_sinhala_ci",
148: "ucs2_german2_ci",
149: "ucs2_croatian_ci",
150: "ucs2_unicode_520_ci",
151: "ucs2_vietnamese_ci",
159: "ucs2_general_mysql500_ci",
160: "utf32_unicode_ci",
161: "utf32_icelandic_ci",
162: "utf32_latvian_ci",
163: "utf32_romanian_ci",
164: "utf32_slovenian_ci",
165: "utf32_polish_ci",
166: "utf32_estonian_ci",
167: "utf32_spanish_ci",
168: "utf32_swedish_ci",
169: "utf32_turkish_ci",
170: "utf32_czech_ci",
171: "utf32_danish_ci",
172: "utf32_lithuanian_ci",
173: "utf32_slovak_ci",
174: "utf32_spanish2_ci",
175: "utf32_roman_ci",
176: "utf32_persian_ci",
177: "utf32_esperanto_ci",
178: "utf32_hungarian_ci",
179: "utf32_sinhala_ci",
180: "utf32_german2_ci",
181: "utf32_croatian_ci",
182: "utf32_unicode_520_ci",
183: "utf32_vietnamese_ci",
192: "utf8_unicode_ci",
193: "utf8_icelandic_ci",
194: "utf8_latvian_ci",
195: "utf8_romanian_ci",
196: "utf8_slovenian_ci",
197: "utf8_polish_ci",
198: "utf8_estonian_ci",
199: "utf8_spanish_ci",
200: "utf8_swedish_ci",
201: "utf8_turkish_ci",
202: "utf8_czech_ci",
203: "utf8_danish_ci",
204: "utf8_lithuanian_ci",
205: "utf8_slovak_ci",
206: "utf8_spanish2_ci",
207: "utf8_roman_ci",
208: "utf8_persian_ci",
209: "utf8_esperanto_ci",
210: "utf8_hungarian_ci",
211: "utf8_sinhala_ci",
212: "utf8_german2_ci",
213: "utf8_croatian_ci",
214: "utf8_unicode_520_ci",
215: "utf8_vietnamese_ci",
223: "utf8_general_mysql500_ci",
224: "utf8mb4_unicode_ci",
225: "utf8mb4_icelandic_ci",
226: "utf8mb4_latvian_ci",
227: "utf8mb4_romanian_ci",
228: "utf8mb4_slovenian_ci",
229: "utf8mb4_polish_ci",
230: "utf8mb4_estonian_ci",
231: "utf8mb4_spanish_ci",
232: "utf8mb4_swedish_ci",
233: "utf8mb4_turkish_ci",
234: "utf8mb4_czech_ci",
235: "utf8mb4_danish_ci",
236: "utf8mb4_lithuanian_ci",
237: "utf8mb4_slovak_ci",
238: "utf8mb4_spanish2_ci",
239: "utf8mb4_roman_ci",
240: "utf8mb4_persian_ci",
241: "utf8mb4_esperanto_ci",
242: "utf8mb4_hungarian_ci",
243: "utf8mb4_sinhala_ci",
244: "utf8mb4_german2_ci",
245: "utf8mb4_croatian_ci",
246: "utf8mb4_unicode_520_ci",
247: "utf8mb4_vietnamese_ci",
248: "gb18030_chinese_ci",
249: "gb18030_bin",
255: "utf8mb4_0900_ai_ci",
309: "utf8mb4_0900_bin",
}
// CollationNames maps MySQL collation name to its ID
var CollationNames = map[string]uint16{
"big5_chinese_ci": 1,
"latin2_czech_cs": 2,
"dec8_swedish_ci": 3,
"cp850_general_ci": 4,
"latin1_german1_ci": 5,
"hp8_english_ci": 6,
"koi8r_general_ci": 7,
"latin1_swedish_ci": 8,
"latin2_general_ci": 9,
"swe7_swedish_ci": 10,
"ascii_general_ci": 11,
"ujis_japanese_ci": 12,
"sjis_japanese_ci": 13,
"cp1251_bulgarian_ci": 14,
"latin1_danish_ci": 15,
"hebrew_general_ci": 16,
"tis620_thai_ci": 18,
"euckr_korean_ci": 19,
"latin7_estonian_cs": 20,
"latin2_hungarian_ci": 21,
"koi8u_general_ci": 22,
"cp1251_ukrainian_ci": 23,
"gb2312_chinese_ci": 24,
"greek_general_ci": 25,
"cp1250_general_ci": 26,
"latin2_croatian_ci": 27,
"gbk_chinese_ci": 28,
"cp1257_lithuanian_ci": 29,
"latin5_turkish_ci": 30,
"latin1_german2_ci": 31,
"armscii8_general_ci": 32,
"utf8_general_ci": 33,
"cp1250_czech_cs": 34,
"ucs2_general_ci": 35,
"cp866_general_ci": 36,
"keybcs2_general_ci": 37,
"macce_general_ci": 38,
"macroman_general_ci": 39,
"cp852_general_ci": 40,
"latin7_general_ci": 41,
"latin7_general_cs": 42,
"macce_bin": 43,
"cp1250_croatian_ci": 44,
"utf8mb4_general_ci": 45,
"utf8mb4_bin": 46,
"latin1_bin": 47,
"latin1_general_ci": 48,
"latin1_general_cs": 49,
"cp1251_bin": 50,
"cp1251_general_ci": 51,
"cp1251_general_cs": 52,
"macroman_bin": 53,
"utf16_general_ci": 54,
"utf16_bin": 55,
"utf16le_general_ci": 56,
"cp1256_general_ci": 57,
"cp1257_bin": 58,
"cp1257_general_ci": 59,
"utf32_general_ci": 60,
"utf32_bin": 61,
"utf16le_bin": 62,
"binary": 63,
"armscii8_bin": 64,
"ascii_bin": 65,
"cp1250_bin": 66,
"cp1256_bin": 67,
"cp866_bin": 68,
"dec8_bin": 69,
"greek_bin": 70,
"hebrew_bin": 71,
"hp8_bin": 72,
"keybcs2_bin": 73,
"koi8r_bin": 74,
"koi8u_bin": 75,
"latin2_bin": 77,
"latin5_bin": 78,
"latin7_bin": 79,
"cp850_bin": 80,
"cp852_bin": 81,
"swe7_bin": 82,
"utf8_bin": 83,
"big5_bin": 84,
"euckr_bin": 85,
"gb2312_bin": 86,
"gbk_bin": 87,
"sjis_bin": 88,
"tis620_bin": 89,
"ucs2_bin": 90,
"ujis_bin": 91,
"geostd8_general_ci": 92,
"geostd8_bin": 93,
"latin1_spanish_ci": 94,
"cp932_japanese_ci": 95,
"cp932_bin": 96,
"eucjpms_japanese_ci": 97,
"eucjpms_bin": 98,
"cp1250_polish_ci": 99,
"utf16_unicode_ci": 101,
"utf16_icelandic_ci": 102,
"utf16_latvian_ci": 103,
"utf16_romanian_ci": 104,
"utf16_slovenian_ci": 105,
"utf16_polish_ci": 106,
"utf16_estonian_ci": 107,
"utf16_spanish_ci": 108,
"utf16_swedish_ci": 109,
"utf16_turkish_ci": 110,
"utf16_czech_ci": 111,
"utf16_danish_ci": 112,
"utf16_lithuanian_ci": 113,
"utf16_slovak_ci": 114,
"utf16_spanish2_ci": 115,
"utf16_roman_ci": 116,
"utf16_persian_ci": 117,
"utf16_esperanto_ci": 118,
"utf16_hungarian_ci": 119,
"utf16_sinhala_ci": 120,
"utf16_german2_ci": 121,
"utf16_croatian_ci": 122,
"utf16_unicode_520_ci": 123,
"utf16_vietnamese_ci": 124,
"ucs2_unicode_ci": 128,
"ucs2_icelandic_ci": 129,
"ucs2_latvian_ci": 130,
"ucs2_romanian_ci": 131,
"ucs2_slovenian_ci": 132,
"ucs2_polish_ci": 133,
"ucs2_estonian_ci": 134,
"ucs2_spanish_ci": 135,
"ucs2_swedish_ci": 136,
"ucs2_turkish_ci": 137,
"ucs2_czech_ci": 138,
"ucs2_danish_ci": 139,
"ucs2_lithuanian_ci": 140,
"ucs2_slovak_ci": 141,
"ucs2_spanish2_ci": 142,
"ucs2_roman_ci": 143,
"ucs2_persian_ci": 144,
"ucs2_esperanto_ci": 145,
"ucs2_hungarian_ci": 146,
"ucs2_sinhala_ci": 147,
"ucs2_german2_ci": 148,
"ucs2_croatian_ci": 149,
"ucs2_unicode_520_ci": 150,
"ucs2_vietnamese_ci": 151,
"ucs2_general_mysql500_ci": 159,
"utf32_unicode_ci": 160,
"utf32_icelandic_ci": 161,
"utf32_latvian_ci": 162,
"utf32_romanian_ci": 163,
"utf32_slovenian_ci": 164,
"utf32_polish_ci": 165,
"utf32_estonian_ci": 166,
"utf32_spanish_ci": 167,
"utf32_swedish_ci": 168,
"utf32_turkish_ci": 169,
"utf32_czech_ci": 170,
"utf32_danish_ci": 171,
"utf32_lithuanian_ci": 172,
"utf32_slovak_ci": 173,
"utf32_spanish2_ci": 174,
"utf32_roman_ci": 175,
"utf32_persian_ci": 176,
"utf32_esperanto_ci": 177,
"utf32_hungarian_ci": 178,
"utf32_sinhala_ci": 179,
"utf32_german2_ci": 180,
"utf32_croatian_ci": 181,
"utf32_unicode_520_ci": 182,
"utf32_vietnamese_ci": 183,
"utf8_unicode_ci": 192,
"utf8_icelandic_ci": 193,
"utf8_latvian_ci": 194,
"utf8_romanian_ci": 195,
"utf8_slovenian_ci": 196,
"utf8_polish_ci": 197,
"utf8_estonian_ci": 198,
"utf8_spanish_ci": 199,
"utf8_swedish_ci": 200,
"utf8_turkish_ci": 201,
"utf8_czech_ci": 202,
"utf8_danish_ci": 203,
"utf8_lithuanian_ci": 204,
"utf8_slovak_ci": 205,
"utf8_spanish2_ci": 206,
"utf8_roman_ci": 207,
"utf8_persian_ci": 208,
"utf8_esperanto_ci": 209,
"utf8_hungarian_ci": 210,
"utf8_sinhala_ci": 211,
"utf8_german2_ci": 212,
"utf8_croatian_ci": 213,
"utf8_unicode_520_ci": 214,
"utf8_vietnamese_ci": 215,
"utf8_general_mysql500_ci": 223,
"utf8mb4_unicode_ci": 224,
"utf8mb4_icelandic_ci": 225,
"utf8mb4_latvian_ci": 226,
"utf8mb4_romanian_ci": 227,
"utf8mb4_slovenian_ci": 228,
"utf8mb4_polish_ci": 229,
"utf8mb4_estonian_ci": 230,
"utf8mb4_spanish_ci": 231,
"utf8mb4_swedish_ci": 232,
"utf8mb4_turkish_ci": 233,
"utf8mb4_czech_ci": 234,
"utf8mb4_danish_ci": 235,
"utf8mb4_lithuanian_ci": 236,
"utf8mb4_slovak_ci": 237,
"utf8mb4_spanish2_ci": 238,
"utf8mb4_roman_ci": 239,
"utf8mb4_persian_ci": 240,
"utf8mb4_esperanto_ci": 241,
"utf8mb4_hungarian_ci": 242,
"utf8mb4_sinhala_ci": 243,
"utf8mb4_german2_ci": 244,
"utf8mb4_croatian_ci": 245,
"utf8mb4_unicode_520_ci": 246,
"utf8mb4_vietnamese_ci": 247,
"gb18030_chinese_ci": 248,
"gb18030_bin": 249,
"utf8mb4_0900_ai_ci": 255,
"utf8mb4_0900_bin": 309,
}
// MySQL collation information.
const (
UTF8Charset = "utf8"
UTF8MB4Charset = "utf8mb4"
DefaultCharset = UTF8MB4Charset
// DefaultCollationID is utf8mb4_bin(46)
DefaultCollationID = 46
Latin1DefaultCollationID = 47
ASCIIDefaultCollationID = 65
UTF8DefaultCollationID = 83
UTF8MB4DefaultCollationID = 46
BinaryDefaultCollationID = 63
GB18030DefaultCollationID = 248
UTF8MB4DefaultCollation = "utf8mb4_bin"
DefaultCollationName = UTF8MB4DefaultCollation
UTF8MB4GeneralCICollation = "utf8mb4_general_ci"
// MaxBytesOfCharacter, is the max bytes length of a character,
// refer to RFC3629, in UTF-8, characters from the U+0000..U+10FFFF range
// (the UTF-16 accessible range) are encoded using sequences of 1 to 4 octets.
MaxBytesOfCharacter = 4
)
// IsUTF8Charset checks if charset is utf8, utf8mb4.
func IsUTF8Charset(charset string) bool {
return charset == UTF8Charset || charset == UTF8MB4Charset
}
// RangeGraph defines valid unicode characters to use in column names. It strictly follows MySQL's definition.
// See #3994.
var RangeGraph = []*unicode.RangeTable{
// _MY_PNT
unicode.No,
unicode.Mn,
unicode.Me,
unicode.Pc,
unicode.Pd,
unicode.Pd,
unicode.Ps,
unicode.Pe,
unicode.Pi,
unicode.Pf,
unicode.Po,
unicode.Sm,
unicode.Sc,
unicode.Sk,
unicode.So,
// _MY_U
unicode.Lu,
unicode.Lt,
unicode.Nl,
// _MY_L
unicode.Ll,
unicode.Lm,
unicode.Lo,
unicode.Nl,
unicode.Mn,
unicode.Mc,
unicode.Me,
// _MY_NMR
unicode.Nd,
unicode.Nl,
unicode.No,
}
// Copyright 2017 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// See the License for the specific language governing permissions and
// limitations under the License.
package mysql
import (
"fmt"
"strings"
"github.com/pingcap/errors"
"github.com/pingcap/tidb/pkg/parser/format"
)
func newInvalidModeErr(s string) error {
return NewErr(ErrWrongValueForVar, "sql_mode", s)
}
const (
mysqlCompatibilityVersion = "8.0.11"
// VersionSeparator NOTE: DON'T MODIFY THIS VALUE.
// We don't store TiDB server version directly inside PD, but stores a concatenated
// one with MySQL compatibility version, with this fixed then we can parse TiDB
// version from ServerVersion.
VersionSeparator = "-TiDB-"
)
// Version information.
var (
// TiDBReleaseVersion is initialized by (git describe --tags) in Makefile.
TiDBReleaseVersion = "v8.4.0-this-is-a-placeholder"
// ServerVersion is the version information of this tidb-server in MySQL's format.
ServerVersion = fmt.Sprintf("%s%s%s", mysqlCompatibilityVersion, VersionSeparator, TiDBReleaseVersion)
)
// Header information.
const (
OKHeader byte = 0x00
ErrHeader byte = 0xff
EOFHeader byte = 0xfe
LocalInFileHeader byte = 0xfb
)
// AuthSwitchRequest is a protocol feature.
const AuthSwitchRequest byte = 0xfe
// Server information.
const (
ServerStatusInTrans uint16 = 0x0001
ServerStatusAutocommit uint16 = 0x0002
ServerMoreResultsExists uint16 = 0x0008
ServerStatusNoGoodIndexUsed uint16 = 0x0010
ServerStatusNoIndexUsed uint16 = 0x0020
ServerStatusCursorExists uint16 = 0x0040
ServerStatusLastRowSend uint16 = 0x0080
ServerStatusDBDropped uint16 = 0x0100
ServerStatusNoBackslashEscaped uint16 = 0x0200
ServerStatusMetadataChanged uint16 = 0x0400
ServerStatusWasSlow uint16 = 0x0800
ServerPSOutParams uint16 = 0x1000
)
// HasCursorExistsFlag return true if cursor exists indicated by server status.
func HasCursorExistsFlag(serverStatus uint16) bool {
return serverStatus&ServerStatusCursorExists > 0
}
// Identifier length limitations.
// See https://dev.mysql.com/doc/refman/5.7/en/identifiers.html
const (
// MaxPayloadLen is the max packet payload length.
MaxPayloadLen = 1<<24 - 1
// MaxTableNameLength is max length of table name identifier.
MaxTableNameLength = 64
// MaxDatabaseNameLength is max length of database name identifier.
MaxDatabaseNameLength = 64
// MaxColumnNameLength is max length of column name identifier.
MaxColumnNameLength = 64
// MaxKeyParts is max length of key parts.
MaxKeyParts = 16
// MaxIndexIdentifierLen is max length of index identifier.
MaxIndexIdentifierLen = 64
// MaxForeignKeyIdentifierLen is max length of foreign key identifier.
MaxForeignKeyIdentifierLen = 64
// MaxConstraintIdentifierLen is max length of constrain identifier.
MaxConstraintIdentifierLen = 64
// MaxViewIdentifierLen is max length of view identifier.
MaxViewIdentifierLen = 64
// MaxAliasIdentifierLen is max length of alias identifier.
MaxAliasIdentifierLen = 256
// MaxUserDefinedVariableLen is max length of user-defined variable.
MaxUserDefinedVariableLen = 64
)
// ErrTextLength error text length limit.
const ErrTextLength = 80
// Command information.
const (
ComSleep byte = iota
ComQuit
ComInitDB
ComQuery
ComFieldList
ComCreateDB
ComDropDB
ComRefresh
ComShutdown
ComStatistics
ComProcessInfo
ComConnect
ComProcessKill
ComDebug
ComPing
ComTime
ComDelayedInsert
ComChangeUser
ComBinlogDump
ComTableDump
ComConnectOut
ComRegisterSlave
ComStmtPrepare
ComStmtExecute
ComStmtSendLongData
ComStmtClose
ComStmtReset
ComSetOption
ComStmtFetch
ComDaemon
ComBinlogDumpGtid
ComResetConnection
ComEnd
)
// Client information. https://dev.mysql.com/doc/dev/mysql-server/latest/group__group__cs__capabilities__flags.html
const (
ClientLongPassword uint32 = 1 << iota // CLIENT_LONG_PASSWORD
ClientFoundRows // CLIENT_FOUND_ROWS
ClientLongFlag // CLIENT_LONG_FLAG
ClientConnectWithDB // CLIENT_CONNECT_WITH_DB
ClientNoSchema // CLIENT_NO_SCHEMA
ClientCompress // CLIENT_COMPRESS
ClientODBC // CLIENT_ODBC
ClientLocalFiles // CLIENT_LOCAL_FILES
ClientIgnoreSpace // CLIENT_IGNORE_SPACE
ClientProtocol41 // CLIENT_PROTOCOL_41
ClientInteractive // CLIENT_INTERACTIVE
ClientSSL // CLIENT_SSL
ClientIgnoreSigpipe // CLIENT_IGNORE_SIGPIPE
ClientTransactions // CLIENT_TRANSACTIONS
ClientReserved // Deprecated: CLIENT_RESERVED
ClientSecureConnection // Deprecated: CLIENT_SECURE_CONNECTION
ClientMultiStatements // CLIENT_MULTI_STATEMENTS
ClientMultiResults // CLIENT_MULTI_RESULTS
ClientPSMultiResults // CLIENT_PS_MULTI_RESULTS
ClientPluginAuth // CLIENT_PLUGIN_AUTH
ClientConnectAtts // CLIENT_CONNECT_ATTRS
ClientPluginAuthLenencClientData // CLIENT_PLUGIN_AUTH_LENENC_CLIENT_DATA
ClientHandleExpiredPasswords // CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS, Not supported: https://dev.mysql.com/doc/dev/mysql-server/latest/page_protocol_basic_expired_passwords.html
ClientSessionTrack // CLIENT_SESSION_TRACK, Not supported: https://github.com/pingcap/tidb/issues/35309
ClientDeprecateEOF // CLIENT_DEPRECATE_EOF
ClientOptionalResultsetMetadata // CLIENT_OPTIONAL_RESULTSET_METADATA, Not supported: https://dev.mysql.com/doc/c-api/8.0/en/c-api-optional-metadata.html
ClientZstdCompressionAlgorithm // CLIENT_ZSTD_COMPRESSION_ALGORITHM
// 1 << 27 == CLIENT_QUERY_ATTRIBUTES
// 1 << 28 == MULTI_FACTOR_AUTHENTICATION
// 1 << 29 == CLIENT_CAPABILITY_EXTENSION
// 1 << 30 == CLIENT_SSL_VERIFY_SERVER_CERT
// 1 << 31 == CLIENT_REMEMBER_OPTIONS
)
// Cache type information.
const (
TypeNoCache byte = 0xff
)
// Auth name information.
const (
AuthNativePassword = "mysql_native_password" // #nosec G101
AuthCachingSha2Password = "caching_sha2_password" // #nosec G101
AuthTiDBSM3Password = "tidb_sm3_password" // #nosec G101
AuthMySQLClearPassword = "mysql_clear_password"
AuthSocket = "auth_socket"
AuthTiDBSessionToken = "tidb_session_token"
AuthTiDBAuthToken = "tidb_auth_token"
AuthLDAPSimple = "authentication_ldap_simple"
AuthLDAPSASL = "authentication_ldap_sasl"
)
// System database and tables that mostly inherited from MySQL.
const (
// SystemDB is the name of system database.
SystemDB = "mysql"
// SysDB is the name of `sys` schema, which is a set of objects to help users to interpret data collected
// in `information_schema`.
SysDB = "sys"
// GlobalPrivTable is the table in system db contains global scope privilege info.
GlobalPrivTable = "global_priv"
// UserTable is the table in system db contains user info.
UserTable = "User"
// DBTable is the table in system db contains db scope privilege info.
DBTable = "DB"
// TablePrivTable is the table in system db contains table scope privilege info.
TablePrivTable = "Tables_priv"
// ColumnPrivTable is the table in system db contains column scope privilege info.
ColumnPrivTable = "Columns_priv"
// GlobalVariablesTable is the table contains global system variables.
GlobalVariablesTable = "GLOBAL_VARIABLES"
// GlobalStatusTable is the table contains global status variables.
GlobalStatusTable = "GLOBAL_STATUS"
// TiDBTable is the table contains tidb info.
TiDBTable = "tidb"
// RoleEdgeTable is the table contains role relation info
RoleEdgeTable = "role_edges"
// DefaultRoleTable is the table contain default active role info
DefaultRoleTable = "default_roles"
// PasswordHistoryTable is the table in system db contains password history.
PasswordHistoryTable = "password_history"
// WorkloadSchema is the name of workload repository database.
WorkloadSchema = "workload_schema"
)
// MySQL type maximum length.
const (
// NotFixedDec For arguments that have no fixed number of decimals, the decimals value is set to 31,
// which is 1 more than the maximum number of decimals permitted for the DECIMAL, FLOAT, and DOUBLE data types.
NotFixedDec = 31
MaxIntWidth = 20
MaxRealWidth = 23
MaxFloatingTypeScale = 30
MaxFloatingTypeWidth = 255
MaxDecimalScale = 30
MaxDecimalWidth = 65
MaxDateWidth = 10 // YYYY-MM-DD.
MaxDatetimeWidthNoFsp = 19 // YYYY-MM-DD HH:MM:SS
MaxDatetimeWidthWithFsp = 26 // YYYY-MM-DD HH:MM:SS[.fraction]
MaxDatetimeFullWidth = 29 // YYYY-MM-DD HH:MM:SS.###### AM
MaxDurationWidthNoFsp = 10 // HH:MM:SS
MaxDurationWidthWithFsp = 17 // HH:MM:SS[.fraction] -838:59:59.000000 to 838:59:59.000000
MaxBlobWidth = 16777216
MaxLongBlobWidth = 4294967295
MaxBitDisplayWidth = 64
MaxFloatPrecisionLength = 24
MaxDoublePrecisionLength = 53
)
// MySQL max type field length.
const (
MaxFieldCharLength = 255
MaxFieldVarCharLength = 65535
)
// MaxTypeSetMembers is the number of set members.
const MaxTypeSetMembers = 64
// PWDHashLen is the length of mysql_native_password's hash.
const PWDHashLen = 40 // excluding the '*'
// SHAPWDHashLen is the length of sha256_password's hash.
const SHAPWDHashLen = 70
// SM3PWDHashLen is the length of tidb_sm3_password's hash.
const SM3PWDHashLen = 70
// Command2Str is the command information to command name.
var Command2Str = map[byte]string{
ComSleep: "Sleep",
ComQuit: "Quit",
ComInitDB: "Init DB",
ComQuery: "Query",
ComFieldList: "Field List",
ComCreateDB: "Create DB",
ComDropDB: "Drop DB",
ComRefresh: "Refresh",
ComShutdown: "Shutdown",
ComStatistics: "Statistics",
ComProcessInfo: "Processlist",
ComConnect: "Connect",
ComProcessKill: "Kill",
ComDebug: "Debug",
ComPing: "Ping",
ComTime: "Time",
ComDelayedInsert: "Delayed Insert",
ComChangeUser: "Change User",
ComBinlogDump: "Binlog Dump",
ComTableDump: "Table Dump",
ComConnectOut: "Connect out",
ComRegisterSlave: "Register Slave",
ComStmtPrepare: "Prepare",
ComStmtExecute: "Execute",
ComStmtSendLongData: "Long Data",
ComStmtClose: "Close stmt",
ComStmtReset: "Reset stmt",
ComSetOption: "Set option",
ComStmtFetch: "Fetch",
ComDaemon: "Daemon",
ComBinlogDumpGtid: "Binlog Dump",
ComResetConnection: "Reset connect",
}
// DefaultSQLMode for GLOBAL_VARIABLES
const DefaultSQLMode = "ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
// DefaultLengthOfMysqlTypes is the map for default physical length of MySQL data types.
// See http://dev.mysql.com/doc/refman/5.7/en/storage-requirements.html
var DefaultLengthOfMysqlTypes = map[byte]int{
TypeYear: 1,
TypeDate: 3,
TypeDuration: 3,
TypeDatetime: 8,
TypeTimestamp: 4,
TypeTiny: 1,
TypeShort: 2,
TypeInt24: 3,
TypeLong: 4,
TypeLonglong: 8,
TypeFloat: 4,
TypeDouble: 8,
TypeEnum: 2,
TypeString: 1,
TypeSet: 8,
}
// DefaultLengthOfTimeFraction is the map for default physical length of time fractions.
var DefaultLengthOfTimeFraction = map[int]int{
0: 0,
1: 1,
2: 1,
3: 2,
4: 2,
5: 3,
6: 3,
}
// DefaultAuthPlugins are the supported default authentication plugins.
var DefaultAuthPlugins = []string{
AuthNativePassword,
AuthCachingSha2Password,
AuthTiDBSM3Password,
AuthLDAPSASL,
AuthLDAPSimple,
AuthSocket,
AuthTiDBSessionToken,
AuthTiDBAuthToken,
AuthMySQLClearPassword,
}
// SQLMode is the type for MySQL sql_mode.
// See https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html
type SQLMode int64
// HasNoZeroDateMode detects if 'NO_ZERO_DATE' mode is set in SQLMode
func (m SQLMode) HasNoZeroDateMode() bool {
return m&ModeNoZeroDate == ModeNoZeroDate
}
// HasNoZeroInDateMode detects if 'NO_ZERO_IN_DATE' mode is set in SQLMode
func (m SQLMode) HasNoZeroInDateMode() bool {
return m&ModeNoZeroInDate == ModeNoZeroInDate
}
// HasErrorForDivisionByZeroMode detects if 'ERROR_FOR_DIVISION_BY_ZERO' mode is set in SQLMode
func (m SQLMode) HasErrorForDivisionByZeroMode() bool {
return m&ModeErrorForDivisionByZero == ModeErrorForDivisionByZero
}
// HasOnlyFullGroupBy detects if 'ONLY_FULL_GROUP_BY' mode is set in SQLMode
func (m SQLMode) HasOnlyFullGroupBy() bool {
return m&ModeOnlyFullGroupBy == ModeOnlyFullGroupBy
}
// HasStrictMode detects if 'STRICT_TRANS_TABLES' or 'STRICT_ALL_TABLES' mode is set in SQLMode
func (m SQLMode) HasStrictMode() bool {
return m&ModeStrictTransTables == ModeStrictTransTables || m&ModeStrictAllTables == ModeStrictAllTables
}
// HasPipesAsConcatMode detects if 'PIPES_AS_CONCAT' mode is set in SQLMode
func (m SQLMode) HasPipesAsConcatMode() bool {
return m&ModePipesAsConcat == ModePipesAsConcat
}
// HasNoUnsignedSubtractionMode detects if 'NO_UNSIGNED_SUBTRACTION' mode is set in SQLMode
func (m SQLMode) HasNoUnsignedSubtractionMode() bool {
return m&ModeNoUnsignedSubtraction == ModeNoUnsignedSubtraction
}
// HasHighNotPrecedenceMode detects if 'HIGH_NOT_PRECEDENCE' mode is set in SQLMode
func (m SQLMode) HasHighNotPrecedenceMode() bool {
return m&ModeHighNotPrecedence == ModeHighNotPrecedence
}
// HasANSIQuotesMode detects if 'ANSI_QUOTES' mode is set in SQLMode
func (m SQLMode) HasANSIQuotesMode() bool {
return m&ModeANSIQuotes == ModeANSIQuotes
}
// HasRealAsFloatMode detects if 'REAL_AS_FLOAT' mode is set in SQLMode
func (m SQLMode) HasRealAsFloatMode() bool {
return m&ModeRealAsFloat == ModeRealAsFloat
}
// HasPadCharToFullLengthMode detects if 'PAD_CHAR_TO_FULL_LENGTH' mode is set in SQLMode
func (m SQLMode) HasPadCharToFullLengthMode() bool {
return m&ModePadCharToFullLength == ModePadCharToFullLength
}
// HasNoBackslashEscapesMode detects if 'NO_BACKSLASH_ESCAPES' mode is set in SQLMode
func (m SQLMode) HasNoBackslashEscapesMode() bool {
return m&ModeNoBackslashEscapes == ModeNoBackslashEscapes
}
// HasIgnoreSpaceMode detects if 'IGNORE_SPACE' mode is set in SQLMode
func (m SQLMode) HasIgnoreSpaceMode() bool {
return m&ModeIgnoreSpace == ModeIgnoreSpace
}
// HasNoAutoCreateUserMode detects if 'NO_AUTO_CREATE_USER' mode is set in SQLMode
func (m SQLMode) HasNoAutoCreateUserMode() bool {
return m&ModeNoAutoCreateUser == ModeNoAutoCreateUser
}
// HasAllowInvalidDatesMode detects if 'ALLOW_INVALID_DATES' mode is set in SQLMode
func (m SQLMode) HasAllowInvalidDatesMode() bool {
return m&ModeAllowInvalidDates == ModeAllowInvalidDates
}
// DelSQLMode delete sql mode from ori
func DelSQLMode(ori SQLMode, del SQLMode) SQLMode {
return ori & (^del)
}
// SetSQLMode add sql mode to ori
func SetSQLMode(ori SQLMode, add SQLMode) SQLMode {
return ori | add
}
// consts for sql modes.
// see https://dev.mysql.com/doc/internals/en/query-event.html#q-sql-mode-code
const (
ModeRealAsFloat SQLMode = 1 << iota
ModePipesAsConcat
ModeANSIQuotes
ModeIgnoreSpace
ModeNotUsed
ModeOnlyFullGroupBy
ModeNoUnsignedSubtraction
ModeNoDirInCreate
ModePostgreSQL
ModeOracle
ModeMsSQL
ModeDb2
ModeMaxdb
ModeNoKeyOptions
ModeNoTableOptions
ModeNoFieldOptions
ModeMySQL323
ModeMySQL40
ModeANSI
ModeNoAutoValueOnZero
ModeNoBackslashEscapes
ModeStrictTransTables
ModeStrictAllTables
ModeNoZeroInDate
ModeNoZeroDate
ModeInvalidDates
ModeErrorForDivisionByZero
ModeTraditional
ModeNoAutoCreateUser
ModeHighNotPrecedence
ModeNoEngineSubstitution
ModePadCharToFullLength
ModeAllowInvalidDates
ModeNone = 0
)
// FormatSQLModeStr re-format 'SQL_MODE' variable.
func FormatSQLModeStr(s string) string {
s = strings.ToUpper(strings.TrimRight(s, " "))
parts := strings.Split(s, ",")
var nonEmptyParts []string
existParts := make(map[string]string)
for _, part := range parts {
if len(part) == 0 {
continue
}
if modeParts, ok := CombinationSQLMode[part]; ok {
for _, modePart := range modeParts {
if _, exist := existParts[modePart]; !exist {
nonEmptyParts = append(nonEmptyParts, modePart)
existParts[modePart] = modePart
}
}
}
if _, exist := existParts[part]; !exist {
nonEmptyParts = append(nonEmptyParts, part)
existParts[part] = part
}
}
return strings.Join(nonEmptyParts, ",")
}
// GetSQLMode gets the sql mode for string literal. SQL_mode is a list of different modes separated by commas.
// The input string must be formatted by 'FormatSQLModeStr'
func GetSQLMode(s string) (SQLMode, error) {
strs := strings.Split(s, ",")
var sqlMode SQLMode
for i, length := 0, len(strs); i < length; i++ {
mode, ok := Str2SQLMode[strs[i]]
if !ok && strs[i] != "" {
return sqlMode, newInvalidModeErr(strs[i])
}
sqlMode = sqlMode | mode
}
return sqlMode, nil
}
// Str2SQLMode is the string represent of sql_mode to sql_mode map.
var Str2SQLMode = map[string]SQLMode{
"REAL_AS_FLOAT": ModeRealAsFloat,
"PIPES_AS_CONCAT": ModePipesAsConcat,
"ANSI_QUOTES": ModeANSIQuotes,
"IGNORE_SPACE": ModeIgnoreSpace,
"NOT_USED": ModeNotUsed,
"ONLY_FULL_GROUP_BY": ModeOnlyFullGroupBy,
"NO_UNSIGNED_SUBTRACTION": ModeNoUnsignedSubtraction,
"NO_DIR_IN_CREATE": ModeNoDirInCreate,
"POSTGRESQL": ModePostgreSQL,
"ORACLE": ModeOracle,
"MSSQL": ModeMsSQL,
"DB2": ModeDb2,
"MAXDB": ModeMaxdb,
"NO_KEY_OPTIONS": ModeNoKeyOptions,
"NO_TABLE_OPTIONS": ModeNoTableOptions,
"NO_FIELD_OPTIONS": ModeNoFieldOptions,
"MYSQL323": ModeMySQL323,
"MYSQL40": ModeMySQL40,
"ANSI": ModeANSI,
"NO_AUTO_VALUE_ON_ZERO": ModeNoAutoValueOnZero,
"NO_BACKSLASH_ESCAPES": ModeNoBackslashEscapes,
"STRICT_TRANS_TABLES": ModeStrictTransTables,
"STRICT_ALL_TABLES": ModeStrictAllTables,
"NO_ZERO_IN_DATE": ModeNoZeroInDate,
"NO_ZERO_DATE": ModeNoZeroDate,
"INVALID_DATES": ModeInvalidDates,
"ERROR_FOR_DIVISION_BY_ZERO": ModeErrorForDivisionByZero,
"TRADITIONAL": ModeTraditional,
"NO_AUTO_CREATE_USER": ModeNoAutoCreateUser,
"HIGH_NOT_PRECEDENCE": ModeHighNotPrecedence,
"NO_ENGINE_SUBSTITUTION": ModeNoEngineSubstitution,
"PAD_CHAR_TO_FULL_LENGTH": ModePadCharToFullLength,
"ALLOW_INVALID_DATES": ModeAllowInvalidDates,
}
// CombinationSQLMode is the special modes that provided as shorthand for combinations of mode values.
// See https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sql-mode-combo.
var CombinationSQLMode = map[string][]string{
"ANSI": {"REAL_AS_FLOAT", "PIPES_AS_CONCAT", "ANSI_QUOTES", "IGNORE_SPACE", "ONLY_FULL_GROUP_BY"},
"DB2": {"PIPES_AS_CONCAT", "ANSI_QUOTES", "IGNORE_SPACE", "NO_KEY_OPTIONS", "NO_TABLE_OPTIONS", "NO_FIELD_OPTIONS"},
"MAXDB": {"PIPES_AS_CONCAT", "ANSI_QUOTES", "IGNORE_SPACE", "NO_KEY_OPTIONS", "NO_TABLE_OPTIONS", "NO_FIELD_OPTIONS", "NO_AUTO_CREATE_USER"},
"MSSQL": {"PIPES_AS_CONCAT", "ANSI_QUOTES", "IGNORE_SPACE", "NO_KEY_OPTIONS", "NO_TABLE_OPTIONS", "NO_FIELD_OPTIONS"},
"MYSQL323": {"MYSQL323", "HIGH_NOT_PRECEDENCE"},
"MYSQL40": {"MYSQL40", "HIGH_NOT_PRECEDENCE"},
"ORACLE": {"PIPES_AS_CONCAT", "ANSI_QUOTES", "IGNORE_SPACE", "NO_KEY_OPTIONS", "NO_TABLE_OPTIONS", "NO_FIELD_OPTIONS", "NO_AUTO_CREATE_USER"},
"POSTGRESQL": {"PIPES_AS_CONCAT", "ANSI_QUOTES", "IGNORE_SPACE", "NO_KEY_OPTIONS", "NO_TABLE_OPTIONS", "NO_FIELD_OPTIONS"},
"TRADITIONAL": {"STRICT_TRANS_TABLES", "STRICT_ALL_TABLES", "NO_ZERO_IN_DATE", "NO_ZERO_DATE", "ERROR_FOR_DIVISION_BY_ZERO", "NO_AUTO_CREATE_USER", "NO_ENGINE_SUBSTITUTION"},
}
// FormatFunc is the locale format function signature.
type FormatFunc func(string, string) (string, error)
// GetLocaleFormatFunction get the format function for sepcific locale.
func GetLocaleFormatFunction(loc string) FormatFunc {
locale, exist := locale2FormatFunction[loc]
if !exist {
return formatNotSupport
}
return locale
}
// locale2FormatFunction is the string represent of locale format function.
var locale2FormatFunction = map[string]FormatFunc{
"en_US": formatENUS,
"zh_CN": formatZHCN,
}
// PriorityEnum is defined for Priority const values.
type PriorityEnum int
// Priority const values.
// See https://dev.mysql.com/doc/refman/5.7/en/insert.html
const (
NoPriority PriorityEnum = iota
LowPriority
HighPriority
DelayedPriority
)
// Priority2Str is used to convert the statement priority to string.
var Priority2Str = map[PriorityEnum]string{
NoPriority: "NO_PRIORITY",
LowPriority: "LOW_PRIORITY",
HighPriority: "HIGH_PRIORITY",
DelayedPriority: "DELAYED",
}
// Str2Priority is used to convert a string to a priority.
func Str2Priority(val string) PriorityEnum {
val = strings.ToUpper(val)
switch val {
case "NO_PRIORITY":
return NoPriority
case "HIGH_PRIORITY":
return HighPriority
case "LOW_PRIORITY":
return LowPriority
case "DELAYED":
return DelayedPriority
default:
return NoPriority
}
}
// Restore implements Node interface.
func (n *PriorityEnum) Restore(ctx *format.RestoreCtx) error {
switch *n {
case NoPriority:
return nil
case LowPriority:
ctx.WriteKeyWord("LOW_PRIORITY")
case HighPriority:
ctx.WriteKeyWord("HIGH_PRIORITY")
case DelayedPriority:
ctx.WriteKeyWord("DELAYED")
default:
return errors.Errorf("undefined PriorityEnum Type[%d]", *n)
}
return nil
}
const (
// PrimaryKeyName defines primary key name.
PrimaryKeyName = "PRIMARY"
// DefaultDecimal defines the default decimal value when the value out of range.
DefaultDecimal = "99999999999999999999999999999999999999999999999999999999999999999"
// PartitionCountLimit is limit of the number of partitions in a table.
// Reference linking https://dev.mysql.com/doc/refman/5.7/en/partitioning-limitations.html.
PartitionCountLimit = 8192
)
// This is enum_cursor_type in MySQL
const (
CursorTypeReadOnly = 1 << iota
CursorTypeForUpdate
CursorTypeScrollable
)
// ZlibCompressDefaultLevel is the zlib compression level for the compressed protocol
const ZlibCompressDefaultLevel = 6
const (
// CompressionNone is no compression in use
CompressionNone = iota
// CompressionZlib is zlib/deflate
CompressionZlib
// CompressionZstd is Facebook's Zstandard
CompressionZstd
)
// Copyright 2015 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// See the License for the specific language governing permissions and
// limitations under the License.
package mysql
// ErrMessage is a error message with the format specifier.
type ErrMessage struct {
Raw string
RedactArgPos []int
}
// Message creates a error message with the format specifier.
func Message(message string, redactArgs []int) *ErrMessage {
return &ErrMessage{Raw: message, RedactArgPos: redactArgs}
}
// MySQLErrName maps error code to MySQL error messages.
var MySQLErrName = map[uint16]*ErrMessage{
ErrHashchk: Message("hashchk", nil),
ErrNisamchk: Message("isamchk", nil),
ErrNo: Message("NO", nil),
ErrYes: Message("YES", nil),
ErrCantCreateFile: Message("Can't create file '%-.200s' (errno: %d - %s)", nil),
ErrCantCreateTable: Message("Can't create table '%-.200s' (errno: %d)", nil),
ErrCantCreateDB: Message("Can't create database '%-.192s' (errno: %d)", nil),
ErrDBCreateExists: Message("Can't create database '%-.192s'; database exists", nil),
ErrDBDropExists: Message("Can't drop database '%-.192s'; database doesn't exist", nil),
ErrDBDropDelete: Message("Error dropping database (can't delete '%-.192s', errno: %d)", nil),
ErrDBDropRmdir: Message("Error dropping database (can't rmdir '%-.192s', errno: %d)", nil),
ErrCantDeleteFile: Message("Error on delete of '%-.192s' (errno: %d - %s)", nil),
ErrCantFindSystemRec: Message("Can't read record in system table", nil),
ErrCantGetStat: Message("Can't get status of '%-.200s' (errno: %d - %s)", nil),
ErrCantGetWd: Message("Can't get working directory (errno: %d - %s)", nil),
ErrCantLock: Message("Can't lock file (errno: %d - %s)", nil),
ErrCantOpenFile: Message("Can't open file: '%-.200s' (errno: %d - %s)", nil),
ErrFileNotFound: Message("Can't find file: '%-.200s' (errno: %d - %s)", nil),
ErrCantReadDir: Message("Can't read dir of '%-.192s' (errno: %d - %s)", nil),
ErrCantSetWd: Message("Can't change dir to '%-.192s' (errno: %d - %s)", nil),
ErrCheckread: Message("Record has changed since last read in table '%-.192s'", nil),
ErrDiskFull: Message("Disk full (%s); waiting for someone to free some space... (errno: %d - %s)", nil),
ErrDupKey: Message("Can't write; duplicate key in table '%-.192s'", nil),
ErrErrorOnClose: Message("Error on close of '%-.192s' (errno: %d - %s)", nil),
ErrErrorOnRead: Message("Error reading file '%-.200s' (errno: %d - %s)", nil),
ErrErrorOnRename: Message("Error on rename of '%-.210s' to '%-.210s' (errno: %d - %s)", nil),
ErrErrorOnWrite: Message("Error writing file '%-.200s' (errno: %d - %s)", nil),
ErrFileUsed: Message("'%-.192s' is locked against change", nil),
ErrFilsortAbort: Message("Sort aborted", nil),
ErrFormNotFound: Message("View '%-.192s' doesn't exist for '%-.192s'", nil),
ErrGetErrno: Message("Got error %d from storage engine", nil),
ErrIllegalHa: Message("Table storage engine for '%-.192s' doesn't have this option", nil),
ErrKeyNotFound: Message("Can't find record in '%-.192s'", nil),
ErrNotFormFile: Message("Incorrect information in file: '%-.200s'", nil),
ErrNotKeyFile: Message("Incorrect key file for table '%-.200s'; try to repair it", nil),
ErrOldKeyFile: Message("Old key file for table '%-.192s'; repair it!", nil),
ErrOpenAsReadonly: Message("Table '%-.192s' is read only", nil),
ErrOutofMemory: Message("Out of memory; restart server and try again (needed %d bytes)", nil),
ErrOutOfSortMemory: Message("Out of sort memory, consider increasing server sort buffer size", nil),
ErrUnexpectedEOF: Message("Unexpected EOF found when reading file '%-.192s' (errno: %d - %s)", nil),
ErrConCount: Message("Too many connections", nil),
ErrOutOfResources: Message("Out of memory; check if mysqld or some other process uses all available memory; if not, you may have to use 'ulimit' to allow mysqld to use more memory or you can add more swap space", nil),
ErrBadHost: Message("Can't get hostname for your address", nil),
ErrHandshake: Message("Bad handshake", nil),
ErrDBaccessDenied: Message("Access denied for user '%-.48s'@'%-.64s' to database '%-.192s'", nil),
ErrAccessDenied: Message("Access denied for user '%-.48s'@'%-.64s' (using password: %s)", nil),
ErrNoDB: Message("No database selected", nil),
ErrUnknownCom: Message("Unknown command", nil),
ErrBadNull: Message("Column '%-.192s' cannot be null", nil),
ErrBadDB: Message("Unknown database '%-.192s'", nil),
ErrTableExists: Message("Table '%-.192s' already exists", nil),
ErrBadTable: Message("Unknown table '%-.100s'", nil),
ErrNonUniq: Message("Column '%-.192s' in %-.192s is ambiguous", nil),
ErrServerShutdown: Message("Server shutdown in progress", nil),
ErrBadField: Message("Unknown column '%-.192s' in '%-.192s'", nil),
ErrFieldNotInGroupBy: Message("Expression #%d of %s is not in GROUP BY clause and contains nonaggregated column '%s' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by", nil),
ErrWrongGroupField: Message("Can't group on '%-.192s'", nil),
ErrWrongSumSelect: Message("Statement has sum functions and columns in same statement", nil),
ErrWrongValueCount: Message("Column count doesn't match value count", nil),
ErrTooLongIdent: Message("Identifier name '%-.100s' is too long", nil),
ErrDupFieldName: Message("Duplicate column name '%-.192s'", nil),
ErrDupKeyName: Message("Duplicate key name '%-.192s'", nil),
ErrDupEntry: Message("Duplicate entry '%-.64s' for key '%-.192s'", nil),
ErrWrongFieldSpec: Message("Incorrect column specifier for column '%-.192s'", nil),
ErrParse: Message("%s %s", nil),
ErrEmptyQuery: Message("Query was empty", nil),
ErrNonuniqTable: Message("Not unique table/alias: '%-.192s'", nil),
ErrInvalidDefault: Message("Invalid default value for '%-.192s'", nil),
ErrMultiplePriKey: Message("Multiple primary key defined", nil),
ErrTooManyKeys: Message("Too many keys specified; max %d keys allowed", nil),
ErrTooManyKeyParts: Message("Too many key parts specified; max %d parts allowed", nil),
ErrTooLongKey: Message("Specified key was too long (%d bytes); max key length is %d bytes", nil),
ErrKeyColumnDoesNotExits: Message("Key column '%-.192s' doesn't exist in table", nil),
ErrBlobUsedAsKey: Message("BLOB column '%-.192s' can't be used in key specification with the used table type", nil),
ErrJSONVacuousPath: Message("The path expression '$' is not allowed in this context.", nil),
ErrJSONBadOneOrAllArg: Message("The oneOrAll argument to %s may take these values: 'one' or 'all'.", nil),
ErrTooBigFieldlength: Message("Column length too big for column '%-.192s' (max = %d); use BLOB or TEXT instead", nil),
ErrWrongAutoKey: Message("Incorrect table definition; there can be only one auto column and it must be defined as a key", nil),
ErrReady: Message("%s: ready for connections.\nVersion: '%s' socket: '%s' port: %d", nil),
ErrNormalShutdown: Message("%s: Normal shutdown\n", nil),
ErrGotSignal: Message("%s: Got signal %d. Aborting!\n", nil),
ErrShutdownComplete: Message("%s: Shutdown complete\n", nil),
ErrForcingClose: Message("%s: Forcing close of thread %d user: '%-.48s'\n", nil),
ErrIpsock: Message("Can't create IP socket", nil),
ErrNoSuchIndex: Message("Table '%-.192s' has no index like the one used in CREATE INDEX; recreate the table", nil),
ErrWrongFieldTerminators: Message("Field separator argument is not what is expected; check the manual", nil),
ErrBlobsAndNoTerminated: Message("You can't use fixed rowlength with BLOBs; please use 'fields terminated by'", nil),
ErrTextFileNotReadable: Message("The file '%-.128s' must be in the database directory or be readable by all", nil),
ErrFileExists: Message("File '%-.200s' already exists", nil),
ErrLoadInfo: Message("Records: %d Deleted: %d Skipped: %d Warnings: %d", nil),
ErrAlterInfo: Message("Records: %d Duplicates: %d", nil),
ErrWrongSubKey: Message("Incorrect prefix key; the used key part isn't a string, the used length is longer than the key part, or the storage engine doesn't support unique prefix keys", nil),
ErrCantRemoveAllFields: Message("You can't delete all columns with ALTER TABLE; use DROP TABLE instead", nil),
ErrCantDropFieldOrKey: Message("Can't DROP '%-.192s'; check that column/key exists", nil),
ErrInsertInfo: Message("Records: %d Duplicates: %d Warnings: %d", nil),
ErrUpdateTableUsed: Message("You can't specify target table '%-.192s' for update in FROM clause", nil),
ErrNoSuchThread: Message("Unknown thread id: %d", nil),
ErrKillDenied: Message("You are not owner of thread %d", nil),
ErrNoTablesUsed: Message("No tables used", nil),
ErrTooBigSet: Message("Too many strings for column %-.192s and SET", nil),
ErrNoUniqueLogFile: Message("Can't generate a unique log-filename %-.200s.(1-999)\n", nil),
ErrTableNotLockedForWrite: Message("Table '%-.192s' was locked with a READ lock and can't be updated", nil),
ErrTableNotLocked: Message("Table '%-.192s' was not locked with LOCK TABLES", nil),
ErrBlobCantHaveDefault: Message("BLOB/TEXT/JSON column '%-.192s' can't have a default value", nil),
ErrWrongDBName: Message("Incorrect database name '%-.100s'", nil),
ErrWrongTableName: Message("Incorrect table name '%-.100s'", nil),
ErrTooBigSelect: Message("The SELECT would examine more than MAXJOINSIZE rows; check your WHERE and use SET SQLBIGSELECTS=1 or SET MAXJOINSIZE=# if the SELECT is okay", nil),
ErrUnknown: Message("Unknown error", nil),
ErrUnknownProcedure: Message("Unknown procedure '%-.192s'", nil),
ErrWrongParamcountToProcedure: Message("Incorrect parameter count to procedure '%-.192s'", nil),
ErrWrongParametersToProcedure: Message("Incorrect parameters to procedure '%-.192s'", nil),
ErrUnknownTable: Message("Unknown table '%-.192s' in %-.32s", nil),
ErrFieldSpecifiedTwice: Message("Column '%-.192s' specified twice", nil),
ErrInvalidGroupFuncUse: Message("Invalid use of group function", nil),
ErrUnsupportedExtension: Message("Table '%-.192s' uses an extension that doesn't exist in this MySQL version", nil),
ErrTableMustHaveColumns: Message("A table must have at least 1 column", nil),
ErrRecordFileFull: Message("The table '%-.192s' is full", nil),
ErrUnknownCharacterSet: Message("Unknown character set: '%-.64s'", nil),
ErrTooManyTables: Message("Too many tables; MySQL can only use %d tables in a join", nil),
ErrTooManyFields: Message("Too many columns", nil),
ErrTooBigRowsize: Message("Row size too large. The maximum row size for the used table type, not counting BLOBs, is %d. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs", nil),
ErrStackOverrun: Message("Thread stack overrun: Used: %d of a %d stack. Use 'mysqld --threadStack=#' to specify a bigger stack if needed", nil),
ErrWrongOuterJoin: Message("Cross dependency found in OUTER JOIN; examine your ON conditions", nil),
ErrNullColumnInIndex: Message("Table handler doesn't support NULL in given index. Please change column '%-.192s' to be NOT NULL or use another handler", nil),
ErrCantFindUdf: Message("Can't load function '%-.192s'", nil),
ErrCantInitializeUdf: Message("Can't initialize function '%-.192s'; %-.80s", nil),
ErrUdfNoPaths: Message("No paths allowed for shared library", nil),
ErrUdfExists: Message("Function '%-.192s' already exists", nil),
ErrCantOpenLibrary: Message("Can't open shared library '%-.192s' (errno: %d %-.128s)", nil),
ErrCantFindDlEntry: Message("Can't find symbol '%-.128s' in library", nil),
ErrFunctionNotDefined: Message("Function '%-.192s' is not defined", nil),
ErrHostIsBlocked: Message("Host '%-.64s' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'", nil),
ErrHostNotPrivileged: Message("Host '%-.64s' is not allowed to connect to this MySQL server", nil),
ErrPasswordAnonymousUser: Message("You are using MySQL as an anonymous user and anonymous users are not allowed to change passwords", nil),
ErrPasswordNotAllowed: Message("You must have privileges to update tables in the mysql database to be able to change passwords for others", nil),
ErrPasswordNoMatch: Message("Can't find any matching row in the user table", nil),
ErrUpdateInfo: Message("Rows matched: %d Changed: %d Warnings: %d", nil),
ErrCantCreateThread: Message("Can't create a new thread (errno %d); if you are not out of available memory, you can consult the manual for a possible OS-dependent bug", nil),
ErrWrongValueCountOnRow: Message("Column count doesn't match value count at row %d", nil),
ErrCantReopenTable: Message("Can't reopen table: '%-.192s'", nil),
ErrInvalidUseOfNull: Message("Invalid use of NULL value", nil),
ErrRegexp: Message("Got error '%-.64s' from regexp", nil),
ErrMixOfGroupFuncAndFields: Message("Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause", nil),
ErrNonexistingGrant: Message("There is no such grant defined for user '%-.48s' on host '%-.64s'", nil),
ErrTableaccessDenied: Message("%-.128s command denied to user '%-.48s'@'%-.64s' for table '%-.64s'", nil),
ErrColumnaccessDenied: Message("%-.16s command denied to user '%-.48s'@'%-.64s' for column '%-.192s' in table '%-.192s'", nil),
ErrIllegalGrantForTable: Message("Illegal GRANT/REVOKE command; please consult the manual to see which privileges can be used", nil),
ErrGrantWrongHostOrUser: Message("The host or user argument to GRANT is too long", nil),
ErrNoSuchTable: Message("Table '%-.192s.%-.192s' doesn't exist", nil),
ErrNonexistingTableGrant: Message("There is no such grant defined for user '%-.48s' on host '%-.64s' on table '%-.192s'", nil),
ErrNotAllowedCommand: Message("The used command is not allowed with this MySQL version", nil),
ErrSyntax: Message("You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use", nil),
ErrDelayedCantChangeLock: Message("Delayed insert thread couldn't get requested lock for table %-.192s", nil),
ErrTooManyDelayedThreads: Message("Too many delayed threads in use", nil),
ErrAbortingConnection: Message("Aborted connection %d to db: '%-.192s' user: '%-.48s' (%-.64s)", nil),
ErrNetPacketTooLarge: Message("Got a packet bigger than 'max_allowed_packet' bytes", nil),
ErrNetReadErrorFromPipe: Message("Got a read error from the connection pipe", nil),
ErrNetFcntl: Message("Got an error from fcntl()", nil),
ErrNetPacketsOutOfOrder: Message("Got packets out of order", nil),
ErrNetUncompress: Message("Couldn't uncompress communication packet", nil),
ErrNetRead: Message("Got an error reading communication packets", nil),
ErrNetReadInterrupted: Message("Got timeout reading communication packets", nil),
ErrNetErrorOnWrite: Message("Got an error writing communication packets", nil),
ErrNetWriteInterrupted: Message("Got timeout writing communication packets", nil),
ErrTooLongString: Message("Result string is longer than 'maxAllowedPacket' bytes", nil),
ErrTableCantHandleBlob: Message("The used table type doesn't support BLOB/TEXT columns", nil),
ErrTableCantHandleAutoIncrement: Message("The used table type doesn't support AUTOINCREMENT columns", nil),
ErrDelayedInsertTableLocked: Message("INSERT DELAYED can't be used with table '%-.192s' because it is locked with LOCK TABLES", nil),
ErrWrongColumnName: Message("Incorrect column name '%-.100s'", nil),
ErrWrongKeyColumn: Message("The used storage engine can't index column '%-.192s'", nil),
ErrWrongMrgTable: Message("Unable to open underlying table which is differently defined or of non-MyISAM type or doesn't exist", nil),
ErrDupUnique: Message("Can't write, because of unique constraint, to table '%-.192s'", nil),
ErrBlobKeyWithoutLength: Message("BLOB/TEXT column '%-.192s' used in key specification without a key length", nil),
ErrPrimaryCantHaveNull: Message("All parts of a PRIMARY KEY must be NOT NULL; if you need NULL in a key, use UNIQUE instead", nil),
ErrTooManyRows: Message("Result consisted of more than one row", nil),
ErrRequiresPrimaryKey: Message("This table type requires a primary key", nil),
ErrNoRaidCompiled: Message("This version of MySQL is not compiled with RAID support", nil),
ErrUpdateWithoutKeyInSafeMode: Message("You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column", nil),
ErrKeyDoesNotExist: Message("Key '%-.192s' doesn't exist in table '%-.192s'", nil),
ErrCheckNoSuchTable: Message("Can't open table", nil),
ErrCheckNotImplemented: Message("The storage engine for the table doesn't support %s", nil),
ErrCantDoThisDuringAnTransaction: Message("You are not allowed to execute this command in a transaction", nil),
ErrErrorDuringCommit: Message("Got error %d during COMMIT", nil),
ErrErrorDuringRollback: Message("Got error %d during ROLLBACK", nil),
ErrErrorDuringFlushLogs: Message("Got error %d during FLUSHLOGS", nil),
ErrErrorDuringCheckpoint: Message("Got error %d during CHECKPOINT", nil),
ErrNewAbortingConnection: Message("Aborted connection %d to db: '%-.192s' user: '%-.48s' host: '%-.64s' (%-.64s)", nil),
ErrDumpNotImplemented: Message("The storage engine for the table does not support binary table dump", nil),
ErrFlushMasterBinlogClosed: Message("Binlog closed, cannot RESET MASTER", nil),
ErrIndexRebuild: Message("Failed rebuilding the index of dumped table '%-.192s'", nil),
ErrMaster: Message("Error from master: '%-.64s'", nil),
ErrMasterNetRead: Message("Net error reading from master", nil),
ErrMasterNetWrite: Message("Net error writing to master", nil),
ErrFtMatchingKeyNotFound: Message("Can't find FULLTEXT index matching the column list", nil),
ErrLockOrActiveTransaction: Message("Can't execute the given command because you have active locked tables or an active transaction", nil),
ErrUnknownSystemVariable: Message("Unknown system variable '%-.64s'", nil),
ErrCrashedOnUsage: Message("Table '%-.192s' is marked as crashed and should be repaired", nil),
ErrCrashedOnRepair: Message("Table '%-.192s' is marked as crashed and last (automatic?) repair failed", nil),
ErrWarningNotCompleteRollback: Message("Some non-transactional changed tables couldn't be rolled back", nil),
ErrTransCacheFull: Message("Multi-statement transaction required more than 'maxBinlogCacheSize' bytes of storage; increase this mysqld variable and try again", nil),
ErrSlaveMustStop: Message("This operation cannot be performed with a running slave; run STOP SLAVE first", nil),
ErrSlaveNotRunning: Message("This operation requires a running slave; configure slave and do START SLAVE", nil),
ErrBadSlave: Message("The server is not configured as slave; fix in config file or with CHANGE MASTER TO", nil),
ErrMasterInfo: Message("Could not initialize master info structure; more error messages can be found in the MySQL error log", nil),
ErrSlaveThread: Message("Could not create slave thread; check system resources", nil),
ErrTooManyUserConnections: Message("User %-.64s already has more than 'maxUserConnections' active connections", nil),
ErrSetConstantsOnly: Message("You may only use constant expressions with SET", nil),
ErrLockWaitTimeout: Message("Lock wait timeout exceeded; try restarting transaction", nil),
ErrLockTableFull: Message("The total number of locks exceeds the lock table size", nil),
ErrReadOnlyTransaction: Message("Update locks cannot be acquired during a READ UNCOMMITTED transaction", nil),
ErrDropDBWithReadLock: Message("DROP DATABASE not allowed while thread is holding global read lock", nil),
ErrCreateDBWithReadLock: Message("CREATE DATABASE not allowed while thread is holding global read lock", nil),
ErrWrongArguments: Message("Incorrect arguments to %s", nil),
ErrNoPermissionToCreateUser: Message("'%-.48s'@'%-.64s' is not allowed to create new users", nil),
ErrUnionTablesInDifferentDir: Message("Incorrect table definition; all MERGE tables must be in the same database", nil),
ErrLockDeadlock: Message("Deadlock found when trying to get lock; try restarting transaction", nil),
ErrTableCantHandleFt: Message("The used table type doesn't support FULLTEXT indexes", nil),
ErrCannotAddForeign: Message("Cannot add foreign key constraint", nil),
ErrNoReferencedRow: Message("Cannot add or update a child row: a foreign key constraint fails", nil),
ErrRowIsReferenced: Message("Cannot delete or update a parent row: a foreign key constraint fails", nil),
ErrConnectToMaster: Message("Error connecting to master: %-.128s", nil),
ErrQueryOnMaster: Message("Error running query on master: %-.128s", nil),
ErrErrorWhenExecutingCommand: Message("Error when executing command %s: %-.128s", nil),
ErrWrongUsage: Message("Incorrect usage of %s and %s", nil),
ErrWrongNumberOfColumnsInSelect: Message("The used SELECT statements have a different number of columns", nil),
ErrCantUpdateWithReadlock: Message("Can't execute the query because you have a conflicting read lock", nil),
ErrMixingNotAllowed: Message("Mixing of transactional and non-transactional tables is disabled", nil),
ErrDupArgument: Message("Option '%s' used twice in statement", nil),
ErrUserLimitReached: Message("User '%-.64s' has exceeded the '%s' resource (current value: %d)", nil),
ErrSpecificAccessDenied: Message("Access denied; you need (at least one of) the %-.128s privilege(s) for this operation", nil),
ErrLocalVariable: Message("Variable '%-.64s' is a SESSION variable and can't be used with SET GLOBAL", nil),
ErrGlobalVariable: Message("Variable '%-.64s' is a GLOBAL variable and should be set with SET GLOBAL", nil),
ErrNoDefault: Message("Variable '%-.64s' doesn't have a default value", nil),
ErrWrongValueForVar: Message("Variable '%-.64s' can't be set to the value of '%-.200s'", nil),
ErrWrongTypeForVar: Message("Incorrect argument type to variable '%-.64s'", nil),
ErrVarCantBeRead: Message("Variable '%-.64s' can only be set, not read", nil),
ErrCantUseOptionHere: Message("Incorrect usage/placement of '%s'", nil),
ErrNotSupportedYet: Message("This version of TiDB doesn't yet support '%s'", nil),
ErrMasterFatalErrorReadingBinlog: Message("Got fatal error %d from master when reading data from binary log: '%-.320s'", nil),
ErrSlaveIgnoredTable: Message("Slave SQL thread ignored the query because of replicate-*-table rules", nil),
ErrIncorrectGlobalLocalVar: Message("Variable '%-.192s' is a %s variable", nil),
ErrWrongFkDef: Message("Incorrect foreign key definition for '%-.192s': %s", nil),
ErrKeyRefDoNotMatchTableRef: Message("Key reference and table reference don't match", nil),
ErrOperandColumns: Message("Operand should contain %d column(s)", nil),
ErrSubqueryNo1Row: Message("Subquery returns more than 1 row", nil),
ErrUnknownStmtHandler: Message("Unknown prepared statement handler %s given to %s", nil),
ErrCorruptHelpDB: Message("Help database is corrupt or does not exist", nil),
ErrCyclicReference: Message("Cyclic reference on subqueries", nil),
ErrAutoConvert: Message("Converting column '%s' from %s to %s", nil),
ErrIllegalReference: Message("Reference '%-.64s' not supported (%s)", nil),
ErrDerivedMustHaveAlias: Message("Every derived table must have its own alias", nil),
ErrSelectReduced: Message("Select %d was reduced during optimization", nil),
ErrTablenameNotAllowedHere: Message("Table '%s' from one of the %ss cannot be used in %s", nil),
ErrNotSupportedAuthMode: Message("Client does not support authentication protocol requested by server; consider upgrading MySQL client", nil),
ErrSpatialCantHaveNull: Message("All parts of a SPATIAL index must be NOT NULL", nil),
ErrCollationCharsetMismatch: Message("COLLATION '%s' is not valid for CHARACTER SET '%s'", nil),
ErrSlaveWasRunning: Message("Slave is already running", nil),
ErrSlaveWasNotRunning: Message("Slave already has been stopped", nil),
ErrTooBigForUncompress: Message("Uncompressed data size too large; the maximum size is %d (probably, length of uncompressed data was corrupted)", nil),
ErrZlibZMem: Message("ZLIB: Not enough memory", nil),
ErrZlibZBuf: Message("ZLIB: Not enough room in the output buffer (probably, length of uncompressed data was corrupted)", nil),
ErrZlibZData: Message("ZLIB: Input data corrupted", nil),
ErrCutValueGroupConcat: Message("Some rows were cut by GROUPCONCAT(%s)", nil),
ErrWarnTooFewRecords: Message("Row %d doesn't contain data for all columns", nil),
ErrWarnTooManyRecords: Message("Row %d was truncated; it contained more data than there were input columns", nil),
ErrWarnNullToNotnull: Message("Column set to default value; NULL supplied to NOT NULL column '%s' at row %d", nil),
ErrWarnDataOutOfRange: Message("Out of range value for column '%s' at row %d", nil),
WarnDataTruncated: Message("Data truncated for column '%s' at row %d", nil),
ErrWarnUsingOtherHandler: Message("Using storage engine %s for table '%s'", nil),
ErrCantAggregate2collations: Message("Illegal mix of collations (%s,%s) and (%s,%s) for operation '%s'", nil),
ErrDropUser: Message("Cannot drop one or more of the requested users", nil),
ErrRevokeGrants: Message("Can't revoke all privileges for one or more of the requested users", nil),
ErrCantAggregate3collations: Message("Illegal mix of collations (%s,%s), (%s,%s), (%s,%s) for operation '%s'", nil),
ErrCantAggregateNcollations: Message("Illegal mix of collations for operation '%s'", nil),
ErrVariableIsNotStruct: Message("Variable '%-.64s' is not a variable component (can't be used as XXXX.variableName)", nil),
ErrUnknownCollation: Message("Unknown collation: '%-.64s'", nil),
ErrSlaveIgnoredSslParams: Message("SSL parameters in CHANGE MASTER are ignored because this MySQL slave was compiled without SSL support; they can be used later if MySQL slave with SSL is started", nil),
ErrServerIsInSecureAuthMode: Message("Server is running in --secure-auth mode, but '%s'@'%s' has a password in the old format; please change the password to the new format", nil),
ErrWarnFieldResolved: Message("Field or reference '%-.192s%s%-.192s%s%-.192s' of SELECT #%d was resolved in SELECT #%d", nil),
ErrBadSlaveUntilCond: Message("Incorrect parameter or combination of parameters for START SLAVE UNTIL", nil),
ErrMissingSkipSlave: Message("It is recommended to use --skip-slave-start when doing step-by-step replication with START SLAVE UNTIL; otherwise, you will get problems if you get an unexpected slave's mysqld restart", nil),
ErrUntilCondIgnored: Message("SQL thread is not to be started so UNTIL options are ignored", nil),
ErrWrongNameForIndex: Message("Incorrect index name '%-.100s'", nil),
ErrWrongNameForCatalog: Message("Incorrect catalog name '%-.100s'", nil),
ErrWarnQcResize: Message("Query cache failed to set size %d; new query cache size is %d", nil),
ErrBadFtColumn: Message("Column '%-.192s' cannot be part of FULLTEXT index", nil),
ErrUnknownKeyCache: Message("Unknown key cache '%-.100s'", nil),
ErrWarnHostnameWontWork: Message("MySQL is started in --skip-name-resolve mode; you must restart it without this switch for this grant to work", nil),
ErrUnknownStorageEngine: Message("Unknown storage engine '%s'", nil),
ErrWarnDeprecatedSyntax: Message("'%s' is deprecated and will be removed in a future release. Please use %s instead", nil),
ErrNonUpdatableTable: Message("The target table %-.100s of the %s is not updatable", nil),
ErrFeatureDisabled: Message("The '%s' feature is disabled; you need MySQL built with '%s' to have it working", nil),
ErrOptionPreventsStatement: Message("The MySQL server is running with the %s option so it cannot execute this statement", nil),
ErrDuplicatedValueInType: Message("Column '%-.100s' has duplicated value '%-.64s' in %s", nil),
ErrTruncatedWrongValue: Message("Truncated incorrect %-.64s value: '%-.128s'", nil),
ErrTooMuchAutoTimestampCols: Message("Incorrect table definition; there can be only one TIMESTAMP column with CURRENTTIMESTAMP in DEFAULT or ON UPDATE clause", nil),
ErrInvalidOnUpdate: Message("Invalid ON UPDATE clause for '%-.192s' column", nil),
ErrUnsupportedPs: Message("This command is not supported in the prepared statement protocol yet", nil),
ErrGetErrmsg: Message("Got error %d '%-.100s' from %s", nil),
ErrGetTemporaryErrmsg: Message("Got temporary error %d '%-.100s' from %s", nil),
ErrUnknownTimeZone: Message("Unknown or incorrect time zone: '%-.64s'", nil),
ErrWarnInvalidTimestamp: Message("Invalid TIMESTAMP value in column '%s' at row %d", nil),
ErrInvalidCharacterString: Message("Invalid %s character string: '%.64s'", nil),
ErrWarnAllowedPacketOverflowed: Message("Result of %s() was larger than max_allowed_packet (%d) - truncated", nil),
ErrConflictingDeclarations: Message("Conflicting declarations: '%s%s' and '%s%s'", nil),
ErrSpNoRecursiveCreate: Message("Can't create a %s from within another stored routine", nil),
ErrSpAlreadyExists: Message("%s %s already exists", nil),
ErrSpDoesNotExist: Message("%s %s does not exist", nil),
ErrSpDropFailed: Message("Failed to DROP %s %s", nil),
ErrSpStoreFailed: Message("Failed to CREATE %s %s", nil),
ErrSpLilabelMismatch: Message("%s with no matching label: %s", nil),
ErrSpLabelRedefine: Message("Redefining label %s", nil),
ErrSpLabelMismatch: Message("End-label %s without match", nil),
ErrSpUninitVar: Message("Referring to uninitialized variable %s", nil),
ErrSpBadselect: Message("PROCEDURE %s can't return a result set in the given context", nil),
ErrSpBadreturn: Message("RETURN is only allowed in a FUNCTION", nil),
ErrSpBadstatement: Message("%s is not allowed in stored procedures", nil),
ErrUpdateLogDeprecatedIgnored: Message("The update log is deprecated and replaced by the binary log; SET SQLLOGUPDATE has been ignored.", nil),
ErrUpdateLogDeprecatedTranslated: Message("The update log is deprecated and replaced by the binary log; SET SQLLOGUPDATE has been translated to SET SQLLOGBIN.", nil),
ErrQueryInterrupted: Message("Query execution was interrupted", nil),
ErrSpWrongNoOfArgs: Message("Incorrect number of arguments for %s %s; expected %d, got %d", nil),
ErrSpCondMismatch: Message("Undefined CONDITION: %s", nil),
ErrSpNoreturn: Message("No RETURN found in FUNCTION %s", nil),
ErrSpNoreturnend: Message("FUNCTION %s ended without RETURN", nil),
ErrSpBadCursorQuery: Message("Cursor statement must be a SELECT", nil),
ErrSpBadCursorSelect: Message("Cursor SELECT must not have INTO", nil),
ErrSpCursorMismatch: Message("Undefined CURSOR: %s", nil),
ErrSpCursorAlreadyOpen: Message("Cursor is already open", nil),
ErrSpCursorNotOpen: Message("Cursor is not open", nil),
ErrSpUndeclaredVar: Message("Undeclared variable: %s", nil),
ErrSpWrongNoOfFetchArgs: Message("Incorrect number of FETCH variables", nil),
ErrSpFetchNoData: Message("No data - zero rows fetched, selected, or processed", nil),
ErrSpDupParam: Message("Duplicate parameter: %s", nil),
ErrSpDupVar: Message("Duplicate variable: %s", nil),
ErrSpDupCond: Message("Duplicate condition: %s", nil),
ErrSpDupCurs: Message("Duplicate cursor: %s", nil),
ErrSpCantAlter: Message("Failed to ALTER %s %s", nil),
ErrSpSubselectNyi: Message("Subquery value not supported", nil),
ErrStmtNotAllowedInSfOrTrg: Message("%s is not allowed in stored function or trigger", nil),
ErrSpVarcondAfterCurshndlr: Message("Variable or condition declaration after cursor or handler declaration", nil),
ErrSpCursorAfterHandler: Message("Cursor declaration after handler declaration", nil),
ErrSpCaseNotFound: Message("Case not found for CASE statement", nil),
ErrFparserTooBigFile: Message("Configuration file '%-.192s' is too big", nil),
ErrFparserBadHeader: Message("Malformed file type header in file '%-.192s'", nil),
ErrFparserEOFInComment: Message("Unexpected end of file while parsing comment '%-.200s'", nil),
ErrFparserErrorInParameter: Message("Error while parsing parameter '%-.192s' (line: '%-.192s')", nil),
ErrFparserEOFInUnknownParameter: Message("Unexpected end of file while skipping unknown parameter '%-.192s'", nil),
ErrViewNoExplain: Message("EXPLAIN/SHOW can not be issued; lacking privileges for underlying table", nil),
ErrFrmUnknownType: Message("File '%-.192s' has unknown type '%-.64s' in its header", nil),
ErrWrongObject: Message("'%-.192s.%-.192s' is not %s", nil),
ErrNonupdateableColumn: Message("Column '%-.192s' is not updatable", nil),
ErrViewSelectDerived: Message("View's SELECT contains a subquery in the FROM clause", nil),
ErrViewSelectClause: Message("View's SELECT contains a '%s' clause", nil),
ErrViewSelectVariable: Message("View's SELECT contains a variable or parameter", nil),
ErrViewSelectTmptable: Message("View's SELECT refers to a temporary table '%-.192s'", nil),
ErrViewWrongList: Message("View's SELECT and view's field list have different column counts", nil),
ErrWarnViewMerge: Message("View merge algorithm can't be used here for now (assumed undefined algorithm)", nil),
ErrWarnViewWithoutKey: Message("View being updated does not have complete key of underlying table in it", nil),
ErrViewInvalid: Message("View '%-.192s.%-.192s' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them", nil),
ErrSpNoDropSp: Message("Can't drop or alter a %s from within another stored routine", nil),
ErrSpGotoInHndlr: Message("GOTO is not allowed in a stored procedure handler", nil),
ErrTrgAlreadyExists: Message("Trigger already exists", nil),
ErrTrgDoesNotExist: Message("Trigger does not exist", nil),
ErrTrgOnViewOrTempTable: Message("Trigger's '%-.192s' is view or temporary table", nil),
ErrTrgCantChangeRow: Message("Updating of %s row is not allowed in %strigger", nil),
ErrTrgNoSuchRowInTrg: Message("There is no %s row in %s trigger", nil),
ErrNoDefaultForField: Message("Field '%-.192s' doesn't have a default value", nil),
ErrDivisionByZero: Message("Division by 0", nil),
ErrTruncatedWrongValueForField: Message("Incorrect %-.32s value: '%-.128s' for column '%.192s' at row %d", nil),
ErrIllegalValueForType: Message("Illegal %s '%-.192s' value found during parsing", nil),
ErrViewNonupdCheck: Message("CHECK OPTION on non-updatable view '%-.192s.%-.192s'", nil),
ErrViewCheckFailed: Message("CHECK OPTION failed '%-.192s.%-.192s'", nil),
ErrProcaccessDenied: Message("%-.16s command denied to user '%-.48s'@'%-.64s' for routine '%-.192s'", nil),
ErrRelayLogFail: Message("Failed purging old relay logs: %s", nil),
ErrPasswdLength: Message("Password hash should be a %d-digit hexadecimal number", nil),
ErrUnknownTargetBinlog: Message("Target log not found in binlog index", nil),
ErrIoErrLogIndexRead: Message("I/O error reading log index file", nil),
ErrBinlogPurgeProhibited: Message("Server configuration does not permit binlog purge", nil),
ErrFseekFail: Message("Failed on fseek()", nil),
ErrBinlogPurgeFatalErr: Message("Fatal error during log purge", nil),
ErrLogInUse: Message("A purgeable log is in use, will not purge", nil),
ErrLogPurgeUnknownErr: Message("Unknown error during log purge", nil),
ErrRelayLogInit: Message("Failed initializing relay log position: %s", nil),
ErrNoBinaryLogging: Message("You are not using binary logging", nil),
ErrReservedSyntax: Message("The '%-.64s' syntax is reserved for purposes internal to the MySQL server", nil),
ErrWsasFailed: Message("WSAStartup Failed", nil),
ErrDiffGroupsProc: Message("Can't handle procedures with different groups yet", nil),
ErrNoGroupForProc: Message("Select must have a group with this procedure", nil),
ErrOrderWithProc: Message("Can't use ORDER clause with this procedure", nil),
ErrLoggingProhibitChangingOf: Message("Binary logging and replication forbid changing the global server %s", nil),
ErrNoFileMapping: Message("Can't map file: %-.200s, errno: %d", nil),
ErrWrongMagic: Message("Wrong magic in %-.64s", nil),
ErrPsManyParam: Message("Prepared statement contains too many placeholders", nil),
ErrKeyPart0: Message("Key part '%-.192s' length cannot be 0", nil),
ErrViewChecksum: Message("View text checksum failed", nil),
ErrViewMultiupdate: Message("Can not modify more than one base table through a join view '%-.192s.%-.192s'", nil),
ErrViewNoInsertFieldList: Message("Can not insert into join view '%-.192s.%-.192s' without fields list", nil),
ErrViewDeleteMergeView: Message("Can not delete from join view '%-.192s.%-.192s'", nil),
ErrCannotUser: Message("Operation %s failed for %.256s", nil),
ErrXaerNota: Message("XAERNOTA: Unknown XID", nil),
ErrXaerInval: Message("XAERINVAL: Invalid arguments (or unsupported command)", nil),
ErrXaerRmfail: Message("XAERRMFAIL: The command cannot be executed when global transaction is in the %.64s state", nil),
ErrXaerOutside: Message("XAEROUTSIDE: Some work is done outside global transaction", nil),
ErrXaerRmerr: Message("XAERRMERR: Fatal error occurred in the transaction branch - check your data for consistency", nil),
ErrXaRbrollback: Message("XARBROLLBACK: Transaction branch was rolled back", nil),
ErrNonexistingProcGrant: Message("There is no such grant defined for user '%-.48s' on host '%-.64s' on routine '%-.192s'", nil),
ErrProcAutoGrantFail: Message("Failed to grant EXECUTE and ALTER ROUTINE privileges", nil),
ErrProcAutoRevokeFail: Message("Failed to revoke all privileges to dropped routine", nil),
ErrDataTooLong: Message("Data too long for column '%s' at row %d", nil),
ErrSpBadSQLstate: Message("Bad SQLSTATE: '%s'", nil),
ErrStartup: Message("%s: ready for connections.\nVersion: '%s' socket: '%s' port: %d %s", nil),
ErrLoadFromFixedSizeRowsToVar: Message("Can't load value from file with fixed size rows to variable", nil),
ErrCantCreateUserWithGrant: Message("You are not allowed to create a user with GRANT", nil),
ErrWrongValueForType: Message("Incorrect %-.32s value: '%-.128s' for function %-.32s", nil),
ErrTableDefChanged: Message("Table definition has changed, please retry transaction", nil),
ErrSpDupHandler: Message("Duplicate handler declared in the same block", nil),
ErrSpNotVarArg: Message("OUT or INOUT argument %d for routine %s is not a variable or NEW pseudo-variable in BEFORE trigger", nil),
ErrSpNoRetset: Message("Not allowed to return a result set from a %s", nil),
ErrCantCreateGeometryObject: Message("Cannot get geometry object from data you send to the GEOMETRY field", nil),
ErrFailedRoutineBreakBinlog: Message("A routine failed and has neither NO SQL nor READS SQL DATA in its declaration and binary logging is enabled; if non-transactional tables were updated, the binary log will miss their changes", nil),
ErrBinlogUnsafeRoutine: Message("This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe logBinTrustFunctionCreators variable)", nil),
ErrBinlogCreateRoutineNeedSuper: Message("You do not have the SUPER privilege and binary logging is enabled (you *might* want to use the less safe logBinTrustFunctionCreators variable)", nil),
ErrExecStmtWithOpenCursor: Message("You can't execute a prepared statement which has an open cursor associated with it. Reset the statement to re-execute it.", nil),
ErrStmtHasNoOpenCursor: Message("The statement (%d) has no open cursor.", nil),
ErrCommitNotAllowedInSfOrTrg: Message("Explicit or implicit commit is not allowed in stored function or trigger.", nil),
ErrNoDefaultForViewField: Message("Field of view '%-.192s.%-.192s' underlying table doesn't have a default value", nil),
ErrSpNoRecursion: Message("Recursive stored functions and triggers are not allowed.", nil),
ErrTooBigScale: Message("Too big scale %d specified for column '%-.192s'. Maximum is %d.", nil),
ErrTooBigPrecision: Message("Too-big precision %d specified for '%-.192s'. Maximum is %d.", nil),
ErrMBiggerThanD: Message("For float(M,D), double(M,D) or decimal(M,D), M must be >= D (column '%-.192s').", nil),
ErrWrongLockOfSystemTable: Message("You can't combine write-locking of system tables with other tables or lock types", nil),
ErrConnectToForeignDataSource: Message("Unable to connect to foreign data source: %.64s", nil),
ErrQueryOnForeignDataSource: Message("There was a problem processing the query on the foreign data source. Data source : %-.64s", nil),
ErrForeignDataSourceDoesntExist: Message("The foreign data source you are trying to reference does not exist. Data source : %-.64s", nil),
ErrForeignDataStringInvalidCantCreate: Message("Can't create federated table. The data source connection string '%-.64s' is not in the correct format", nil),
ErrForeignDataStringInvalid: Message("The data source connection string '%-.64s' is not in the correct format", nil),
ErrCantCreateFederatedTable: Message("Can't create federated table. Foreign data src : %-.64s", nil),
ErrTrgInWrongSchema: Message("Trigger in wrong schema", nil),
ErrStackOverrunNeedMore: Message("Thread stack overrun: %d bytes used of a %d byte stack, and %d bytes needed. Use 'mysqld --threadStack=#' to specify a bigger stack.", nil),
ErrTooLongBody: Message("Routine body for '%-.100s' is too long", nil),
ErrWarnCantDropDefaultKeycache: Message("Cannot drop default keycache", nil),
ErrTooBigDisplaywidth: Message("Display width out of range for column '%-.192s' (max = %d)", nil),
ErrXaerDupid: Message("XAERDUPID: The XID already exists", nil),
ErrDatetimeFunctionOverflow: Message("Datetime function: %-.32s field overflow", nil),
ErrCantUpdateUsedTableInSfOrTrg: Message("Can't update table '%-.192s' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.", nil),
ErrViewPreventUpdate: Message("The definition of table '%-.192s' prevents operation %.192s on table '%-.192s'.", nil),
ErrPsNoRecursion: Message("The prepared statement contains a stored routine call that refers to that same statement. It's not allowed to execute a prepared statement in such a recursive manner", nil),
ErrSpCantSetAutocommit: Message("Not allowed to set autocommit from a stored function or trigger", nil),
ErrMalformedDefiner: Message("Definer is not fully qualified", nil),
ErrViewFrmNoUser: Message("View '%-.192s'.'%-.192s' has no definer information (old table format). Current user is used as definer. Please recreate the view!", nil),
ErrViewOtherUser: Message("You need the SUPER privilege for creation view with '%-.192s'@'%-.192s' definer", nil),
ErrNoSuchUser: Message("The user specified as a definer ('%-.64s'@'%-.64s') does not exist", nil),
ErrForbidSchemaChange: Message("Changing schema from '%-.192s' to '%-.192s' is not allowed.", nil),
ErrRowIsReferenced2: Message("Cannot delete or update a parent row: a foreign key constraint fails (%.192s)", nil),
ErrNoReferencedRow2: Message("Cannot add or update a child row: a foreign key constraint fails (%.192s)", nil),
ErrSpBadVarShadow: Message("Variable '%-.64s' must be quoted with `...`, or renamed", nil),
ErrTrgNoDefiner: Message("No definer attribute for trigger '%-.192s'.'%-.192s'. The trigger will be activated under the authorization of the invoker, which may have insufficient privileges. Please recreate the trigger.", nil),
ErrOldFileFormat: Message("'%-.192s' has an old format, you should re-create the '%s' object(s)", nil),
ErrSpRecursionLimit: Message("Recursive limit %d (as set by the maxSpRecursionDepth variable) was exceeded for routine %.192s", nil),
ErrSpProcTableCorrupt: Message("Failed to load routine %-.192s. The table mysql.proc is missing, corrupt, or contains bad data (internal code %d)", nil),
ErrSpWrongName: Message("Incorrect routine name '%-.192s'", nil),
ErrTableNeedsUpgrade: Message("Table upgrade required. Please do \"REPAIR TABLE `%-.32s`\"", nil),
ErrSpNoAggregate: Message("AGGREGATE is not supported for stored functions", nil),
ErrMaxPreparedStmtCountReached: Message("Can't create more than maxPreparedStmtCount statements (current value: %d)", nil),
ErrViewRecursive: Message("`%-.192s`.`%-.192s` contains view recursion", nil),
ErrNonGroupingFieldUsed: Message("Non-grouping field '%-.192s' is used in %-.64s clause", nil),
ErrTableCantHandleSpkeys: Message("The used table type doesn't support SPATIAL indexes", nil),
ErrNoTriggersOnSystemSchema: Message("Triggers can not be created on system tables", nil),
ErrRemovedSpaces: Message("Leading spaces are removed from name '%s'", nil),
ErrAutoincReadFailed: Message("Failed to read auto-increment value from storage engine", nil),
ErrUsername: Message("user name", nil),
ErrHostname: Message("host name", nil),
ErrWrongStringLength: Message("String '%-.70s' is too long for %s (should be no longer than %d)", nil),
ErrNonInsertableTable: Message("The target table %-.100s of the %s is not insertable-into", nil),
ErrAdminWrongMrgTable: Message("Table '%-.64s' is differently defined or of non-MyISAM type or doesn't exist", nil),
ErrTooHighLevelOfNestingForSelect: Message("Too high level of nesting for select", nil),
ErrNameBecomesEmpty: Message("Name '%-.64s' has become ''", nil),
ErrAmbiguousFieldTerm: Message("First character of the FIELDS TERMINATED string is ambiguous; please use non-optional and non-empty FIELDS ENCLOSED BY", nil),
ErrForeignServerExists: Message("The foreign server, %s, you are trying to create already exists.", nil),
ErrForeignServerDoesntExist: Message("The foreign server name you are trying to reference does not exist. Data source : %-.64s", nil),
ErrIllegalHaCreateOption: Message("Table storage engine '%-.64s' does not support the create option '%.64s'", nil),
ErrPartitionRequiresValues: Message("Syntax : %-.64s PARTITIONING requires definition of VALUES %-.64s for each partition", nil),
ErrPartitionWrongValues: Message("Only %-.64s PARTITIONING can use VALUES %-.64s in partition definition", nil),
ErrPartitionMaxvalue: Message("MAXVALUE can only be used in last partition definition", nil),
ErrPartitionSubpartition: Message("Subpartitions can only be hash partitions and by key", nil),
ErrPartitionSubpartMix: Message("Must define subpartitions on all partitions if on one partition", nil),
ErrPartitionWrongNoPart: Message("Wrong number of partitions defined, mismatch with previous setting", nil),
ErrPartitionWrongNoSubpart: Message("Wrong number of subpartitions defined, mismatch with previous setting", nil),
ErrWrongExprInPartitionFunc: Message("Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed", nil),
ErrNoConstExprInRangeOrList: Message("Expression in RANGE/LIST VALUES must be constant", nil),
ErrFieldNotFoundPart: Message("Field in list of fields for partition function not found in table", nil),
ErrListOfFieldsOnlyInHash: Message("List of fields is only allowed in KEY partitions", nil),
ErrInconsistentPartitionInfo: Message("The partition info in the frm file is not consistent with what can be written into the frm file", nil),
ErrPartitionFuncNotAllowed: Message("The %-.192s function returns the wrong type", nil),
ErrPartitionsMustBeDefined: Message("For %-.64s partitions each partition must be defined", nil),
ErrRangeNotIncreasing: Message("VALUES LESS THAN value must be strictly increasing for each partition", nil),
ErrInconsistentTypeOfFunctions: Message("VALUES value must be of same type as partition function", nil),
ErrMultipleDefConstInListPart: Message("Multiple definition of same constant in list partitioning", nil),
ErrPartitionEntry: Message("Partitioning can not be used stand-alone in query", nil),
ErrMixHandler: Message("The mix of handlers in the partitions is not allowed in this version of MySQL", nil),
ErrPartitionNotDefined: Message("For the partitioned engine it is necessary to define all %-.64s", nil),
ErrTooManyPartitions: Message("Too many partitions (including subpartitions) were defined", nil),
ErrSubpartition: Message("It is only possible to mix RANGE/LIST partitioning with HASH/KEY partitioning for subpartitioning", nil),
ErrCantCreateHandlerFile: Message("Failed to create specific handler file", nil),
ErrBlobFieldInPartFunc: Message("A BLOB field is not allowed in partition function", nil),
ErrUniqueKeyNeedAllFieldsInPf: Message("A %-.192s must include all columns in the table's partitioning function", nil),
ErrNoParts: Message("Number of %-.64s = 0 is not an allowed value", nil),
ErrPartitionMgmtOnNonpartitioned: Message("Partition management on a not partitioned table is not possible", nil),
ErrForeignKeyOnPartitioned: Message("Foreign key clause is not yet supported in conjunction with partitioning", nil),
ErrDropPartitionNonExistent: Message("Error in list of partitions to %-.64s", nil),
ErrDropLastPartition: Message("Cannot remove all partitions, use DROP TABLE instead", nil),
ErrCoalesceOnlyOnHashPartition: Message("COALESCE PARTITION can only be used on HASH/KEY partitions", nil),
ErrReorgHashOnlyOnSameNo: Message("REORGANIZE PARTITION can only be used to reorganize partitions not to change their numbers", nil),
ErrReorgNoParam: Message("REORGANIZE PARTITION without parameters can only be used on auto-partitioned tables using HASH PARTITIONs", nil),
ErrOnlyOnRangeListPartition: Message("%-.64s PARTITION can only be used on RANGE/LIST partitions", nil),
ErrAddPartitionSubpart: Message("Trying to Add partition(s) with wrong number of subpartitions", nil),
ErrAddPartitionNoNewPartition: Message("At least one partition must be added", nil),
ErrCoalescePartitionNoPartition: Message("At least one partition must be coalesced", nil),
ErrReorgPartitionNotExist: Message("More partitions to reorganize than there are partitions", nil),
ErrSameNamePartition: Message("Duplicate partition name %-.192s", nil),
ErrNoBinlog: Message("It is not allowed to shut off binlog on this command", nil),
ErrConsecutiveReorgPartitions: Message("When reorganizing a set of partitions they must be in consecutive order", nil),
ErrReorgOutsideRange: Message("Reorganize of range partitions cannot change total ranges except for last partition where it can extend the range", nil),
ErrPartitionFunctionFailure: Message("Partition function not supported in this version for this handler", nil),
ErrPartState: Message("Partition state cannot be defined from CREATE/ALTER TABLE", nil),
ErrLimitedPartRange: Message("The %-.64s handler only supports 32 bit integers in VALUES", nil),
ErrPluginIsNotLoaded: Message("Plugin '%-.192s' is not loaded", nil),
ErrWrongValue: Message("Incorrect %-.32s value: '%-.128s'", nil),
ErrNoPartitionForGivenValue: Message("Table has no partition for value %-.64s", nil),
ErrFilegroupOptionOnlyOnce: Message("It is not allowed to specify %s more than once", nil),
ErrCreateFilegroupFailed: Message("Failed to create %s", nil),
ErrDropFilegroupFailed: Message("Failed to drop %s", nil),
ErrTablespaceAutoExtend: Message("The handler doesn't support autoextend of tablespaces", nil),
ErrWrongSizeNumber: Message("A size parameter was incorrectly specified, either number or on the form 10M", nil),
ErrSizeOverflow: Message("The size number was correct but we don't allow the digit part to be more than 2 billion", nil),
ErrAlterFilegroupFailed: Message("Failed to alter: %s", nil),
ErrBinlogRowLoggingFailed: Message("Writing one row to the row-based binary log failed", nil),
ErrBinlogRowWrongTableDef: Message("Table definition on master and slave does not match: %s", nil),
ErrBinlogRowRbrToSbr: Message("Slave running with --log-slave-updates must use row-based binary logging to be able to replicate row-based binary log events", nil),
ErrEventAlreadyExists: Message("Event '%-.192s' already exists", nil),
ErrEventStoreFailed: Message("Failed to store event %s. Error code %d from storage engine.", nil),
ErrEventDoesNotExist: Message("Unknown event '%-.192s'", nil),
ErrEventCantAlter: Message("Failed to alter event '%-.192s'", nil),
ErrEventDropFailed: Message("Failed to drop %s", nil),
ErrEventIntervalNotPositiveOrTooBig: Message("INTERVAL is either not positive or too big", nil),
ErrEventEndsBeforeStarts: Message("ENDS is either invalid or before STARTS", nil),
ErrEventExecTimeInThePast: Message("Event execution time is in the past. Event has been disabled", nil),
ErrEventOpenTableFailed: Message("Failed to open mysql.event", nil),
ErrEventNeitherMExprNorMAt: Message("No datetime expression provided", nil),
ErrObsoleteColCountDoesntMatchCorrupted: Message("Column count of mysql.%s is wrong. Expected %d, found %d. The table is probably corrupted", nil),
ErrObsoleteCannotLoadFromTable: Message("Cannot load from mysql.%s. The table is probably corrupted", nil),
ErrEventCannotDelete: Message("Failed to delete the event from mysql.event", nil),
ErrEventCompile: Message("Error during compilation of event's body", nil),
ErrEventSameName: Message("Same old and new event name", nil),
ErrEventDataTooLong: Message("Data for column '%s' too long", nil),
ErrDropIndexNeededInForeignKey: Message("Cannot drop index '%-.192s': needed in a foreign key constraint", nil),
ErrWarnDeprecatedSyntaxWithVer: Message("The syntax '%s' is deprecated and will be removed in MySQL %s. Please use %s instead", nil),
ErrCantWriteLockLogTable: Message("You can't write-lock a log table. Only read access is possible", nil),
ErrCantLockLogTable: Message("You can't use locks with log tables.", nil),
ErrForeignDuplicateKeyOldUnused: Message("Upholding foreign key constraints for table '%.192s', entry '%-.192s', key %d would lead to a duplicate entry", nil),
ErrColCountDoesntMatchPleaseUpdate: Message("Column count of mysql.%s is wrong. Expected %d, found %d. Created with MySQL %d, now running %d. Please use mysqlUpgrade to fix this error.", nil),
ErrTempTablePreventsSwitchOutOfRbr: Message("Cannot switch out of the row-based binary log format when the session has open temporary tables", nil),
ErrStoredFunctionPreventsSwitchBinlogFormat: Message("Cannot change the binary logging format inside a stored function or trigger", nil),
ErrNdbCantSwitchBinlogFormat: Message("The NDB cluster engine does not support changing the binlog format on the fly yet", nil),
ErrPartitionNoTemporary: Message("Cannot create temporary table with partitions", nil),
ErrPartitionConstDomain: Message("Partition constant is out of partition function domain", nil),
ErrPartitionFunctionIsNotAllowed: Message("This partition function is not allowed", nil),
ErrDdlLog: Message("Error in DDL log", nil),
ErrNullInValuesLessThan: Message("Not allowed to use NULL value in VALUES LESS THAN", nil),
ErrWrongPartitionName: Message("Incorrect partition name", nil),
ErrCantChangeTxCharacteristics: Message("Transaction characteristics can't be changed while a transaction is in progress", nil),
ErrDupEntryAutoincrementCase: Message("ALTER TABLE causes autoIncrement resequencing, resulting in duplicate entry '%-.192s' for key '%-.192s'", nil),
ErrEventModifyQueue: Message("Internal scheduler error %d", nil),
ErrEventSetVar: Message("Error during starting/stopping of the scheduler. Error code %d", nil),
ErrPartitionMerge: Message("Engine cannot be used in partitioned tables", nil),
ErrCantActivateLog: Message("Cannot activate '%-.64s' log", nil),
ErrRbrNotAvailable: Message("The server was not built with row-based replication", nil),
ErrBase64Decode: Message("Decoding of base64 string failed", nil),
ErrEventRecursionForbidden: Message("Recursion of EVENT DDL statements is forbidden when body is present", nil),
ErrEventsDB: Message("Cannot proceed because system tables used by Event Scheduler were found damaged at server start", nil),
ErrOnlyIntegersAllowed: Message("Only integers allowed as number here", nil),
ErrUnsuportedLogEngine: Message("This storage engine cannot be used for log tables\"", nil),
ErrBadLogStatement: Message("You cannot '%s' a log table if logging is enabled", nil),
ErrCantRenameLogTable: Message("Cannot rename '%s'. When logging enabled, rename to/from log table must rename two tables: the log table to an archive table and another table back to '%s'", nil),
ErrWrongParamcountToNativeFct: Message("Incorrect parameter count in the call to native function '%-.192s'", nil),
ErrWrongParametersToNativeFct: Message("Incorrect parameters in the call to native function '%-.192s'", nil),
ErrWrongParametersToStoredFct: Message("Incorrect parameters in the call to stored function '%-.192s'", nil),
ErrNativeFctNameCollision: Message("This function '%-.192s' has the same name as a native function", nil),
ErrDupEntryWithKeyName: Message("Duplicate entry '%-.64s' for key '%-.192s'", nil),
ErrBinlogPurgeEmFile: Message("Too many files opened, please execute the command again", nil),
ErrEventCannotCreateInThePast: Message("Event execution time is in the past and ON COMPLETION NOT PRESERVE is set. The event was dropped immediately after creation.", nil),
ErrEventCannotAlterInThePast: Message("Event execution time is in the past and ON COMPLETION NOT PRESERVE is set. The event was not changed. Specify a time in the future.", nil),
ErrSlaveIncident: Message("The incident %s occurred on the master. Message: %-.64s", nil),
ErrNoPartitionForGivenValueSilent: Message("Table has no partition for some existing values", nil),
ErrBinlogUnsafeStatement: Message("Unsafe statement written to the binary log using statement format since BINLOGFORMAT = STATEMENT. %s", nil),
ErrSlaveFatal: Message("Fatal : %s", nil),
ErrSlaveRelayLogReadFailure: Message("Relay log read failure: %s", nil),
ErrSlaveRelayLogWriteFailure: Message("Relay log write failure: %s", nil),
ErrSlaveCreateEventFailure: Message("Failed to create %s", nil),
ErrSlaveMasterComFailure: Message("Master command %s failed: %s", nil),
ErrBinlogLoggingImpossible: Message("Binary logging not possible. Message: %s", nil),
ErrViewNoCreationCtx: Message("View `%-.64s`.`%-.64s` has no creation context", nil),
ErrViewInvalidCreationCtx: Message("Creation context of view `%-.64s`.`%-.64s' is invalid", nil),
ErrSrInvalidCreationCtx: Message("Creation context of stored routine `%-.64s`.`%-.64s` is invalid", nil),
ErrTrgCorruptedFile: Message("Corrupted TRG file for table `%-.64s`.`%-.64s`", nil),
ErrTrgNoCreationCtx: Message("Triggers for table `%-.64s`.`%-.64s` have no creation context", nil),
ErrTrgInvalidCreationCtx: Message("Trigger creation context of table `%-.64s`.`%-.64s` is invalid", nil),
ErrEventInvalidCreationCtx: Message("Creation context of event `%-.64s`.`%-.64s` is invalid", nil),
ErrTrgCantOpenTable: Message("Cannot open table for trigger `%-.64s`.`%-.64s`", nil),
ErrCantCreateSroutine: Message("Cannot create stored routine `%-.64s`. Check warnings", nil),
ErrNeverUsed: Message("Ambiguous slave modes combination. %s", nil),
ErrNoFormatDescriptionEventBeforeBinlogStatement: Message("The BINLOG statement of type `%s` was not preceded by a format description BINLOG statement.", nil),
ErrSlaveCorruptEvent: Message("Corrupted replication event was detected", nil),
ErrLoadDataInvalidColumn: Message("Invalid column reference (%-.64s) in LOAD DATA", nil),
ErrLogPurgeNoFile: Message("Being purged log %s was not found", nil),
ErrXaRbtimeout: Message("XARBTIMEOUT: Transaction branch was rolled back: took too long", nil),
ErrXaRbdeadlock: Message("XARBDEADLOCK: Transaction branch was rolled back: deadlock was detected", nil),
ErrNeedReprepare: Message("Prepared statement needs to be re-prepared", nil),
ErrDelayedNotSupported: Message("DELAYED option not supported for table '%-.192s'", nil),
WarnNoMasterInfo: Message("The master info structure does not exist", nil),
WarnOptionIgnored: Message("<%-.64s> option ignored", nil),
WarnPluginDeleteBuiltin: Message("Built-in plugins cannot be deleted", nil),
WarnPluginBusy: Message("Plugin is busy and will be uninstalled on shutdown", nil),
ErrVariableIsReadonly: Message("%s variable '%s' is read-only. Use SET %s to assign the value", nil),
ErrWarnEngineTransactionRollback: Message("Storage engine %s does not support rollback for this statement. Transaction rolled back and must be restarted", nil),
ErrSlaveHeartbeatFailure: Message("Unexpected master's heartbeat data: %s", nil),
ErrSlaveHeartbeatValueOutOfRange: Message("The requested value for the heartbeat period is either negative or exceeds the maximum allowed (%s seconds).", nil),
ErrNdbReplicationSchema: Message("Bad schema for mysql.ndbReplication table. Message: %-.64s", nil),
ErrConflictFnParse: Message("Error in parsing conflict function. Message: %-.64s", nil),
ErrExceptionsWrite: Message("Write to exceptions table failed. Message: %-.128s\"", nil),
ErrTooLongTableComment: Message("Comment for table '%-.64s' is too long (max = %d)", nil),
ErrTooLongFieldComment: Message("Comment for field '%-.64s' is too long (max = %d)", nil),
ErrFuncInexistentNameCollision: Message("FUNCTION %s does not exist. Check the 'Function Name Parsing and Resolution' section in the Reference Manual", nil),
ErrDatabaseName: Message("Database", nil),
ErrTableName: Message("Table", nil),
ErrPartitionName: Message("Partition", nil),
ErrSubpartitionName: Message("Subpartition", nil),
ErrTemporaryName: Message("Temporary", nil),
ErrRenamedName: Message("Renamed", nil),
ErrTooManyConcurrentTrxs: Message("Too many active concurrent transactions", nil),
WarnNonASCIISeparatorNotImplemented: Message("Non-ASCII separator arguments are not fully supported", nil),
ErrDebugSyncTimeout: Message("debug sync point wait timed out", nil),
ErrDebugSyncHitLimit: Message("debug sync point hit limit reached", nil),
ErrDupSignalSet: Message("Duplicate condition information item '%s'", nil),
ErrSignalWarn: Message("Unhandled user-defined warning condition", nil),
ErrSignalNotFound: Message("Unhandled user-defined not found condition", nil),
ErrSignalException: Message("Unhandled user-defined exception condition", nil),
ErrResignalWithoutActiveHandler: Message("RESIGNAL when handler not active", nil),
ErrSignalBadConditionType: Message("SIGNAL/RESIGNAL can only use a CONDITION defined with SQLSTATE", nil),
WarnCondItemTruncated: Message("Data truncated for condition item '%s'", nil),
ErrCondItemTooLong: Message("Data too long for condition item '%s'", nil),
ErrUnknownLocale: Message("Unknown locale: '%-.64s'", nil),
ErrSlaveIgnoreServerIDs: Message("The requested server id %d clashes with the slave startup option --replicate-same-server-id", nil),
ErrQueryCacheDisabled: Message("Query cache is disabled; restart the server with queryCacheType=1 to enable it", nil),
ErrSameNamePartitionField: Message("Duplicate partition field name '%-.192s'", nil),
ErrPartitionColumnList: Message("Inconsistency in usage of column lists for partitioning", nil),
ErrWrongTypeColumnValue: Message("Partition column values of incorrect type", nil),
ErrTooManyPartitionFuncFields: Message("Too many fields in '%-.192s'", nil),
ErrMaxvalueInValuesIn: Message("Cannot use MAXVALUE as value in VALUES IN", nil),
ErrTooManyValues: Message("Cannot have more than one value for this type of %-.64s partitioning", nil),
ErrRowSinglePartitionField: Message("Row expressions in VALUES IN only allowed for multi-field column partitioning", nil),
ErrFieldTypeNotAllowedAsPartitionField: Message("Field '%-.192s' is of a not allowed type for this type of partitioning", nil),
ErrPartitionFieldsTooLong: Message("The total length of the partitioning fields is too large", nil),
ErrBinlogRowEngineAndStmtEngine: Message("Cannot execute statement: impossible to write to binary log since both row-incapable engines and statement-incapable engines are involved.", nil),
ErrBinlogRowModeAndStmtEngine: Message("Cannot execute statement: impossible to write to binary log since BINLOGFORMAT = ROW and at least one table uses a storage engine limited to statement-based logging.", nil),
ErrBinlogUnsafeAndStmtEngine: Message("Cannot execute statement: impossible to write to binary log since statement is unsafe, storage engine is limited to statement-based logging, and BINLOGFORMAT = MIXED. %s", nil),
ErrBinlogRowInjectionAndStmtEngine: Message("Cannot execute statement: impossible to write to binary log since statement is in row format and at least one table uses a storage engine limited to statement-based logging.", nil),
ErrBinlogStmtModeAndRowEngine: Message("Cannot execute statement: impossible to write to binary log since BINLOGFORMAT = STATEMENT and at least one table uses a storage engine limited to row-based logging.%s", nil),
ErrBinlogRowInjectionAndStmtMode: Message("Cannot execute statement: impossible to write to binary log since statement is in row format and BINLOGFORMAT = STATEMENT.", nil),
ErrBinlogMultipleEnginesAndSelfLoggingEngine: Message("Cannot execute statement: impossible to write to binary log since more than one engine is involved and at least one engine is self-logging.", nil),
ErrBinlogUnsafeLimit: Message("The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.", nil),
ErrBinlogUnsafeInsertDelayed: Message("The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.", nil),
ErrBinlogUnsafeSystemTable: Message("The statement is unsafe because it uses the general log, slow query log, or performanceSchema table(s). This is unsafe because system tables may differ on slaves.", nil),
ErrBinlogUnsafeAutoincColumns: Message("Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTOINCREMENT column. Inserted values cannot be logged correctly.", nil),
ErrBinlogUnsafeUdf: Message("Statement is unsafe because it uses a UDF which may not return the same value on the slave.", nil),
ErrBinlogUnsafeSystemVariable: Message("Statement is unsafe because it uses a system variable that may have a different value on the slave.", nil),
ErrBinlogUnsafeSystemFunction: Message("Statement is unsafe because it uses a system function that may return a different value on the slave.", nil),
ErrBinlogUnsafeNontransAfterTrans: Message("Statement is unsafe because it accesses a non-transactional table after accessing a transactional table within the same transaction.", nil),
ErrMessageAndStatement: Message("%s Statement: %s", nil),
ErrSlaveConversionFailed: Message("Column %d of table '%-.192s.%-.192s' cannot be converted from type '%-.32s' to type '%-.32s'", nil),
ErrSlaveCantCreateConversion: Message("Can't create conversion table for table '%-.192s.%-.192s'", nil),
ErrInsideTransactionPreventsSwitchBinlogFormat: Message("Cannot modify @@session.binlogFormat inside a transaction", nil),
ErrPathLength: Message("The path specified for %.64s is too long.", nil),
ErrWarnDeprecatedSyntaxNoReplacement: Message("%s is deprecated and will be removed in a future release.%s", nil),
ErrWrongNativeTableStructure: Message("Native table '%-.64s'.'%-.64s' has the wrong structure", nil),
ErrWrongPerfSchemaUsage: Message("Invalid performanceSchema usage.", nil),
ErrWarnISSkippedTable: Message("Table '%s'.'%s' was skipped since its definition is being modified by concurrent DDL statement", nil),
ErrInsideTransactionPreventsSwitchBinlogDirect: Message("Cannot modify @@session.binlogDirectNonTransactionalUpdates inside a transaction", nil),
ErrStoredFunctionPreventsSwitchBinlogDirect: Message("Cannot change the binlog direct flag inside a stored function or trigger", nil),
ErrSpatialMustHaveGeomCol: Message("A SPATIAL index may only contain a geometrical type column", nil),
ErrTooLongIndexComment: Message("Comment for index '%-.64s' is too long (max = %d)", nil),
ErrLockAborted: Message("Wait on a lock was aborted due to a pending exclusive lock", nil),
ErrDataOutOfRange: Message("%s value is out of range in '%s'", nil),
ErrWrongSpvarTypeInLimit: Message("A variable of a non-integer based type in LIMIT clause", nil),
ErrBinlogUnsafeMultipleEnginesAndSelfLoggingEngine: Message("Mixing self-logging and non-self-logging engines in a statement is unsafe.", nil),
ErrBinlogUnsafeMixedStatement: Message("Statement accesses nontransactional table as well as transactional or temporary table, and writes to any of them.", nil),
ErrInsideTransactionPreventsSwitchSQLLogBin: Message("Cannot modify @@session.sqlLogBin inside a transaction", nil),
ErrStoredFunctionPreventsSwitchSQLLogBin: Message("Cannot change the sqlLogBin inside a stored function or trigger", nil),
ErrFailedReadFromParFile: Message("Failed to read from the .par file", nil),
ErrValuesIsNotIntType: Message("VALUES value for partition '%-.64s' must have type INT", nil),
ErrAccessDeniedNoPassword: Message("Access denied for user '%-.48s'@'%-.64s'", nil),
ErrSetPasswordAuthPlugin: Message("SET PASSWORD has no significance for user '%-.48s'@'%-.255s' as authentication plugin does not support it.", nil),
ErrGrantPluginUserExists: Message("GRANT with IDENTIFIED WITH is illegal because the user %-.*s already exists", nil),
ErrTruncateIllegalForeignKey: Message("Cannot truncate a table referenced in a foreign key constraint (%.192s)", nil),
ErrPluginIsPermanent: Message("Plugin '%s' is forcePlusPermanent and can not be unloaded", nil),
ErrSlaveHeartbeatValueOutOfRangeMin: Message("The requested value for the heartbeat period is less than 1 millisecond. The value is reset to 0, meaning that heartbeating will effectively be disabled.", nil),
ErrSlaveHeartbeatValueOutOfRangeMax: Message("The requested value for the heartbeat period exceeds the value of `slaveNetTimeout' seconds. A sensible value for the period should be less than the timeout.", nil),
ErrStmtCacheFull: Message("Multi-row statements required more than 'maxBinlogStmtCacheSize' bytes of storage; increase this mysqld variable and try again", nil),
ErrMultiUpdateKeyConflict: Message("Primary key/partition key update is not allowed since the table is updated both as '%-.192s' and '%-.192s'.", nil),
ErrTableNeedsRebuild: Message("Table rebuild required. Please do \"ALTER TABLE `%-.32s` FORCE\" or dump/reload to fix it!", nil),
WarnOptionBelowLimit: Message("The value of '%s' should be no less than the value of '%s'", nil),
ErrIndexColumnTooLong: Message("Index column size too large. The maximum column size is %d bytes.", nil),
ErrErrorInTriggerBody: Message("Trigger '%-.64s' has an error in its body: '%-.256s'", nil),
ErrErrorInUnknownTriggerBody: Message("Unknown trigger has an error in its body: '%-.256s'", nil),
ErrIndexCorrupt: Message("Index %s is corrupted", nil),
ErrUndoRecordTooBig: Message("Undo log record is too big.", nil),
ErrBinlogUnsafeInsertIgnoreSelect: Message("INSERT IGNORE... SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are ignored. This order cannot be predicted and may differ on master and the slave.", nil),
ErrBinlogUnsafeInsertSelectUpdate: Message("INSERT... SELECT... ON DUPLICATE KEY UPDATE is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are updated. This order cannot be predicted and may differ on master and the slave.", nil),
ErrBinlogUnsafeReplaceSelect: Message("REPLACE... SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are replaced. This order cannot be predicted and may differ on master and the slave.", nil),
ErrBinlogUnsafeCreateIgnoreSelect: Message("CREATE... IGNORE SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are ignored. This order cannot be predicted and may differ on master and the slave.", nil),
ErrBinlogUnsafeCreateReplaceSelect: Message("CREATE... REPLACE SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are replaced. This order cannot be predicted and may differ on master and the slave.", nil),
ErrBinlogUnsafeUpdateIgnore: Message("UPDATE IGNORE is unsafe because the order in which rows are updated determines which (if any) rows are ignored. This order cannot be predicted and may differ on master and the slave.", nil),
ErrPluginNoUninstall: Message("Plugin '%s' is marked as not dynamically uninstallable. You have to stop the server to uninstall it.", nil),
ErrPluginNoInstall: Message("Plugin '%s' is marked as not dynamically installable. You have to stop the server to install it.", nil),
ErrBinlogUnsafeWriteAutoincSelect: Message("Statements writing to a table with an auto-increment column after selecting from another table are unsafe because the order in which rows are retrieved determines what (if any) rows will be written. This order cannot be predicted and may differ on master and the slave.", nil),
ErrBinlogUnsafeCreateSelectAutoinc: Message("CREATE TABLE... SELECT... on a table with an auto-increment column is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are inserted. This order cannot be predicted and may differ on master and the slave.", nil),
ErrBinlogUnsafeInsertTwoKeys: Message("INSERT... ON DUPLICATE KEY UPDATE on a table with more than one UNIQUE KEY is unsafe", nil),
ErrTableInFkCheck: Message("Table is being used in foreign key check.", nil),
ErrUnsupportedEngine: Message("Storage engine '%s' does not support system tables. [%s.%s]", nil),
ErrBinlogUnsafeAutoincNotFirst: Message("INSERT into autoincrement field which is not the first part in the composed primary key is unsafe.", nil),
ErrCannotLoadFromTableV2: Message("Cannot load from %s.%s. The table is probably corrupted", nil),
ErrMasterDelayValueOutOfRange: Message("The requested value %d for the master delay exceeds the maximum %d", nil),
ErrOnlyFdAndRbrEventsAllowedInBinlogStatement: Message("Only FormatDescriptionLogEvent and row events are allowed in BINLOG statements (but %s was provided)", nil),
ErrPartitionExchangeDifferentOption: Message("Non matching attribute '%-.64s' between partition and table", nil),
ErrPartitionExchangePartTable: Message("Table to exchange with partition is partitioned: '%-.64s'", nil),
ErrPartitionExchangeTempTable: Message("Table to exchange with partition is temporary: '%-.64s'", nil),
ErrPartitionInsteadOfSubpartition: Message("Subpartitioned table, use subpartition instead of partition", nil),
ErrUnknownPartition: Message("Unknown partition '%-.64s' in table '%-.64s'", nil),
ErrTablesDifferentMetadata: Message("Tables have different definitions", nil),
ErrRowDoesNotMatchPartition: Message("Found a row that does not match the partition", nil),
ErrBinlogCacheSizeGreaterThanMax: Message("Option binlogCacheSize (%d) is greater than maxBinlogCacheSize (%d); setting binlogCacheSize equal to maxBinlogCacheSize.", nil),
ErrWarnIndexNotApplicable: Message("Cannot use %-.64s access on index '%-.64s' due to type or collation conversion on field '%-.64s'", nil),
ErrPartitionExchangeForeignKey: Message("Table to exchange with partition has foreign key references: '%-.64s'", nil),
ErrNoSuchKeyValue: Message("Key value '%-.192s' was not found in table '%-.192s.%-.192s'", nil),
ErrRplInfoDataTooLong: Message("Data for column '%s' too long", nil),
ErrNetworkReadEventChecksumFailure: Message("Replication event checksum verification failed while reading from network.", nil),
ErrBinlogReadEventChecksumFailure: Message("Replication event checksum verification failed while reading from a log file.", nil),
ErrBinlogStmtCacheSizeGreaterThanMax: Message("Option binlogStmtCacheSize (%d) is greater than maxBinlogStmtCacheSize (%d); setting binlogStmtCacheSize equal to maxBinlogStmtCacheSize.", nil),
ErrCantUpdateTableInCreateTableSelect: Message("Can't update table '%-.192s' while '%-.192s' is being created.", nil),
ErrPartitionClauseOnNonpartitioned: Message("PARTITION () clause on non partitioned table", nil),
ErrRowDoesNotMatchGivenPartitionSet: Message("Found a row not matching the given partition set", nil),
ErrNoSuchPartitionunused: Message("partition '%-.64s' doesn't exist", nil),
ErrChangeRplInfoRepositoryFailure: Message("Failure while changing the type of replication repository: %s.", nil),
ErrWarningNotCompleteRollbackWithCreatedTempTable: Message("The creation of some temporary tables could not be rolled back.", nil),
ErrWarningNotCompleteRollbackWithDroppedTempTable: Message("Some temporary tables were dropped, but these operations could not be rolled back.", nil),
ErrMtsFeatureIsNotSupported: Message("%s is not supported in multi-threaded slave mode. %s", nil),
ErrMtsUpdatedDBsGreaterMax: Message("The number of modified databases exceeds the maximum %d; the database names will not be included in the replication event metadata.", nil),
ErrMtsCantParallel: Message("Cannot execute the current event group in the parallel mode. Encountered event %s, relay-log name %s, position %s which prevents execution of this event group in parallel mode. Reason: %s.", nil),
ErrMtsInconsistentData: Message("%s", nil),
ErrFulltextNotSupportedWithPartitioning: Message("FULLTEXT index is not supported for partitioned tables.", nil),
ErrDaInvalidConditionNumber: Message("Invalid condition number", nil),
ErrInsecurePlainText: Message("Sending passwords in plain text without SSL/TLS is extremely insecure.", nil),
ErrInsecureChangeMaster: Message("Storing MySQL user name or password information in the master.info repository is not secure and is therefore not recommended. Please see the MySQL Manual for more about this issue and possible alternatives.", nil),
ErrForeignDuplicateKeyWithChildInfo: Message("Foreign key constraint for table '%.192s', record '%-.192s' would lead to a duplicate entry in table '%.192s', key '%.192s'", nil),
ErrForeignDuplicateKeyWithoutChildInfo: Message("Foreign key constraint for table '%.192s', record '%-.192s' would lead to a duplicate entry in a child table", nil),
ErrSQLthreadWithSecureSlave: Message("Setting authentication options is not possible when only the Slave SQL Thread is being started.", nil),
ErrTableHasNoFt: Message("The table does not have FULLTEXT index to support this query", nil),
ErrVariableNotSettableInSfOrTrigger: Message("The system variable %.200s cannot be set in stored functions or triggers.", nil),
ErrVariableNotSettableInTransaction: Message("The system variable %.200s cannot be set when there is an ongoing transaction.", nil),
ErrGtidNextIsNotInGtidNextList: Message("The system variable @@SESSION.GTIDNEXT has the value %.200s, which is not listed in @@SESSION.GTIDNEXTLIST.", nil),
ErrCantChangeGtidNextInTransactionWhenGtidNextListIsNull: Message("When @@SESSION.GTIDNEXTLIST == NULL, the system variable @@SESSION.GTIDNEXT cannot change inside a transaction.", nil),
ErrSetStatementCannotInvokeFunction: Message("The statement 'SET %.200s' cannot invoke a stored function.", nil),
ErrGtidNextCantBeAutomaticIfGtidNextListIsNonNull: Message("The system variable @@SESSION.GTIDNEXT cannot be 'AUTOMATIC' when @@SESSION.GTIDNEXTLIST is non-NULL.", nil),
ErrSkippingLoggedTransaction: Message("Skipping transaction %.200s because it has already been executed and logged.", nil),
ErrMalformedGtidSetSpecification: Message("Malformed GTID set specification '%.200s'.", nil),
ErrMalformedGtidSetEncoding: Message("Malformed GTID set encoding.", nil),
ErrMalformedGtidSpecification: Message("Malformed GTID specification '%.200s'.", nil),
ErrGnoExhausted: Message("Impossible to generate Global Transaction Identifier: the integer component reached the maximal value. Restart the server with a new serverUuid.", nil),
ErrBadSlaveAutoPosition: Message("Parameters MASTERLOGFILE, MASTERLOGPOS, RELAYLOGFILE and RELAYLOGPOS cannot be set when MASTERAUTOPOSITION is active.", nil),
ErrAutoPositionRequiresGtidModeOn: Message("CHANGE MASTER TO MASTERAUTOPOSITION = 1 can only be executed when @@GLOBAL.GTIDMODE = ON.", nil),
ErrCantDoImplicitCommitInTrxWhenGtidNextIsSet: Message("Cannot execute statements with implicit commit inside a transaction when @@SESSION.GTIDNEXT != AUTOMATIC or @@SESSION.GTIDNEXTLIST != NULL.", nil),
ErrGtidMode2Or3RequiresEnforceGtidConsistencyOn: Message("@@GLOBAL.GTIDMODE = ON or UPGRADESTEP2 requires @@GLOBAL.ENFORCEGTIDCONSISTENCY = 1.", nil),
ErrGtidModeRequiresBinlog: Message("@@GLOBAL.GTIDMODE = ON or UPGRADESTEP1 or UPGRADESTEP2 requires --log-bin and --log-slave-updates.", nil),
ErrCantSetGtidNextToGtidWhenGtidModeIsOff: Message("@@SESSION.GTIDNEXT cannot be set to UUID:NUMBER when @@GLOBAL.GTIDMODE = OFF.", nil),
ErrCantSetGtidNextToAnonymousWhenGtidModeIsOn: Message("@@SESSION.GTIDNEXT cannot be set to ANONYMOUS when @@GLOBAL.GTIDMODE = ON.", nil),
ErrCantSetGtidNextListToNonNullWhenGtidModeIsOff: Message("@@SESSION.GTIDNEXTLIST cannot be set to a non-NULL value when @@GLOBAL.GTIDMODE = OFF.", nil),
ErrFoundGtidEventWhenGtidModeIsOff: Message("Found a GtidLogEvent or PreviousGtidsLogEvent when @@GLOBAL.GTIDMODE = OFF.", nil),
ErrGtidUnsafeNonTransactionalTable: Message("When @@GLOBAL.ENFORCEGTIDCONSISTENCY = 1, updates to non-transactional tables can only be done in either autocommitted statements or single-statement transactions, and never in the same statement as updates to transactional tables.", nil),
ErrGtidUnsafeCreateSelect: Message("CREATE TABLE ... SELECT is forbidden when @@GLOBAL.ENFORCEGTIDCONSISTENCY = 1.", nil),
ErrGtidUnsafeCreateDropTemporaryTableInTransaction: Message("When @@GLOBAL.ENFORCEGTIDCONSISTENCY = 1, the statements CREATE TEMPORARY TABLE and DROP TEMPORARY TABLE can be executed in a non-transactional context only, and require that AUTOCOMMIT = 1.", nil),
ErrGtidModeCanOnlyChangeOneStepAtATime: Message("The value of @@GLOBAL.GTIDMODE can only change one step at a time: OFF <-> UPGRADESTEP1 <-> UPGRADESTEP2 <-> ON. Also note that this value must be stepped up or down simultaneously on all servers; see the Manual for instructions.", nil),
ErrMasterHasPurgedRequiredGtids: Message("The slave is connecting using CHANGE MASTER TO MASTERAUTOPOSITION = 1, but the master has purged binary logs containing GTIDs that the slave requires.", nil),
ErrCantSetGtidNextWhenOwningGtid: Message("@@SESSION.GTIDNEXT cannot be changed by a client that owns a GTID. The client owns %s. Ownership is released on COMMIT or ROLLBACK.", nil),
ErrUnknownExplainFormat: Message("Unknown EXPLAIN format name: '%s'", nil),
ErrCantExecuteInReadOnlyTransaction: Message("Cannot execute statement in a READ ONLY transaction.", nil),
ErrTooLongTablePartitionComment: Message("Comment for table partition '%-.64s' is too long (max = %d)", nil),
ErrSlaveConfiguration: Message("Slave is not configured or failed to initialize properly. You must at least set --server-id to enable either a master or a slave. Additional error messages can be found in the MySQL error log.", nil),
ErrInnodbFtLimit: Message("InnoDB presently supports one FULLTEXT index creation at a time", nil),
ErrInnodbNoFtTempTable: Message("Cannot create FULLTEXT index on temporary InnoDB table", nil),
ErrInnodbFtWrongDocidColumn: Message("Column '%-.192s' is of wrong type for an InnoDB FULLTEXT index", nil),
ErrInnodbFtWrongDocidIndex: Message("Index '%-.192s' is of wrong type for an InnoDB FULLTEXT index", nil),
ErrInnodbOnlineLogTooBig: Message("Creating index '%-.192s' required more than 'innodbOnlineAlterLogMaxSize' bytes of modification log. Please try again.", nil),
ErrUnknownAlterAlgorithm: Message("Unknown ALGORITHM '%s'", nil),
ErrUnknownAlterLock: Message("Unknown LOCK type '%s'", nil),
ErrMtsChangeMasterCantRunWithGaps: Message("CHANGE MASTER cannot be executed when the slave was stopped with an error or killed in MTS mode. Consider using RESET SLAVE or START SLAVE UNTIL.", nil),
ErrMtsRecoveryFailure: Message("Cannot recover after SLAVE errored out in parallel execution mode. Additional error messages can be found in the MySQL error log.", nil),
ErrMtsResetWorkers: Message("Cannot clean up worker info tables. Additional error messages can be found in the MySQL error log.", nil),
ErrColCountDoesntMatchCorruptedV2: Message("Column count of %s.%s is wrong. Expected %d, found %d. The table is probably corrupted", nil),
ErrSlaveSilentRetryTransaction: Message("Slave must silently retry current transaction", nil),
ErrDiscardFkChecksRunning: Message("There is a foreign key check running on table '%-.192s'. Cannot discard the table.", nil),
ErrTableSchemaMismatch: Message("Schema mismatch (%s)", nil),
ErrTableInSystemTablespace: Message("Table '%-.192s' in system tablespace", nil),
ErrIoRead: Message("IO Read : (%d, %s) %s", nil),
ErrIoWrite: Message("IO Write : (%d, %s) %s", nil),
ErrTablespaceMissing: Message("Tablespace is missing for table '%-.192s'", nil),
ErrTablespaceExists: Message("Tablespace for table '%-.192s' exists. Please DISCARD the tablespace before IMPORT.", nil),
ErrTablespaceDiscarded: Message("Tablespace has been discarded for table '%-.192s'", nil),
ErrInternal: Message("Internal : %s", nil),
ErrInnodbImport: Message("ALTER TABLE '%-.192s' IMPORT TABLESPACE failed with error %d : '%s'", nil),
ErrInnodbIndexCorrupt: Message("Index corrupt: %s", nil),
ErrInvalidYearColumnLength: Message("Supports only YEAR or YEAR(4) column", nil),
ErrNotValidPassword: Message("Your password does not satisfy the current policy requirements (%s)", nil),
ErrMustChangePassword: Message("You must SET PASSWORD before executing this statement", nil),
ErrFkNoIndexChild: Message("Failed to add the foreign key constraint. Missing index for constraint '%s' in the foreign table '%s'", nil),
ErrForeignKeyNoIndexInParent: Message("Failed to add the foreign key constraint. Missing index for constraint '%s' in the referenced table '%s'", nil),
ErrFkFailAddSystem: Message("Failed to add the foreign key constraint '%s' to system tables", nil),
ErrForeignKeyCannotOpenParent: Message("Failed to open the referenced table '%s'", nil),
ErrFkIncorrectOption: Message("Failed to add the foreign key constraint on table '%s'. Incorrect options in FOREIGN KEY constraint '%s'", nil),
ErrFkDupName: Message("Duplicate foreign key constraint name '%s'", nil),
ErrPasswordFormat: Message("The password hash doesn't have the expected format. Check if the correct password algorithm is being used with the PASSWORD() function.", nil),
ErrFkColumnCannotDrop: Message("Cannot drop column '%-.192s': needed in a foreign key constraint '%-.192s'", nil),
ErrFkColumnCannotDropChild: Message("Cannot drop column '%-.192s': needed in a foreign key constraint '%-.192s' of table '%-.192s'", nil),
ErrForeignKeyColumnNotNull: Message("Column '%-.192s' cannot be NOT NULL: needed in a foreign key constraint '%-.192s' SET NULL", nil),
ErrDupIndex: Message("Duplicate index '%-.64s' defined on the table '%-.64s.%-.64s'. This is deprecated and will be disallowed in a future release.", nil),
ErrForeignKeyColumnCannotChange: Message("Cannot change column '%-.192s': used in a foreign key constraint '%-.192s'", nil),
ErrForeignKeyColumnCannotChangeChild: Message("Cannot change column '%-.192s': used in a foreign key constraint '%-.192s' of table '%-.192s'", nil),
ErrFkCannotDeleteParent: Message("Cannot delete rows from table which is parent in a foreign key constraint '%-.192s' of table '%-.192s'", nil),
ErrMalformedPacket: Message("Malformed communication packet.", nil),
ErrReadOnlyMode: Message("Running in read-only mode", nil),
ErrGtidNextTypeUndefinedGroup: Message("When @@SESSION.GTIDNEXT is set to a GTID, you must explicitly set it again after a COMMIT or ROLLBACK. If you see this error message in the slave SQL thread, it means that a table in the current transaction is transactional on the master and non-transactional on the slave. In a client connection, it means that you executed SET @@SESSION.GTIDNEXT before a transaction and forgot to set @@SESSION.GTIDNEXT to a different identifier or to 'AUTOMATIC' after COMMIT or ROLLBACK. Current @@SESSION.GTIDNEXT is '%s'.", nil),
ErrVariableNotSettableInSp: Message("The system variable %.200s cannot be set in stored procedures.", nil),
ErrCantSetGtidPurgedWhenGtidModeIsOff: Message("@@GLOBAL.GTIDPURGED can only be set when @@GLOBAL.GTIDMODE = ON.", nil),
ErrCantSetGtidPurgedWhenGtidExecutedIsNotEmpty: Message("@@GLOBAL.GTIDPURGED can only be set when @@GLOBAL.GTIDEXECUTED is empty.", nil),
ErrCantSetGtidPurgedWhenOwnedGtidsIsNotEmpty: Message("@@GLOBAL.GTIDPURGED can only be set when there are no ongoing transactions (not even in other clients).", nil),
ErrGtidPurgedWasChanged: Message("@@GLOBAL.GTIDPURGED was changed from '%s' to '%s'.", nil),
ErrGtidExecutedWasChanged: Message("@@GLOBAL.GTIDEXECUTED was changed from '%s' to '%s'.", nil),
ErrBinlogStmtModeAndNoReplTables: Message("Cannot execute statement: impossible to write to binary log since BINLOGFORMAT = STATEMENT, and both replicated and non replicated tables are written to.", nil),
ErrAlterOperationNotSupported: Message("%s is not supported for this operation. Try %s.", nil),
ErrAlterOperationNotSupportedReason: Message("%s is not supported. Reason: %s. Try %s.", nil),
ErrAlterOperationNotSupportedReasonCopy: Message("COPY algorithm requires a lock", nil),
ErrAlterOperationNotSupportedReasonPartition: Message("Partition specific operations do not yet support LOCK/ALGORITHM", nil),
ErrAlterOperationNotSupportedReasonFkRename: Message("Columns participating in a foreign key are renamed", nil),
ErrAlterOperationNotSupportedReasonColumnType: Message("Cannot change column type INPLACE", nil),
ErrAlterOperationNotSupportedReasonFkCheck: Message("Adding foreign keys needs foreignKeyChecks=OFF", nil),
ErrAlterOperationNotSupportedReasonIgnore: Message("Creating unique indexes with IGNORE requires COPY algorithm to remove duplicate rows", nil),
ErrAlterOperationNotSupportedReasonNopk: Message("Dropping a primary key is not allowed without also adding a new primary key", nil),
ErrAlterOperationNotSupportedReasonAutoinc: Message("Adding an auto-increment column requires a lock", nil),
ErrAlterOperationNotSupportedReasonHiddenFts: Message("Cannot replace hidden FTSDOCID with a user-visible one", nil),
ErrAlterOperationNotSupportedReasonChangeFts: Message("Cannot drop or rename FTSDOCID", nil),
ErrAlterOperationNotSupportedReasonFts: Message("Fulltext index creation requires a lock", nil),
ErrSQLSlaveSkipCounterNotSettableInGtidMode: Message("sqlSlaveSkipCounter can not be set when the server is running with @@GLOBAL.GTIDMODE = ON. Instead, for each transaction that you want to skip, generate an empty transaction with the same GTID as the transaction", nil),
ErrDupUnknownInIndex: Message("Duplicate entry for key '%-.192s'", nil),
ErrIdentCausesTooLongPath: Message("Long database name and identifier for object resulted in path length exceeding %d characters. Path: '%s'.", nil),
ErrAlterOperationNotSupportedReasonNotNull: Message("cannot silently convert NULL values, as required in this SQLMODE", nil),
ErrMustChangePasswordLogin: Message("Your password has expired. To log in you must change it using a client that supports expired passwords.", nil),
ErrRowInWrongPartition: Message("Found a row in wrong partition %s", nil),
ErrGeneratedColumnFunctionIsNotAllowed: Message("Expression of generated column '%s' contains a disallowed function.", nil),
ErrUnsupportedAlterInplaceOnVirtualColumn: Message("INPLACE ADD or DROP of virtual columns cannot be combined with other ALTER TABLE actions.", nil),
ErrWrongFKOptionForGeneratedColumn: Message("Cannot define foreign key with %s clause on a generated column.", nil),
ErrBadGeneratedColumn: Message("The value specified for generated column '%s' in table '%s' is not allowed.", nil),
ErrUnsupportedOnGeneratedColumn: Message("'%s' is not supported for generated columns.", nil),
ErrGeneratedColumnNonPrior: Message("Generated column can refer only to generated columns defined prior to it.", nil),
ErrDependentByGeneratedColumn: Message("Column '%s' has a generated column dependency.", nil),
ErrGeneratedColumnRefAutoInc: Message("Generated column '%s' cannot refer to auto-increment column.", nil),
ErrInvalidFieldSize: Message("Invalid size for column '%s'.", nil),
ErrPasswordExpireAnonymousUser: Message("The password for anonymous user cannot be expired.", nil),
ErrIncorrectType: Message("Incorrect type for argument %s in function %s.", nil),
ErrInvalidJSONData: Message("Invalid JSON data provided to function %s: %s", nil),
ErrInvalidJSONText: Message("Invalid JSON text: %-.192s", nil),
ErrInvalidJSONTextInParam: Message("Invalid JSON text in argument %d to function %s: \"%s\" at position %d.", nil),
ErrInvalidJSONPath: Message("Invalid JSON path expression %s.", nil),
ErrInvalidJSONCharset: Message("Cannot create a JSON value from a string with CHARACTER SET '%s'.", nil),
ErrInvalidTypeForJSON: Message("Invalid data type for JSON data in argument %d to function %s; a JSON string or JSON type is required.", nil),
ErrInvalidJSONPathWildcard: Message("In this situation, path expressions may not contain the * and ** tokens or an array range.", nil),
ErrInvalidJSONContainsPathType: Message("The second argument can only be either 'one' or 'all'.", nil),
ErrJSONUsedAsKey: Message("JSON column '%-.192s' cannot be used in key specification.", nil),
ErrJSONDocumentTooDeep: Message("The JSON document exceeds the maximum depth.", nil),
ErrJSONDocumentNULLKey: Message("JSON documents may not contain NULL member names.", nil),
ErrBadUser: Message("User %s does not exist.", nil),
ErrUserAlreadyExists: Message("User %s already exists.", nil),
ErrInvalidJSONPathArrayCell: Message("A path expression is not a path to a cell in an array.", nil),
ErrInvalidEncryptionOption: Message("Invalid encryption option.", nil),
ErrWindowNoSuchWindow: Message("Window name '%s' is not defined.", nil),
ErrWindowCircularityInWindowGraph: Message("There is a circularity in the window dependency graph.", nil),
ErrWindowNoChildPartitioning: Message("A window which depends on another cannot define partitioning.", nil),
ErrWindowNoInherentFrame: Message("Window '%s' has a frame definition, so cannot be referenced by another window.", nil),
ErrWindowNoRedefineOrderBy: Message("Window '%s' cannot inherit '%s' since both contain an ORDER BY clause.", nil),
ErrWindowFrameStartIllegal: Message("Window '%s': frame start cannot be UNBOUNDED FOLLOWING.", nil),
ErrWindowFrameEndIllegal: Message("Window '%s': frame end cannot be UNBOUNDED PRECEDING.", nil),
ErrWindowFrameIllegal: Message("Window '%s': frame start or end is negative, NULL or of non-integral type", nil),
ErrWindowRangeFrameOrderType: Message("Window '%s' with RANGE N PRECEDING/FOLLOWING frame requires exactly one ORDER BY expression, of numeric or temporal type", nil),
ErrWindowRangeFrameTemporalType: Message("Window '%s' with RANGE frame has ORDER BY expression of datetime type. Only INTERVAL bound value allowed.", nil),
ErrWindowRangeFrameNumericType: Message("Window '%s' with RANGE frame has ORDER BY expression of numeric type, INTERVAL bound value not allowed.", nil),
ErrWindowRangeBoundNotConstant: Message("Window '%s' has a non-constant frame bound.", nil),
ErrWindowDuplicateName: Message("Window '%s' is defined twice.", nil),
ErrWindowIllegalOrderBy: Message("Window '%s': ORDER BY or PARTITION BY uses legacy position indication which is not supported, use expression.", nil),
ErrWindowInvalidWindowFuncUse: Message("You cannot use the window function '%s' in this context.'", nil),
ErrWindowInvalidWindowFuncAliasUse: Message("You cannot use the alias '%s' of an expression containing a window function in this context.'", nil),
ErrWindowNestedWindowFuncUseInWindowSpec: Message("You cannot nest a window function in the specification of window '%s'.", nil),
ErrWindowRowsIntervalUse: Message("Window '%s': INTERVAL can only be used with RANGE frames.", nil),
ErrWindowNoGroupOrderUnused: Message("ASC or DESC with GROUP BY isn't allowed with window functions; put ASC or DESC in ORDER BY", nil),
ErrWindowExplainJson: Message("To get information about window functions use EXPLAIN FORMAT=JSON", nil),
ErrWindowFunctionIgnoresFrame: Message("Window function '%s' ignores the frame clause of window '%s' and aggregates over the whole partition", nil),
ErrRoleNotGranted: Message("%s is not granted to %s", nil),
ErrMaxExecTimeExceeded: Message("Query execution was interrupted, maximum statement execution time exceeded", nil),
ErrLockAcquireFailAndNoWaitSet: Message("Statement aborted because lock(s) could not be acquired immediately and NOWAIT is set.", nil),
ErrDataTruncatedFunctionalIndex: Message("Data truncated for functional index '%s' at row %d", nil),
ErrDataOutOfRangeFunctionalIndex: Message("Value is out of range for functional index '%s' at row %d", nil),
ErrFunctionalIndexOnJsonOrGeometryFunction: Message("Cannot create a functional index on a function that returns a JSON or GEOMETRY value", nil),
ErrFunctionalIndexRefAutoIncrement: Message("Functional index '%s' cannot refer to an auto-increment column", nil),
ErrCannotDropColumnFunctionalIndex: Message("Cannot drop column '%s' because it is used by a functional index. In order to drop the column, you must remove the functional index", nil),
ErrFunctionalIndexPrimaryKey: Message("The primary key cannot be a functional index", nil),
ErrFunctionalIndexOnLob: Message("Cannot create a functional index on an expression that returns a BLOB or TEXT. Please consider using CAST", nil),
ErrFunctionalIndexFunctionIsNotAllowed: Message("Expression of functional index '%s' contains a disallowed function", nil),
ErrFulltextFunctionalIndex: Message("Fulltext functional index is not supported", nil),
ErrSpatialFunctionalIndex: Message("Spatial functional index is not supported", nil),
ErrWrongKeyColumnFunctionalIndex: Message("The used storage engine cannot index the expression '%s'", nil),
ErrFunctionalIndexOnField: Message("Functional index on a column is not supported. Consider using a regular index instead", nil),
ErrFKIncompatibleColumns: Message("Referencing column '%s' and referenced column '%s' in foreign key constraint '%s' are incompatible.", nil),
ErrFunctionalIndexRowValueIsNotAllowed: Message("Expression of functional index '%s' cannot refer to a row value", nil),
ErrDependentByFunctionalIndex: Message("Column '%s' has a functional index dependency and cannot be dropped or renamed", nil),
ErrInvalidJSONType: Message("Invalid JSON type in argument %d to function %s; an %s is required.", nil),
ErrInvalidJsonValueForFuncIndex: Message("Invalid JSON value for CAST for functional index '%s'", nil),
ErrJsonValueOutOfRangeForFuncIndex: Message("Out of range JSON value for CAST for functional index '%s'", nil),
ErrFunctionalIndexDataIsTooLong: Message("Data too long for functional index '%s'", nil),
ErrFunctionalIndexNotApplicable: Message("Cannot use functional index '%s' due to type or collation conversion", nil),
// MariaDB errors.
ErrOnlyOneDefaultPartionAllowed: Message("Only one DEFAULT partition allowed", nil),
ErrWrongPartitionTypeExpectedSystemTime: Message("Wrong partitioning type, expected type: `SYSTEM_TIME`", nil),
ErrSystemVersioningWrongPartitions: Message("Wrong Partitions: must have at least one HISTORY and exactly one last CURRENT", nil),
ErrSequenceRunOut: Message("Sequence '%-.64s.%-.64s' has run out", nil),
ErrSequenceInvalidData: Message("Sequence '%-.64s.%-.64s' values are conflicting", nil),
ErrSequenceAccessFail: Message("Sequence '%-.64s.%-.64s' access error", nil),
ErrNotSequence: Message("'%-.64s.%-.64s' is not a SEQUENCE", nil),
ErrUnknownSequence: Message("Unknown SEQUENCE: '%-.300s'", nil),
ErrWrongInsertIntoSequence: Message("Wrong INSERT into a SEQUENCE. One can only do single table INSERT into a sequence object (like with mysqldump). If you want to change the SEQUENCE, use ALTER SEQUENCE instead.", nil),
ErrSequenceInvalidTableStructure: Message("Sequence '%-.64s.%-.64s' table structure is invalid (%s)", nil),
// TiDB errors.
ErrWarnOptimizerHintInvalidInteger: Message("integer value is out of range in '%s'", nil),
ErrWarnOptimizerHintUnsupportedHint: Message("Optimizer hint %s is not supported by TiDB and is ignored", nil),
ErrWarnOptimizerHintInvalidToken: Message("Cannot use %s '%s' (tok = %d) in an optimizer hint", nil),
ErrWarnMemoryQuotaOverflow: Message("Max value of MEMORY_QUOTA is %d bytes, ignore this invalid limit", nil),
ErrWarnOptimizerHintParseError: Message("Optimizer hint syntax error at %v", nil),
ErrWarnOptimizerHintWrongPos: Message("Optimizer hint can only be followed by certain keywords like SELECT, INSERT, etc.", nil),
}
// Copyright 2015 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// See the License for the specific language governing permissions and
// limitations under the License.
package mysql
import (
"fmt"
"github.com/pingcap/errors"
)
// Portable analogs of some common call errors.
var (
ErrBadConn = errors.New("connection was bad")
ErrMalformPacket = errors.New("malform packet error")
)
// SQLError records an error information, from executing SQL.
type SQLError struct {
Code uint16
Message string
State string
}
// Error prints errors, with a formatted string.
func (e *SQLError) Error() string {
return fmt.Sprintf("ERROR %d (%s): %s", e.Code, e.State, e.Message)
}
// NewErr generates a SQL error, with an error code and default format specifier defined in MySQLErrName.
func NewErr(errCode uint16, args ...any) *SQLError {
e := &SQLError{Code: errCode}
if s, ok := MySQLState[errCode]; ok {
e.State = s
} else {
e.State = DefaultMySQLState
}
if sqlErr, ok := MySQLErrName[errCode]; ok {
errors.RedactErrorArg(args, sqlErr.RedactArgPos)
e.Message = fmt.Sprintf(sqlErr.Raw, args...)
} else {
e.Message = fmt.Sprint(args...)
}
return e
}
// NewErrf creates a SQL error, with an error code and a format specifier.
func NewErrf(errCode uint16, format string, redactArgPos []int, args ...any) *SQLError {
e := &SQLError{Code: errCode}
if s, ok := MySQLState[errCode]; ok {
e.State = s
} else {
e.State = DefaultMySQLState
}
errors.RedactErrorArg(args, redactArgPos)
e.Message = fmt.Sprintf(format, args...)
return e
}
package mysql
import (
"bytes"
"strconv"
"strings"
"unicode"
"github.com/pingcap/errors"
)
func formatENUS(number string, precision string) (string, error) {
var buffer bytes.Buffer
if unicode.IsDigit(rune(precision[0])) {
for i, v := range precision {
if unicode.IsDigit(v) {
continue
}
precision = precision[:i]
break
}
} else {
precision = "0"
}
if number[0] == '-' && number[1] == '.' {
number = strings.Replace(number, "-", "-0", 1)
} else if number[0] == '.' {
number = strings.Replace(number, ".", "0.", 1)
}
if (number[:1] == "-" && !unicode.IsDigit(rune(number[1]))) ||
(!unicode.IsDigit(rune(number[0])) && number[:1] != "-") {
buffer.Write([]byte{'0'})
position, err := strconv.ParseUint(precision, 10, 64)
if err == nil && position > 0 {
buffer.Write([]byte{'.'})
buffer.WriteString(strings.Repeat("0", int(position)))
}
return buffer.String(), nil
} else if number[:1] == "-" {
buffer.Write([]byte{'-'})
number = number[1:]
}
for i, v := range number {
if unicode.IsDigit(v) {
continue
} else if i == 1 && number[1] == '.' {
continue
} else if v == '.' && number[1] != '.' {
continue
}
number = number[:i]
break
}
comma := []byte{','}
parts := strings.Split(number, ".")
pos := 0
if len(parts[0])%3 != 0 {
pos += len(parts[0]) % 3
buffer.WriteString(parts[0][:pos])
buffer.Write(comma)
}
for ; pos < len(parts[0]); pos += 3 {
buffer.WriteString(parts[0][pos : pos+3])
buffer.Write(comma)
}
buffer.Truncate(buffer.Len() - 1)
position, err := strconv.ParseUint(precision, 10, 64)
if err == nil {
if position > 0 {
buffer.Write([]byte{'.'})
if len(parts) == 2 {
if uint64(len(parts[1])) >= position {
buffer.WriteString(parts[1][:position])
} else {
buffer.WriteString(parts[1])
buffer.WriteString(strings.Repeat("0", int(position)-len(parts[1])))
}
} else {
buffer.WriteString(strings.Repeat("0", int(position)))
}
}
}
return buffer.String(), nil
}
func formatZHCN(_ string, _ string) (string, error) {
return "", errors.New("not implemented")
}
func formatNotSupport(_ string, _ string) (string, error) {
return "", errors.New("not support for the specific locale")
}
// Copyright 2021 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// See the License for the specific language governing permissions and
// limitations under the License.
package mysql
import "slices"
// AllPrivilegeLiteral is the string literal for All Privilege.
const AllPrivilegeLiteral = "ALL PRIVILEGES"
// Priv2Str is the map for privilege to string.
var Priv2Str = map[PrivilegeType]string{
CreatePriv: "Create",
SelectPriv: "Select",
InsertPriv: "Insert",
UpdatePriv: "Update",
DeletePriv: "Delete",
ShowDBPriv: "Show Databases",
SuperPriv: "Super",
CreateUserPriv: "Create User",
CreateTablespacePriv: "Create Tablespace",
TriggerPriv: "Trigger",
DropPriv: "Drop",
ProcessPriv: "Process",
GrantPriv: "Grant Option",
ReferencesPriv: "References",
AlterPriv: "Alter",
ExecutePriv: "Execute",
IndexPriv: "Index",
CreateViewPriv: "Create View",
ShowViewPriv: "Show View",
CreateRolePriv: "Create Role",
DropRolePriv: "Drop Role",
CreateTMPTablePriv: "CREATE TEMPORARY TABLES",
LockTablesPriv: "LOCK TABLES",
CreateRoutinePriv: "CREATE ROUTINE",
AlterRoutinePriv: "ALTER ROUTINE",
EventPriv: "EVENT",
ShutdownPriv: "SHUTDOWN",
ReloadPriv: "RELOAD",
FilePriv: "FILE",
ConfigPriv: "CONFIG",
UsagePriv: "USAGE",
ReplicationClientPriv: "REPLICATION CLIENT",
ReplicationSlavePriv: "REPLICATION SLAVE",
AllPriv: AllPrivilegeLiteral,
}
// Priv2SetStr is the map for privilege to string.
var Priv2SetStr = map[PrivilegeType]string{
CreatePriv: "Create",
SelectPriv: "Select",
InsertPriv: "Insert",
UpdatePriv: "Update",
DeletePriv: "Delete",
DropPriv: "Drop",
GrantPriv: "Grant",
ReferencesPriv: "References",
LockTablesPriv: "Lock Tables",
CreateTMPTablePriv: "Create Temporary Tables",
EventPriv: "Event",
CreateRoutinePriv: "Create Routine",
AlterRoutinePriv: "Alter Routine",
AlterPriv: "Alter",
ExecutePriv: "Execute",
IndexPriv: "Index",
CreateViewPriv: "Create View",
ShowViewPriv: "Show View",
CreateRolePriv: "Create Role",
DropRolePriv: "Drop Role",
ShutdownPriv: "Shutdown Role",
TriggerPriv: "Trigger",
}
// SetStr2Priv is the map for privilege set string to privilege type.
var SetStr2Priv = map[string]PrivilegeType{
"Create": CreatePriv,
"Select": SelectPriv,
"Insert": InsertPriv,
"Update": UpdatePriv,
"Delete": DeletePriv,
"Drop": DropPriv,
"Grant": GrantPriv,
"References": ReferencesPriv,
"Lock Tables": LockTablesPriv,
"Create Temporary Tables": CreateTMPTablePriv,
"Event": EventPriv,
"Create Routine": CreateRoutinePriv,
"Alter Routine": AlterRoutinePriv,
"Alter": AlterPriv,
"Execute": ExecutePriv,
"Index": IndexPriv,
"Create View": CreateViewPriv,
"Show View": ShowViewPriv,
"Trigger": TriggerPriv,
}
// Priv2UserCol is the privilege to mysql.user table column name.
var Priv2UserCol = map[PrivilegeType]string{
CreatePriv: "Create_priv",
SelectPriv: "Select_priv",
InsertPriv: "Insert_priv",
UpdatePriv: "Update_priv",
DeletePriv: "Delete_priv",
ShowDBPriv: "Show_db_priv",
SuperPriv: "Super_priv",
CreateUserPriv: "Create_user_priv",
CreateTablespacePriv: "Create_tablespace_priv",
TriggerPriv: "Trigger_priv",
DropPriv: "Drop_priv",
ProcessPriv: "Process_priv",
GrantPriv: "Grant_priv",
ReferencesPriv: "References_priv",
AlterPriv: "Alter_priv",
ExecutePriv: "Execute_priv",
IndexPriv: "Index_priv",
CreateViewPriv: "Create_view_priv",
ShowViewPriv: "Show_view_priv",
CreateRolePriv: "Create_role_priv",
DropRolePriv: "Drop_role_priv",
CreateTMPTablePriv: "Create_tmp_table_priv",
LockTablesPriv: "Lock_tables_priv",
CreateRoutinePriv: "Create_routine_priv",
AlterRoutinePriv: "Alter_routine_priv",
EventPriv: "Event_priv",
ShutdownPriv: "Shutdown_priv",
ReloadPriv: "Reload_priv",
FilePriv: "File_priv",
ConfigPriv: "Config_priv",
ReplicationClientPriv: "Repl_client_priv",
ReplicationSlavePriv: "Repl_slave_priv",
}
// Col2PrivType is the privilege tables column name to privilege type.
var Col2PrivType = map[string]PrivilegeType{
"Create_priv": CreatePriv,
"Select_priv": SelectPriv,
"Insert_priv": InsertPriv,
"Update_priv": UpdatePriv,
"Delete_priv": DeletePriv,
"Show_db_priv": ShowDBPriv,
"Super_priv": SuperPriv,
"Create_user_priv": CreateUserPriv,
"Create_tablespace_priv": CreateTablespacePriv,
"Trigger_priv": TriggerPriv,
"Drop_priv": DropPriv,
"Process_priv": ProcessPriv,
"Grant_priv": GrantPriv,
"References_priv": ReferencesPriv,
"Alter_priv": AlterPriv,
"Execute_priv": ExecutePriv,
"Index_priv": IndexPriv,
"Create_view_priv": CreateViewPriv,
"Show_view_priv": ShowViewPriv,
"Create_role_priv": CreateRolePriv,
"Drop_role_priv": DropRolePriv,
"Create_tmp_table_priv": CreateTMPTablePriv,
"Lock_tables_priv": LockTablesPriv,
"Create_routine_priv": CreateRoutinePriv,
"Alter_routine_priv": AlterRoutinePriv,
"Event_priv": EventPriv,
"Shutdown_priv": ShutdownPriv,
"Reload_priv": ReloadPriv,
"File_priv": FilePriv,
"Config_priv": ConfigPriv,
"Repl_client_priv": ReplicationClientPriv,
"Repl_slave_priv": ReplicationSlavePriv,
}
// PrivilegeType privilege
type PrivilegeType uint64
// NewPrivFromColumn constructs priv from a column name. False means invalid priv column name.
func NewPrivFromColumn(col string) (PrivilegeType, bool) {
p, o := Col2PrivType[col]
return p, o
}
// NewPrivFromSetEnum constructs priv from a set enum. False means invalid priv enum.
func NewPrivFromSetEnum(e string) (PrivilegeType, bool) {
p, o := SetStr2Priv[e]
return p, o
}
// String returns the corresponding identifier in SQLs.
func (p PrivilegeType) String() string {
if s, ok := Priv2Str[p]; ok {
return s
}
return ""
}
// ColumnString returns the corresponding name of columns in mysql.user/mysql.db.
func (p PrivilegeType) ColumnString() string {
if s, ok := Priv2UserCol[p]; ok {
return s
}
return ""
}
// SetString returns the corresponding set enum string in Table_priv/Column_priv of mysql.tables_priv/mysql.columns_priv.
func (p PrivilegeType) SetString() string {
if s, ok := Priv2SetStr[p]; ok {
return s
}
return ""
}
const (
// UsagePriv is a synonym for “no privileges”
UsagePriv PrivilegeType = 1 << iota
// CreatePriv is the privilege to create schema/table.
CreatePriv
// SelectPriv is the privilege to read from table.
SelectPriv
// InsertPriv is the privilege to insert data into table.
InsertPriv
// UpdatePriv is the privilege to update data in table.
UpdatePriv
// DeletePriv is the privilege to delete data from table.
DeletePriv
// ShowDBPriv is the privilege to run show databases statement.
ShowDBPriv
// SuperPriv enables many operations and server behaviors.
SuperPriv
// CreateUserPriv is the privilege to create user.
CreateUserPriv
// TriggerPriv is not checked yet.
TriggerPriv
// DropPriv is the privilege to drop schema/table.
DropPriv
// ProcessPriv pertains to display of information about the threads executing within the server.
ProcessPriv
// GrantPriv is the privilege to grant privilege to user.
GrantPriv
// ReferencesPriv is not checked yet.
ReferencesPriv
// AlterPriv is the privilege to run alter statement.
AlterPriv
// ExecutePriv is the privilege to run execute statement.
ExecutePriv
// IndexPriv is the privilege to create/drop index.
IndexPriv
// CreateViewPriv is the privilege to create view.
CreateViewPriv
// ShowViewPriv is the privilege to show create view.
ShowViewPriv
// CreateRolePriv the privilege to create a role.
CreateRolePriv
// DropRolePriv is the privilege to drop a role.
DropRolePriv
// CreateTMPTablePriv is the privilege to create a local temporary table.
CreateTMPTablePriv
// LockTablesPriv is the privilege to lock tables.
LockTablesPriv
// CreateRoutinePriv is the privilege to create a stored routine.
CreateRoutinePriv
// AlterRoutinePriv is the privilege to alter a stored routine.
AlterRoutinePriv
// EventPriv is the privilege to event.
EventPriv
// ShutdownPriv the privilege to shutdown a server.
ShutdownPriv
// ReloadPriv is the privilege to enable the use of the FLUSH statement.
ReloadPriv
// FilePriv is the privilege to enable the use of LOAD DATA and SELECT ... INTO OUTFILE.
FilePriv
// ConfigPriv is the privilege to enable the use SET CONFIG statements.
ConfigPriv
// CreateTablespacePriv is the privilege to create tablespace.
CreateTablespacePriv
// ReplicationClientPriv is used in MySQL replication
ReplicationClientPriv
// ReplicationSlavePriv is used in MySQL replication
ReplicationSlavePriv
// AllPriv is the privilege for all actions.
AllPriv
/*
* Please add the new priv before AllPriv to keep the values consistent across versions.
*/
// ExtendedPriv is used to successful parse privileges not included above.
// these are dynamic privileges in MySQL 8.0 and other extended privileges like LOAD FROM S3 in Aurora.
ExtendedPriv
)
// AllPrivMask is the mask for PrivilegeType with all bits set to 1.
// If it's passed to RequestVerification, it means any privilege would be OK.
const AllPrivMask = AllPriv - 1
// Privileges is the list of all privileges.
type Privileges []PrivilegeType
// Has checks whether PrivilegeType has the privilege.
func (privs Privileges) Has(p PrivilegeType) bool {
return slices.Contains(privs, p)
}
// AllGlobalPrivs is all the privileges in global scope.
var AllGlobalPrivs = Privileges{SelectPriv, InsertPriv, UpdatePriv, DeletePriv, CreatePriv, DropPriv, ProcessPriv, ReferencesPriv, AlterPriv, ShowDBPriv, SuperPriv, ExecutePriv, IndexPriv, CreateUserPriv, CreateTablespacePriv, TriggerPriv, CreateViewPriv, ShowViewPriv, CreateRolePriv, DropRolePriv, CreateTMPTablePriv, LockTablesPriv, CreateRoutinePriv, AlterRoutinePriv, EventPriv, ShutdownPriv, ReloadPriv, FilePriv, ConfigPriv, ReplicationClientPriv, ReplicationSlavePriv}
// AllDBPrivs is all the privileges in database scope.
var AllDBPrivs = Privileges{SelectPriv, InsertPriv, UpdatePriv, DeletePriv, CreatePriv, DropPriv, ReferencesPriv, LockTablesPriv, CreateTMPTablePriv, EventPriv, CreateRoutinePriv, AlterRoutinePriv, AlterPriv, ExecutePriv, IndexPriv, CreateViewPriv, ShowViewPriv, TriggerPriv}
// AllTablePrivs is all the privileges in table scope.
var AllTablePrivs = Privileges{SelectPriv, InsertPriv, UpdatePriv, DeletePriv, CreatePriv, DropPriv, IndexPriv, ReferencesPriv, AlterPriv, CreateViewPriv, ShowViewPriv, TriggerPriv}
// AllColumnPrivs is all the privileges in column scope.
var AllColumnPrivs = Privileges{SelectPriv, InsertPriv, UpdatePriv, ReferencesPriv}
// StaticGlobalOnlyPrivs is all the privileges only in global scope and different from dynamic privileges.
var StaticGlobalOnlyPrivs = Privileges{ProcessPriv, ShowDBPriv, SuperPriv, CreateUserPriv, CreateTablespacePriv, ShutdownPriv, ReloadPriv, FilePriv, ReplicationClientPriv, ReplicationSlavePriv, ConfigPriv}
// Copyright 2015 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// See the License for the specific language governing permissions and
// limitations under the License.
package mysql
// MySQL type information.
const (
TypeUnspecified byte = 0
TypeTiny byte = 1 // TINYINT
TypeShort byte = 2 // SMALLINT
TypeLong byte = 3 // INT
TypeFloat byte = 4
TypeDouble byte = 5
TypeNull byte = 6
TypeTimestamp byte = 7
TypeLonglong byte = 8 // BIGINT
TypeInt24 byte = 9 // MEDIUMINT
TypeDate byte = 10
/* TypeDuration original name was TypeTime, renamed to TypeDuration to resolve the conflict with Go type Time.*/
TypeDuration byte = 11
TypeDatetime byte = 12
TypeYear byte = 13
TypeNewDate byte = 14
TypeVarchar byte = 15
TypeBit byte = 16
TypeJSON byte = 0xf5
TypeNewDecimal byte = 0xf6
TypeEnum byte = 0xf7
TypeSet byte = 0xf8
TypeTinyBlob byte = 0xf9
TypeMediumBlob byte = 0xfa
TypeLongBlob byte = 0xfb
TypeBlob byte = 0xfc
TypeVarString byte = 0xfd
TypeString byte = 0xfe /* TypeString is char type */
TypeGeometry byte = 0xff
TypeTiDBVectorFloat32 byte = 0xe1
)
// Flag information.
const (
NotNullFlag uint = 1 << 0 /* Field can't be NULL */
PriKeyFlag uint = 1 << 1 /* Field is part of a primary key */
UniqueKeyFlag uint = 1 << 2 /* Field is part of a unique key */
MultipleKeyFlag uint = 1 << 3 /* Field is part of a key */
BlobFlag uint = 1 << 4 /* Field is a blob */
UnsignedFlag uint = 1 << 5 /* Field is unsigned */
ZerofillFlag uint = 1 << 6 /* Field is zerofill */
BinaryFlag uint = 1 << 7 /* Field is binary */
EnumFlag uint = 1 << 8 /* Field is an enum */
AutoIncrementFlag uint = 1 << 9 /* Field is an auto increment field */
TimestampFlag uint = 1 << 10 /* Field is a timestamp */
SetFlag uint = 1 << 11 /* Field is a set */
NoDefaultValueFlag uint = 1 << 12 /* Field doesn't have a default value */
OnUpdateNowFlag uint = 1 << 13 /* Field is set to NOW on UPDATE */
PartKeyFlag uint = 1 << 14 /* Intern: Part of some keys */
NumFlag uint = 1 << 15 /* Field is a num (for clients) */
GroupFlag uint = 1 << 15 /* Internal: Group field */
UniqueFlag uint = 1 << 16 /* Internal: Used by sql_yacc */
BinCmpFlag uint = 1 << 17 /* Internal: Used by sql_yacc */
ParseToJSONFlag uint = 1 << 18 /* Internal: Used when we want to parse string to JSON in CAST */
IsBooleanFlag uint = 1 << 19 /* Internal: Used for telling boolean literal from integer */
PreventNullInsertFlag uint = 1 << 20 /* Prevent this Field from inserting NULL values */
EnumSetAsIntFlag uint = 1 << 21 /* Internal: Used for inferring enum eval type. */
DropColumnIndexFlag uint = 1 << 22 /* Internal: Used for indicate the column is being dropped with index */
GeneratedColumnFlag uint = 1 << 23 /* Internal: TiFlash will check this flag and add a placeholder for this column */
UnderScoreCharsetFlag uint = 1 << 24 /* Internal: Indicate whether charset is specified by underscore like _latin1'abc' */
)
// TypeInt24 bounds.
const (
MaxUint24 = 1<<24 - 1
MaxInt24 = 1<<23 - 1
MinInt24 = -1 << 23
)
// HasDropColumnWithIndexFlag checks if DropColumnIndexFlag is set.
func HasDropColumnWithIndexFlag(flag uint) bool {
return (flag & DropColumnIndexFlag) > 0
}
// HasNotNullFlag checks if NotNullFlag is set.
func HasNotNullFlag(flag uint) bool {
return (flag & NotNullFlag) > 0
}
// HasNoDefaultValueFlag checks if NoDefaultValueFlag is set.
func HasNoDefaultValueFlag(flag uint) bool {
return (flag & NoDefaultValueFlag) > 0
}
// HasAutoIncrementFlag checks if AutoIncrementFlag is set.
func HasAutoIncrementFlag(flag uint) bool {
return (flag & AutoIncrementFlag) > 0
}
// HasUnsignedFlag checks if UnsignedFlag is set.
func HasUnsignedFlag(flag uint) bool {
return (flag & UnsignedFlag) > 0
}
// HasZerofillFlag checks if ZerofillFlag is set.
func HasZerofillFlag(flag uint) bool {
return (flag & ZerofillFlag) > 0
}
// HasBinaryFlag checks if BinaryFlag is set.
func HasBinaryFlag(flag uint) bool {
return (flag & BinaryFlag) > 0
}
// HasPriKeyFlag checks if PriKeyFlag is set.
func HasPriKeyFlag(flag uint) bool {
return (flag & PriKeyFlag) > 0
}
// HasUniKeyFlag checks if UniqueKeyFlag is set.
func HasUniKeyFlag(flag uint) bool {
return (flag & UniqueKeyFlag) > 0
}
// HasMultipleKeyFlag checks if MultipleKeyFlag is set.
func HasMultipleKeyFlag(flag uint) bool {
return (flag & MultipleKeyFlag) > 0
}
// HasTimestampFlag checks if HasTimestampFlag is set.
func HasTimestampFlag(flag uint) bool {
return (flag & TimestampFlag) > 0
}
// HasOnUpdateNowFlag checks if OnUpdateNowFlag is set.
func HasOnUpdateNowFlag(flag uint) bool {
return (flag & OnUpdateNowFlag) > 0
}
// HasParseToJSONFlag checks if ParseToJSONFlag is set.
func HasParseToJSONFlag(flag uint) bool {
return (flag & ParseToJSONFlag) > 0
}
// HasIsBooleanFlag checks if IsBooleanFlag is set.
func HasIsBooleanFlag(flag uint) bool {
return (flag & IsBooleanFlag) > 0
}
// HasPreventNullInsertFlag checks if PreventNullInsertFlag is set.
func HasPreventNullInsertFlag(flag uint) bool {
return (flag & PreventNullInsertFlag) > 0
}
// HasEnumSetAsIntFlag checks if EnumSetAsIntFlag is set.
func HasEnumSetAsIntFlag(flag uint) bool {
return (flag & EnumSetAsIntFlag) > 0
}
// HasFlag checks if a flag is set.
func HasFlag(flag uint, flagItem uint) bool {
return (flag & flagItem) > 0
}
// Copyright 2015 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// See the License for the specific language governing permissions and
// limitations under the License.
package mysql
type lengthAndDecimal struct {
length int64
decimal int
}
// defaultLengthAndDecimal provides default flen and decimal for fields
// from CREATE TABLE when they are unspecified.
var defaultLengthAndDecimal = map[byte]lengthAndDecimal{
TypeBit: {1, 0},
TypeTiny: {4, 0},
TypeShort: {6, 0},
TypeInt24: {9, 0},
TypeLong: {11, 0},
TypeLonglong: {20, 0},
TypeDouble: {22, -1},
TypeFloat: {12, -1},
TypeNewDecimal: {10, 0},
TypeDuration: {10, 0},
TypeDate: {10, 0},
TypeTimestamp: {19, 0},
TypeDatetime: {19, 0},
TypeYear: {4, 0},
TypeString: {1, 0},
TypeVarchar: {5, 0},
TypeVarString: {5, 0},
TypeTinyBlob: {255, 0},
TypeBlob: {65535, 0},
TypeMediumBlob: {16777215, 0},
TypeLongBlob: {4294967295, 0},
TypeJSON: {4294967295, 0},
TypeNull: {0, 0},
TypeSet: {-1, 0},
TypeEnum: {-1, 0},
}
// IsIntegerType indicate whether tp is an integer type.
func IsIntegerType(tp byte) bool {
switch tp {
case TypeTiny, TypeShort, TypeInt24, TypeLong, TypeLonglong:
return true
}
return false
}
// GetDefaultFieldLengthAndDecimal returns the default display length (flen) and decimal length for column.
// Call this when no flen assigned in ddl.
// or column value is calculated from an expression.
// For example: "select count(*) from t;", the column type is int64 and flen in ResultField will be 21.
// See https://dev.mysql.com/doc/refman/5.7/en/storage-requirements.html
func GetDefaultFieldLengthAndDecimal(tp byte) (flen, decimal int) {
val, ok := defaultLengthAndDecimal[tp]
if ok {
return int(val.length), val.decimal
}
return -1, -1
}
// defaultLengthAndDecimal provides default flen and decimal for fields
// from CAST when they are unspecified.
var defaultLengthAndDecimalForCast = map[byte]lengthAndDecimal{
TypeString: {0, -1}, // flen & decimal differs.
TypeDate: {10, 0},
TypeDatetime: {19, 0},
TypeNewDecimal: {10, 0},
TypeDuration: {10, 0},
TypeLonglong: {22, 0},
TypeDouble: {22, -1},
TypeFloat: {12, -1},
TypeJSON: {4194304, 0}, // flen differs.
}
// GetDefaultFieldLengthAndDecimalForCast returns the default display length (flen) and decimal length for casted column
// when flen or decimal is not specified.
func GetDefaultFieldLengthAndDecimalForCast(tp byte) (flen, decimal int) {
val, ok := defaultLengthAndDecimalForCast[tp]
if ok {
return int(val.length), val.decimal
}
return -1, -1
}
// IsAuthPluginClearText is used to indicated that the plugin need clear-text password.
func IsAuthPluginClearText(authPlugin string) bool {
return authPlugin == AuthNativePassword ||
authPlugin == AuthTiDBSM3Password ||
authPlugin == AuthCachingSha2Password
}
// Copyright 2015 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// See the License for the specific language governing permissions and
// limitations under the License.
package opcode
import (
"io"
"github.com/pingcap/tidb/pkg/parser/format"
)
// Op is opcode type.
type Op int
// List operators.
const (
LogicAnd Op = iota + 1
LeftShift
RightShift
LogicOr
GE
LE
EQ
NE
LT
GT
Plus
Minus
And
Or
Mod
Xor
Div
Mul
Not
Not2
BitNeg
IntDiv
LogicXor
NullEQ
In
Like
Case
Regexp
IsNull
IsTruth
IsFalsity
)
var ops = [...]struct {
name string
literal string
isKeyword bool
}{
LogicAnd: {
name: "and",
literal: "AND",
isKeyword: true,
},
LogicOr: {
name: "or",
literal: "OR",
isKeyword: true,
},
LogicXor: {
name: "xor",
literal: "XOR",
isKeyword: true,
},
LeftShift: {
name: "leftshift",
literal: "<<",
isKeyword: false,
},
RightShift: {
name: "rightshift",
literal: ">>",
isKeyword: false,
},
GE: {
name: "ge",
literal: ">=",
isKeyword: false,
},
LE: {
name: "le",
literal: "<=",
isKeyword: false,
},
EQ: {
name: "eq",
literal: "=",
isKeyword: false,
},
NE: {
name: "ne",
literal: "!=", // perhaps should use `<>` here
isKeyword: false,
},
LT: {
name: "lt",
literal: "<",
isKeyword: false,
},
GT: {
name: "gt",
literal: ">",
isKeyword: false,
},
Plus: {
name: "plus",
literal: "+",
isKeyword: false,
},
Minus: {
name: "minus",
literal: "-",
isKeyword: false,
},
And: {
name: "bitand",
literal: "&",
isKeyword: false,
},
Or: {
name: "bitor",
literal: "|",
isKeyword: false,
},
Mod: {
name: "mod",
literal: "%",
isKeyword: false,
},
Xor: {
name: "bitxor",
literal: "^",
isKeyword: false,
},
Div: {
name: "div",
literal: "/",
isKeyword: false,
},
Mul: {
name: "mul",
literal: "*",
isKeyword: false,
},
Not: {
name: "not",
literal: "not ",
isKeyword: true,
},
Not2: {
name: "!",
literal: "!",
isKeyword: false,
},
BitNeg: {
name: "bitneg",
literal: "~",
isKeyword: false,
},
IntDiv: {
name: "intdiv",
literal: "DIV",
isKeyword: true,
},
NullEQ: {
name: "nulleq",
literal: "<=>",
isKeyword: false,
},
In: {
name: "in",
literal: "IN",
isKeyword: true,
},
Like: {
name: "like",
literal: "LIKE",
isKeyword: true,
},
Case: {
name: "case",
literal: "CASE",
isKeyword: true,
},
Regexp: {
name: "regexp",
literal: "REGEXP",
isKeyword: true,
},
IsNull: {
name: "isnull",
literal: "IS NULL",
isKeyword: true,
},
IsTruth: {
name: "istrue",
literal: "IS TRUE",
isKeyword: true,
},
IsFalsity: {
name: "isfalse",
literal: "IS FALSE",
isKeyword: true,
},
}
// String implements Stringer interface.
func (o Op) String() string {
return ops[o].name
}
// Format the ExprNode into a Writer.
func (o Op) Format(w io.Writer) {
io.WriteString(w, ops[o].literal)
}
// IsKeyword returns whether the operator is a keyword.
func (o Op) IsKeyword() bool {
return ops[o].isKeyword
}
// Restore the Op into a Writer
func (o Op) Restore(ctx *format.RestoreCtx) error {
info := &ops[o]
if info.isKeyword {
ctx.WriteKeyWord(info.literal)
} else {
ctx.WritePlain(info.literal)
}
return nil
}
// Code generated by goyacc DO NOT EDIT.
// Copyright 2013 The ql Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSES/QL-LICENSE file.
// Copyright 2015 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// See the License for the specific language governing permissions and
// limitations under the License.
// Initial yacc source generated by ebnf2y[1]
// at 2013-10-04 23:10:47.861401015 +0200 CEST
//
// $ ebnf2y -o ql.y -oe ql.ebnf -start StatementList -pkg ql -p _
//
// [1]: http://github.com/cznic/ebnf2y
package parser
import __yyfmt__ "fmt"
import (
"strings"
"time"
"github.com/pingcap/tidb/pkg/parser/ast"
"github.com/pingcap/tidb/pkg/parser/auth"
"github.com/pingcap/tidb/pkg/parser/charset"
"github.com/pingcap/tidb/pkg/parser/duration"
"github.com/pingcap/tidb/pkg/parser/mysql"
"github.com/pingcap/tidb/pkg/parser/opcode"
"github.com/pingcap/tidb/pkg/parser/types"
)
type yySymType struct {
yys int
offset int // offset
item interface{}
ident string
expr ast.ExprNode
statement ast.StmtNode
}
type yyXError struct {
state, xsym int
}
const (
yyDefault = 58232
yyEOFCode = 57344
account = 57595
action = 57596
add = 57363
addColumnarReplicaOnDemand = 57597
addDate = 57985
admin = 58115
advise = 57598
after = 57599
against = 57600
ago = 57601
algorithm = 57602
all = 57364
alter = 57365
always = 57603
analyze = 57366
and = 57367
andand = 57358
andnot = 58192
any = 57604
apply = 57605
approxCountDistinct = 57986
approxPercentile = 57987
array = 57368
as = 57369
asc = 57370
ascii = 57606
asof = 57347
assignmentEq = 58193
attribute = 57607
attributes = 57608
autoIdCache = 57609
autoIncrement = 57610
autoRandom = 57611
autoRandomBase = 57612
avg = 57613
avgRowLength = 57614
backend = 57615
background = 57988
backup = 57616
backups = 57617
batch = 58116
bdr = 57618
begin = 57619
bernoulli = 57620
between = 57371
bigIntType = 57372
binaryType = 57373
binding = 57621
bindingCache = 57623
bindings = 57622
binlog = 57624
bitAnd = 57989
bitLit = 58191
bitOr = 57990
bitType = 57625
bitXor = 57991
blobType = 57374
block = 57626
boolType = 57627
booleanType = 57628
both = 57375
bound = 57992
br = 57993
briefType = 57994
btree = 57629
buckets = 58117
builtinApproxCountDistinct = 58118
builtinApproxPercentile = 58119
builtinBitAnd = 58120
builtinBitOr = 58121
builtinBitXor = 58122
builtinCast = 58123
builtinCount = 58124
builtinCurDate = 58125
builtinCurTime = 58126
builtinDateAdd = 58127
builtinDateSub = 58128
builtinExtract = 58129
builtinGroupConcat = 58130
builtinMax = 58131
builtinMin = 58132
builtinNow = 58133
builtinPosition = 58134
builtinStddevPop = 58136
builtinStddevSamp = 58137
builtinSubstring = 58138
builtinSum = 58139
builtinSysDate = 58140
builtinTranslate = 58141
builtinTrim = 58142
builtinUser = 58143
builtinVarPop = 58144
builtinVarSamp = 58145
builtins = 58135
burstable = 57995
by = 57376
byteType = 57630
cache = 57631
calibrate = 57632
call = 57377
cancel = 58146
capture = 57633
cardinality = 58147
cascade = 57378
cascaded = 57634
caseKwd = 57379
cast = 57996
causal = 57635
chain = 57636
change = 57380
charType = 57381
character = 57382
charsetKwd = 57637
check = 57383
checkpoint = 57638
checksum = 57639
checksumConcurrency = 57640
cipher = 57641
cleanup = 57642
client = 57643
clientErrorsSummary = 57644
close = 57645
cluster = 57646
clustered = 57647
cmSketch = 58148
coalesce = 57648
collate = 57384
collation = 57649
column = 57385
columnFormat = 57652
columnStatsUsage = 58149
columnar = 57650
columns = 57651
comment = 57653
commit = 57654
committed = 57655
compact = 57656
compress = 57997
compressed = 57657
compression = 57658
compressionLevel = 57659
compressionType = 57660
concurrency = 57661
config = 57662
connection = 57663
consistency = 57664
consistent = 57665
constraint = 57386
constraints = 57998
context = 57666
continueKwd = 57387
convert = 57388
cooldown = 57999
copyKwd = 58000
correlation = 58150
cpu = 57667
create = 57389
createTableSelect = 58216
cross = 57390
csvBackslashEscape = 57668
csvDelimiter = 57669
csvHeader = 57670
csvNotNull = 57671
csvNull = 57672
csvSeparator = 57673
csvTrimLastSeparators = 57674
cumeDist = 57391
curDate = 58001
curTime = 58002
current = 57675
currentDate = 57392
currentRole = 57393
currentTime = 57394
currentTs = 57395
currentUser = 57396
cursor = 57397
cycle = 57676
data = 57677
database = 57398
databases = 57399
dateAdd = 58003
dateSub = 58004
dateType = 57678
datetimeType = 57679
day = 57680
dayHour = 57400
dayMicrosecond = 57401
dayMinute = 57402
daySecond = 57403
ddl = 58151
deallocate = 57681
decLit = 58188
decimalType = 57404
declare = 57682
defaultKwd = 57405
defined = 58005
definer = 57683
delayKeyWrite = 57684
delayed = 57406
deleteKwd = 57407
denseRank = 57408
dependency = 58152
depth = 58153
desc = 57409
describe = 57410
digest = 57685
directory = 57686
disable = 57687
disabled = 57688
discard = 57689
disk = 57690
distinct = 57411
distinctRow = 57412
distribute = 58154
distribution = 58155
distributions = 58156
div = 57413
do = 57691
dotType = 58006
doubleAtIdentifier = 57355
doubleType = 57414
drop = 57415
dry = 58157
dryRun = 58007
dual = 57416
dump = 58008
duplicate = 57692
dynamic = 57693
elseIfKwd = 57418
elseKwd = 57417
empty = 58206
enable = 57694
enabled = 57695
enclosed = 57419
encryption = 57696
encryptionKeyFile = 57697
encryptionMethod = 57698
end = 57699
endTime = 58009
enforced = 57700
engine = 57701
engine_attribute = 57703
engines = 57702
enum = 57704
eq = 58194
yyErrCode = 57345
errorKwd = 57705
escape = 57707
escaped = 57420
event = 57708
events = 57709
evolve = 57710
exact = 58010
except = 57421
exchange = 57711
exclusive = 57712
execElapsed = 58011
execute = 57713
exists = 57422
exit = 57423
expansion = 57714
expire = 57715
explain = 57424
explore = 57716
exprPushdownBlacklist = 58012
extended = 57717
extract = 58013
failedLoginAttempts = 57718
falseKwd = 57425
faultsSym = 57719
fetch = 57426
fields = 57720
file = 57721
first = 57722
firstValue = 57427
fixed = 57723
flashback = 58014
float4Type = 57429
float8Type = 57430
floatLit = 58187
floatType = 57428
flush = 57724
follower = 58015
followerConstraints = 58016
followers = 58017
following = 57725
forKwd = 57431
force = 57432
foreign = 57433
format = 57726
found = 57727
from = 57434
full = 57728
fullBackupStorage = 58018
fulltext = 57435
function = 57729
gcTTL = 58019
ge = 58195
general = 57730
generated = 57436
getFormat = 58020
global = 57731
grant = 57437
grants = 57732
group = 57438
groupConcat = 58021
groups = 57439
handler = 57733
hash = 57734
having = 57440
help = 57735
hexLit = 58190
high = 58022
highPriority = 57441
higherThanComma = 58231
higherThanParenthese = 58225
hintComment = 57357
histogram = 57736
histogramsInFlight = 58158
history = 57737
hnsw = 58043
hosts = 57738
hour = 57739
hourMicrosecond = 57442
hourMinute = 57443
hourSecond = 57444
hypo = 57740
identSQLErrors = 57706
identified = 57741
identifier = 57346
ifKwd = 57445
ignore = 57446
ignoreStats = 57742
ilike = 57447
importKwd = 57743
imports = 57744
in = 57448
increment = 57745
incremental = 57746
index = 57449
indexes = 57747
infile = 57450
inner = 57451
inout = 57452
inplace = 58023
insert = 57453
insertMethod = 57748
insertValues = 58214
instance = 57749
instant = 58024
int1Type = 57455
int2Type = 57456
int3Type = 57457
int4Type = 57458
int8Type = 57459
intLit = 58189
intType = 57454
integerType = 57460
internal = 58025
intersect = 57461
interval = 57462
into = 57463
invalid = 57356
inverted = 58026
invisible = 57750
invoker = 57751
io = 57752
ioReadBandwidth = 58027
ioWriteBandwidth = 58028
ipc = 57753
is = 57464
isolation = 57754
issuer = 57755
iterate = 57465
job = 58159
jobs = 58160
join = 57466
jsonArrayagg = 58029
jsonObjectAgg = 58030
jsonSumCrc32 = 58031
jsonType = 57756
jss = 58197
juss = 58198
key = 57467
keyBlockSize = 57757
keys = 57468
kill = 57469
labels = 57758
lag = 57470
language = 57759
last = 57760
lastBackup = 57762
lastValue = 57471
lastval = 57761
le = 58196
lead = 57472
leader = 58032
leaderConstraints = 58033
leading = 57473
learner = 58034
learnerConstraints = 58035
learners = 58036
leave = 57474
left = 57475
less = 57763
level = 57764
like = 57476
limit = 57477
linear = 57478
lines = 57479
list = 57765
lite = 58161
load = 57480
loadStats = 57766
local = 57767
localTime = 57481
localTs = 57482
location = 57768
lock = 57483
locked = 57769
log = 58037
logs = 57770
long = 57484
longblobType = 57485
longtextType = 57486
low = 58038
lowPriority = 57487
lowerThanCharsetKwd = 58217
lowerThanComma = 58230
lowerThanCreateTableSelect = 58215
lowerThanEq = 58227
lowerThanFunction = 58222
lowerThanInsertValues = 58213
lowerThanKey = 58218
lowerThanLocal = 58219
lowerThanNot = 58229
lowerThanOn = 58226
lowerThanParenthese = 58224
lowerThanRemove = 58220
lowerThanSelectOpt = 58207
lowerThanSelectStmt = 58212
lowerThanSetKeyword = 58211
lowerThanStringLitToken = 58210
lowerThanValueKeyword = 58208
lowerThanWith = 58209
lowerThenOrder = 58221
lsh = 58199
master = 57771
match = 57488
max = 58039
maxConnectionsPerHour = 57772
maxQueriesPerHour = 57775
maxRows = 57776
maxUpdatesPerHour = 57777
maxUserConnections = 57778
maxValue = 57489
max_idxnum = 57773
max_minutes = 57774
mb = 57779
medium = 58040
mediumIntType = 57491
mediumblobType = 57490
mediumtextType = 57492
member = 57780
memberof = 57350
memory = 57781
merge = 57782
metadata = 58041
microsecond = 57783
middleIntType = 57493
min = 58042
minRows = 57786
minValue = 57785
minute = 57784
minuteMicrosecond = 57494
minuteSecond = 57495
mod = 57496
mode = 57787
moderated = 58104
modify = 57788
month = 57789
names = 57790
national = 57791
natural = 57497
ncharType = 57792
neg = 58228
neq = 58200
neqSynonym = 58201
never = 57793
next = 57794
next_row_id = 58044
nextval = 57795
no = 57796
noWriteToBinLog = 57499
nocache = 57797
nocycle = 57798
nodeID = 58162
nodeState = 58163
nodegroup = 57799
nomaxvalue = 57800
nominvalue = 57801
nonclustered = 57802
none = 57803
not = 57498
not2 = 58205
now = 58045
nowait = 57804
nthValue = 57500
ntile = 57501
null = 57502
nulleq = 58202
nulls = 57805
numericType = 57503
nvarcharType = 57806
odbcDateType = 57360
odbcTimeType = 57361
odbcTimestampType = 57362
of = 57504
off = 57807
offset = 57808
oltpReadOnly = 57809
oltpReadWrite = 57810
oltpWriteOnly = 57811
on = 57505
onDuplicate = 57814
online = 57812
only = 57813
open = 57815
optRuleBlacklist = 58046
optimistic = 58164
optimize = 57506
option = 57507
optional = 57816
optionally = 57508
optionallyEnclosedBy = 57351
or = 57509
order = 57510
out = 57511
outer = 57512
outfile = 57513
over = 57514
packKeys = 57817
pageSym = 57818
paramMarker = 58203
parser = 57819
partial = 57820
partition = 57515
partitioning = 57821
partitions = 57822
password = 57823
passwordLockTime = 57824
pause = 57825
per_db = 57827
per_table = 57828
percent = 57826
percentRank = 57516
pessimistic = 58165
pipes = 57359
pipesAsOr = 57829
placement = 58047
plan = 58049
planCache = 58048
plugins = 57830
point = 57831
policy = 57832
position = 58050
preSplitRegions = 57836
preceding = 57833
precisionType = 57517
predicate = 58051
prepare = 57834
preserve = 57835
primary = 57518
primaryRegion = 58052
priority = 58053
privileges = 57837
procedure = 57519
process = 57838
processedKeys = 58054
processlist = 57839
profile = 57840
profiles = 57841
proxy = 57842
purge = 57843
quarter = 57844
queries = 57845
query = 57846
queryLimit = 58055
quick = 57847
rangeKwd = 57520
rank = 57521
rateLimit = 57848
read = 57522
readOnly = 58056
realType = 57523
rebuild = 57849
recent = 58057
recommend = 57850
recover = 57851
recursive = 57524
redundant = 57852
references = 57525
refresh = 57853
regexpKwd = 57526
region = 58166
regions = 58167
release = 57527
reload = 57854
remove = 57855
rename = 57528
reorganize = 57856
repair = 57857
repeat = 57529
repeatable = 57858
replace = 57530
replay = 58058
replayer = 58059
replica = 57859
replicas = 57860
replication = 57861
require = 57531
required = 57862
reset = 58168
resource = 57863
respect = 57864
restart = 57865
restore = 57866
restoredTS = 58060
restores = 57867
restrict = 57532
resume = 57868
reuse = 57869
reverse = 57870
revoke = 57533
right = 57534
rlike = 57535
role = 57871
rollback = 57872
rollup = 57873
routine = 57874
row = 57536
rowCount = 57875
rowFormat = 57876
rowNumber = 57538
rows = 57537
rsh = 58204
rtree = 57877
ru = 58061
ruRate = 58063
rule = 57878
run = 58169
running = 58062
s3 = 58064
sampleRate = 58170
samples = 58171
san = 57879
savepoint = 57880
schedule = 58065
second = 57881
secondMicrosecond = 57539
secondary = 57882
secondaryEngine = 57883
secondaryEngineAttribute = 57884
secondaryLoad = 57885
secondaryUnload = 57886
security = 57887
selectKwd = 57540
sendCredentialsToTiKV = 57888
separator = 57889
sequence = 57890
serial = 57891
serializable = 57892
session = 57893
sessionStates = 58172
set = 57541
setval = 57894
shardRowIDBits = 57895
share = 57896
shared = 57897
show = 57542
shutdown = 57898
signed = 57899
similar = 58066
simple = 57900
singleAtIdentifier = 57354
skip = 57901
skipSchemaFiles = 57902
slave = 57903
slow = 57904
smallIntType = 57543
snapshot = 57905
some = 57906
source = 57907
spatial = 57544
speed = 58067
split = 58173
sql = 57545
sqlBigResult = 57549
sqlBufferResult = 57908
sqlCache = 57909
sqlCalcFoundRows = 57550
sqlNoCache = 57910
sqlSmallResult = 57551
sqlTsiDay = 57911
sqlTsiHour = 57912
sqlTsiMinute = 57913
sqlTsiMonth = 57914
sqlTsiQuarter = 57915
sqlTsiSecond = 57916
sqlTsiWeek = 57917
sqlTsiYear = 57918
sqlexception = 57546
sqlstate = 57547
sqlwarning = 57548
ssl = 57552
staleness = 58068
start = 57919
startTS = 58070
startTime = 58069
starting = 57553
statistics = 58174
stats = 58175
statsAutoRecalc = 57920
statsBuckets = 58176
statsColChoice = 57921
statsColList = 57922
statsExtended = 58177
statsHealthy = 58178
statsHistograms = 58179
statsLocked = 58180
statsMeta = 58181
statsOptions = 57923
statsPersistent = 57924
statsSamplePages = 57925
statsSampleRate = 57926
statsTopN = 58182
status = 57927
std = 58074
stddev = 58071
stddevPop = 58072
stddevSamp = 58073
stop = 58075
storage = 57928
stored = 57554
straightJoin = 57555
strict = 58076
strictFormat = 57929
stringLit = 57353
strong = 58077
subDate = 58078
subject = 57930
subpartition = 57931
subpartitions = 57932
substring = 58079
sum = 58080
super = 57933
survivalPreferences = 58081
swaps = 57934
switchGroup = 58082
switchesSym = 57935
system = 57936
systemTime = 57937
tableChecksum = 57940
tableKwd = 57556
tableRefPriority = 58223
tableSample = 57557
tables = 57938
tablespace = 57939
target = 58083
taskTypes = 58084
temporary = 57941
temptable = 57942
terminated = 57558
textType = 57943
than = 57944
then = 57559
tiFlash = 58184
tidb = 58183
tidbCurrentTSO = 57560
tidbJson = 58085
tikvImporter = 57945
timeDuration = 58086
timeType = 57946
timeout = 57947
timestampAdd = 58087
timestampDiff = 58088
timestampType = 57948
tinyIntType = 57562
tinyblobType = 57561
tinytextType = 57563
tls = 58089
to = 57564
toTSO = 57349
toTimestamp = 57348
tokenIssuer = 57949
tokudbDefault = 58090
tokudbFast = 58091
tokudbLzma = 58092
tokudbQuickLZ = 58093
tokudbSmall = 58094
tokudbSnappy = 58095
tokudbUncompressed = 58096
tokudbZlib = 58097
tokudbZstd = 58098
top = 58099
topn = 58185
tp = 57961
tpcc = 57950
tpch10 = 57951
trace = 57952
traditional = 57953
traffic = 58100
trailing = 57565
transaction = 57954
trigger = 57566
triggers = 57955
trim = 58101
trueCardCost = 58102
trueKwd = 57567
truncate = 57956
tsoType = 57957
ttl = 57958
ttlEnable = 57959
ttlJobInterval = 57960
unbounded = 57962
uncommitted = 57963
undefined = 57964
underscoreCS = 57352
unicodeSym = 57965
union = 57568
unique = 57569
unknown = 57966
unlimited = 58103
unlock = 57570
unset = 57967
unsigned = 57571
until = 57572
untilTS = 58105
update = 57573
usage = 57574
use = 57575
user = 57968
using = 57576
utcDate = 57577
utcTime = 57578
utcTimestamp = 57579
utilizationLimit = 58106
validation = 57969
value = 57970
values = 57580
varPop = 58108
varSamp = 58109
varbinaryType = 57581
varcharType = 57582
varcharacter = 57583
variables = 57971
variance = 58107
varying = 57584
vectorType = 57972
verboseType = 58110
view = 57973
virtual = 57585
visible = 57974
voter = 58113
voterConstraints = 58111
voters = 58112
wait = 57975
waitTiflashReady = 57976
warnings = 57977
watch = 58114
week = 57978
weightString = 57979
when = 57586
where = 57587
while = 57588
width = 58186
window = 57589
with = 57590
withSysTable = 57981
without = 57980
workload = 57982
write = 57591
x509 = 57983
xor = 57592
yearMonth = 57593
yearType = 57984
zerofill = 57594
yyMaxDepth = 200
yyTabOfs = -3022
)
var (
yyXLAT = map[int]int{
59: 0, // ';' (2666x)
57344: 1, // $end (2653x)
57855: 2, // remove (2103x)
58173: 3, // split (2103x)
57782: 4, // merge (2102x)
57856: 5, // reorganize (2101x)
57653: 6, // comment (2091x)
57884: 7, // secondaryEngineAttribute (2027x)
57928: 8, // storage (1989x)
57610: 9, // autoIncrement (1978x)
44: 10, // ',' (1976x)
57722: 11, // first (1875x)
57599: 12, // after (1869x)
57891: 13, // serial (1867x)
57611: 14, // autoRandom (1864x)
57652: 15, // columnFormat (1864x)
57823: 16, // password (1832x)
57637: 17, // charsetKwd (1812x)
57639: 18, // checksum (1802x)
58047: 19, // placement (1799x)
57757: 20, // keyBlockSize (1796x)
57836: 21, // preSplitRegions (1796x)
57939: 22, // tablespace (1779x)
57696: 23, // encryption (1777x)
57701: 24, // engine (1775x)
57677: 25, // data (1772x)
57703: 26, // engine_attribute (1770x)
57748: 27, // insertMethod (1770x)
57776: 28, // maxRows (1770x)
57786: 29, // minRows (1770x)
57799: 30, // nodegroup (1770x)
57663: 31, // connection (1762x)
57612: 32, // autoRandomBase (1759x)
58176: 33, // statsBuckets (1757x)
58182: 34, // statsTopN (1757x)
57958: 35, // ttl (1757x)
57609: 36, // autoIdCache (1756x)
57614: 37, // avgRowLength (1756x)
57658: 38, // compression (1756x)
57684: 39, // delayKeyWrite (1756x)
57817: 40, // packKeys (1756x)
57876: 41, // rowFormat (1756x)
57883: 42, // secondaryEngine (1756x)
57895: 43, // shardRowIDBits (1756x)
57920: 44, // statsAutoRecalc (1756x)
57921: 45, // statsColChoice (1756x)
57922: 46, // statsColList (1756x)
57924: 47, // statsPersistent (1756x)
57925: 48, // statsSamplePages (1756x)
57926: 49, // statsSampleRate (1756x)
57940: 50, // tableChecksum (1756x)
57959: 51, // ttlEnable (1756x)
57960: 52, // ttlJobInterval (1756x)
41: 53, // ')' (1736x)
57863: 54, // resource (1735x)
57607: 55, // attribute (1706x)
57346: 56, // identifier (1705x)
57595: 57, // account (1704x)
57718: 58, // failedLoginAttempts (1704x)
57824: 59, // passwordLockTime (1704x)
57767: 60, // local (1701x)
57698: 61, // encryptionMethod (1694x)
57731: 62, // global (1694x)
57899: 63, // signed (1691x)
57868: 64, // resume (1690x)
57905: 65, // snapshot (1689x)
57615: 66, // backend (1687x)
57638: 67, // checkpoint (1687x)
57640: 68, // checksumConcurrency (1687x)
57659: 69, // compressionLevel (1687x)
57660: 70, // compressionType (1687x)
57661: 71, // concurrency (1687x)
57668: 72, // csvBackslashEscape (1687x)
57669: 73, // csvDelimiter (1687x)
57670: 74, // csvHeader (1687x)
57671: 75, // csvNotNull (1687x)
57672: 76, // csvNull (1687x)
57673: 77, // csvSeparator (1687x)
57674: 78, // csvTrimLastSeparators (1687x)
57697: 79, // encryptionKeyFile (1687x)
58018: 80, // fullBackupStorage (1687x)
58019: 81, // gcTTL (1687x)
57742: 82, // ignoreStats (1687x)
57762: 83, // lastBackup (1687x)
57766: 84, // loadStats (1687x)
57814: 85, // onDuplicate (1687x)
57812: 86, // online (1687x)
57848: 87, // rateLimit (1687x)
58060: 88, // restoredTS (1687x)
57888: 89, // sendCredentialsToTiKV (1687x)
57902: 90, // skipSchemaFiles (1687x)
58070: 91, // startTS (1687x)
57929: 92, // strictFormat (1687x)
57945: 93, // tikvImporter (1687x)
58105: 94, // untilTS (1687x)
57976: 95, // waitTiflashReady (1687x)
57981: 96, // withSysTable (1687x)
57961: 97, // tp (1685x)
57647: 98, // clustered (1684x)
57750: 99, // invisible (1684x)
57802: 100, // nonclustered (1684x)
57974: 101, // visible (1684x)
57597: 102, // addColumnarReplicaOnDemand (1683x)
57602: 103, // algorithm (1681x)
57619: 104, // begin (1681x)
57654: 105, // commit (1681x)
57796: 106, // no (1681x)
57872: 107, // rollback (1681x)
57919: 108, // start (1679x)
57956: 109, // truncate (1678x)
57596: 110, // action (1677x)
57631: 111, // cache (1676x)
57797: 112, // nocache (1675x)
57815: 113, // open (1675x)
57645: 114, // close (1674x)
57676: 115, // cycle (1674x)
57785: 116, // minValue (1674x)
57699: 117, // end (1673x)
57745: 118, // increment (1673x)
57798: 119, // nocycle (1673x)
57800: 120, // nomaxvalue (1673x)
57801: 121, // nominvalue (1673x)
57865: 122, // restart (1671x)
58167: 123, // regions (1670x)
57988: 124, // background (1668x)
57995: 125, // burstable (1668x)
58053: 126, // priority (1668x)
58055: 127, // queryLimit (1668x)
58063: 128, // ruRate (1668x)
57984: 129, // yearType (1668x)
58049: 130, // plan (1666x)
57931: 131, // subpartition (1666x)
57822: 132, // partitions (1665x)
57918: 133, // sqlTsiYear (1665x)
58086: 134, // timeDuration (1665x)
57998: 135, // constraints (1663x)
58016: 136, // followerConstraints (1663x)
58017: 137, // followers (1663x)
58033: 138, // leaderConstraints (1663x)
58035: 139, // learnerConstraints (1663x)
58036: 140, // learners (1663x)
58052: 141, // primaryRegion (1663x)
58065: 142, // schedule (1663x)
58081: 143, // survivalPreferences (1663x)
58111: 144, // voterConstraints (1663x)
58112: 145, // voters (1663x)
58114: 146, // watch (1662x)
57651: 147, // columns (1661x)
58011: 148, // execElapsed (1661x)
57743: 149, // importKwd (1661x)
58054: 150, // processedKeys (1661x)
58061: 151, // ru (1661x)
57968: 152, // user (1661x)
57973: 153, // view (1661x)
57680: 154, // day (1660x)
58005: 155, // defined (1658x)
57881: 156, // second (1658x)
57739: 157, // hour (1657x)
57783: 158, // microsecond (1657x)
57784: 159, // minute (1657x)
57789: 160, // month (1657x)
57844: 161, // quarter (1657x)
57911: 162, // sqlTsiDay (1657x)
57912: 163, // sqlTsiHour (1657x)
57913: 164, // sqlTsiMinute (1657x)
57914: 165, // sqlTsiMonth (1657x)
57915: 166, // sqlTsiQuarter (1657x)
57916: 167, // sqlTsiSecond (1657x)
57917: 168, // sqlTsiWeek (1657x)
57978: 169, // week (1657x)
57606: 170, // ascii (1656x)
57630: 171, // byteType (1656x)
57927: 172, // status (1656x)
57938: 173, // tables (1656x)
57965: 174, // unicodeSym (1656x)
57720: 175, // fields (1655x)
58056: 176, // readOnly (1655x)
58067: 177, // speed (1655x)
57770: 178, // logs (1654x)
57756: 179, // jsonType (1653x)
57646: 180, // cluster (1652x)
57679: 181, // datetimeType (1652x)
57678: 182, // dateType (1652x)
57846: 183, // query (1652x)
57889: 184, // separator (1652x)
57946: 185, // timeType (1652x)
57972: 186, // vectorType (1652x)
57641: 187, // cipher (1651x)
57997: 188, // compress (1651x)
57723: 189, // fixed (1651x)
57755: 190, // issuer (1651x)
57772: 191, // maxConnectionsPerHour (1651x)
57775: 192, // maxQueriesPerHour (1651x)
57777: 193, // maxUpdatesPerHour (1651x)
57778: 194, // maxUserConnections (1651x)
57833: 195, // preceding (1651x)
57879: 196, // san (1651x)
57930: 197, // subject (1651x)
57949: 198, // tokenIssuer (1651x)
58009: 199, // endTime (1650x)
57728: 200, // full (1650x)
58069: 201, // startTime (1650x)
58084: 202, // taskTypes (1650x)
57948: 203, // timestampType (1650x)
58106: 204, // utilizationLimit (1650x)
57628: 205, // booleanType (1649x)
58160: 206, // jobs (1649x)
57943: 207, // textType (1649x)
57622: 208, // bindings (1648x)
57625: 209, // bitType (1648x)
57627: 210, // boolType (1648x)
57675: 211, // current (1648x)
57683: 212, // definer (1648x)
57704: 213, // enum (1648x)
57734: 214, // hash (1648x)
57741: 215, // identified (1648x)
58159: 216, // job (1648x)
57791: 217, // national (1648x)
57792: 218, // ncharType (1648x)
57806: 219, // nvarcharType (1648x)
57864: 220, // respect (1648x)
57871: 221, // role (1648x)
57970: 222, // value (1648x)
57616: 223, // backup (1647x)
57700: 224, // enforced (1647x)
57725: 225, // following (1647x)
57763: 226, // less (1647x)
58161: 227, // lite (1647x)
57804: 228, // nowait (1647x)
57813: 229, // only (1647x)
57880: 230, // savepoint (1647x)
57901: 231, // skip (1647x)
57944: 232, // than (1647x)
58184: 233, // tiFlash (1647x)
57962: 234, // unbounded (1647x)
57621: 235, // binding (1646x)
57740: 236, // hypo (1646x)
58044: 237, // next_row_id (1646x)
57807: 238, // off (1646x)
57808: 239, // offset (1646x)
57832: 240, // policy (1646x)
58051: 241, // predicate (1646x)
57859: 242, // replica (1646x)
58175: 243, // stats (1646x)
57941: 244, // temporary (1646x)
58103: 245, // unlimited (1646x)
57685: 246, // digest (1645x)
57768: 247, // location (1645x)
58048: 248, // planCache (1645x)
57834: 249, // prepare (1645x)
57966: 250, // unknown (1645x)
57975: 251, // wait (1645x)
57629: 252, // btree (1644x)
57999: 253, // cooldown (1644x)
58151: 254, // ddl (1644x)
57682: 255, // declare (1644x)
58007: 256, // dryRun (1644x)
57726: 257, // format (1644x)
58043: 258, // hnsw (1644x)
58026: 259, // inverted (1644x)
57754: 260, // isolation (1644x)
57760: 261, // last (1644x)
57781: 262, // memory (1644x)
57794: 263, // next (1644x)
57816: 264, // optional (1644x)
57837: 265, // privileges (1644x)
57862: 266, // required (1644x)
57877: 267, // rtree (1644x)
58170: 268, // sampleRate (1644x)
57890: 269, // sequence (1644x)
57893: 270, // session (1644x)
57904: 271, // slow (1644x)
58082: 272, // switchGroup (1644x)
58100: 273, // traffic (1644x)
57969: 274, // validation (1644x)
57971: 275, // variables (1644x)
57608: 276, // attributes (1643x)
58146: 277, // cancel (1643x)
57633: 278, // capture (1643x)
57656: 279, // compact (1643x)
57687: 280, // disable (1643x)
58156: 281, // distributions (1643x)
57691: 282, // do (1643x)
57693: 283, // dynamic (1643x)
57694: 284, // enable (1643x)
57705: 285, // errorKwd (1643x)
58010: 286, // exact (1643x)
57724: 287, // flush (1643x)
57733: 288, // handler (1643x)
57737: 289, // history (1643x)
57779: 290, // mb (1643x)
57787: 291, // mode (1643x)
57825: 292, // pause (1643x)
57830: 293, // plugins (1643x)
57839: 294, // processlist (1643x)
57851: 295, // recover (1643x)
57857: 296, // repair (1643x)
57858: 297, // repeatable (1643x)
58066: 298, // similar (1643x)
58174: 299, // statistics (1643x)
57932: 300, // subpartitions (1643x)
58183: 301, // tidb (1643x)
57980: 302, // without (1643x)
58115: 303, // admin (1642x)
58116: 304, // batch (1642x)
57618: 305, // bdr (1642x)
57624: 306, // binlog (1642x)
57626: 307, // block (1642x)
57993: 308, // br (1642x)
57994: 309, // briefType (1642x)
58117: 310, // buckets (1642x)
57632: 311, // calibrate (1642x)
58147: 312, // cardinality (1642x)
57636: 313, // chain (1642x)
57644: 314, // clientErrorsSummary (1642x)
58148: 315, // cmSketch (1642x)
57648: 316, // coalesce (1642x)
57657: 317, // compressed (1642x)
57666: 318, // context (1642x)
58000: 319, // copyKwd (1642x)
58150: 320, // correlation (1642x)
57667: 321, // cpu (1642x)
57681: 322, // deallocate (1642x)
58152: 323, // dependency (1642x)
57686: 324, // directory (1642x)
57689: 325, // discard (1642x)
57690: 326, // disk (1642x)
58154: 327, // distribute (1642x)
58155: 328, // distribution (1642x)
58006: 329, // dotType (1642x)
58157: 330, // dry (1642x)
57692: 331, // duplicate (1642x)
57711: 332, // exchange (1642x)
57713: 333, // execute (1642x)
57714: 334, // expansion (1642x)
58014: 335, // flashback (1642x)
57730: 336, // general (1642x)
57735: 337, // help (1642x)
58022: 338, // high (1642x)
57736: 339, // histogram (1642x)
57738: 340, // hosts (1642x)
57706: 341, // identSQLErrors (1642x)
57746: 342, // incremental (1642x)
57747: 343, // indexes (1642x)
58023: 344, // inplace (1642x)
57749: 345, // instance (1642x)
58024: 346, // instant (1642x)
57753: 347, // ipc (1642x)
57758: 348, // labels (1642x)
57769: 349, // locked (1642x)
58038: 350, // low (1642x)
58040: 351, // medium (1642x)
58041: 352, // metadata (1642x)
58104: 353, // moderated (1642x)
57788: 354, // modify (1642x)
57795: 355, // nextval (1642x)
57805: 356, // nulls (1642x)
57818: 357, // pageSym (1642x)
57843: 358, // purge (1642x)
57849: 359, // rebuild (1642x)
57850: 360, // recommend (1642x)
57852: 361, // redundant (1642x)
57853: 362, // refresh (1642x)
57854: 363, // reload (1642x)
57866: 364, // restore (1642x)
57874: 365, // routine (1642x)
57878: 366, // rule (1642x)
58169: 367, // run (1642x)
58064: 368, // s3 (1642x)
58171: 369, // samples (1642x)
57885: 370, // secondaryLoad (1642x)
57886: 371, // secondaryUnload (1642x)
57896: 372, // share (1642x)
57898: 373, // shutdown (1642x)
57903: 374, // slave (1642x)
57907: 375, // source (1642x)
58177: 376, // statsExtended (1642x)
57923: 377, // statsOptions (1642x)
58075: 378, // stop (1642x)
57934: 379, // swaps (1642x)
58085: 380, // tidbJson (1642x)
58090: 381, // tokudbDefault (1642x)
58091: 382, // tokudbFast (1642x)
58092: 383, // tokudbLzma (1642x)
58093: 384, // tokudbQuickLZ (1642x)
58094: 385, // tokudbSmall (1642x)
58095: 386, // tokudbSnappy (1642x)
58096: 387, // tokudbUncompressed (1642x)
58097: 388, // tokudbZlib (1642x)
58098: 389, // tokudbZstd (1642x)
58185: 390, // topn (1642x)
57952: 391, // trace (1642x)
57953: 392, // traditional (1642x)
58102: 393, // trueCardCost (1642x)
58110: 394, // verboseType (1642x)
57977: 395, // warnings (1642x)
57982: 396, // workload (1642x)
57600: 397, // against (1641x)
57601: 398, // ago (1641x)
57603: 399, // always (1641x)
57605: 400, // apply (1641x)
57617: 401, // backups (1641x)
57620: 402, // bernoulli (1641x)
57623: 403, // bindingCache (1641x)
58135: 404, // builtins (1641x)
57634: 405, // cascaded (1641x)
57635: 406, // causal (1641x)
57642: 407, // cleanup (1641x)
57643: 408, // client (1641x)
57649: 409, // collation (1641x)
57650: 410, // columnar (1641x)
58149: 411, // columnStatsUsage (1641x)
57655: 412, // committed (1641x)
57662: 413, // config (1641x)
57664: 414, // consistency (1641x)
57665: 415, // consistent (1641x)
58153: 416, // depth (1641x)
57688: 417, // disabled (1641x)
58008: 418, // dump (1641x)
57695: 419, // enabled (1641x)
57702: 420, // engines (1641x)
57709: 421, // events (1641x)
57710: 422, // evolve (1641x)
57715: 423, // expire (1641x)
58012: 424, // exprPushdownBlacklist (1641x)
57717: 425, // extended (1641x)
57719: 426, // faultsSym (1641x)
57727: 427, // found (1641x)
57729: 428, // function (1641x)
57732: 429, // grants (1641x)
58158: 430, // histogramsInFlight (1641x)
58025: 431, // internal (1641x)
57751: 432, // invoker (1641x)
57752: 433, // io (1641x)
57759: 434, // language (1641x)
57764: 435, // level (1641x)
57765: 436, // list (1641x)
58037: 437, // log (1641x)
57771: 438, // master (1641x)
57793: 439, // never (1641x)
57803: 440, // none (1641x)
57809: 441, // oltpReadOnly (1641x)
57810: 442, // oltpReadWrite (1641x)
57811: 443, // oltpWriteOnly (1641x)
58164: 444, // optimistic (1641x)
58046: 445, // optRuleBlacklist (1641x)
57819: 446, // parser (1641x)
57820: 447, // partial (1641x)
57821: 448, // partitioning (1641x)
57826: 449, // percent (1641x)
58165: 450, // pessimistic (1641x)
57831: 451, // point (1641x)
57835: 452, // preserve (1641x)
57840: 453, // profile (1641x)
57841: 454, // profiles (1641x)
57845: 455, // queries (1641x)
58057: 456, // recent (1641x)
58166: 457, // region (1641x)
58058: 458, // replay (1641x)
58059: 459, // replayer (1641x)
57867: 460, // restores (1641x)
57869: 461, // reuse (1641x)
57873: 462, // rollup (1641x)
57882: 463, // secondary (1641x)
57887: 464, // security (1641x)
57892: 465, // serializable (1641x)
58172: 466, // sessionStates (1641x)
57900: 467, // simple (1641x)
58178: 468, // statsHealthy (1641x)
58179: 469, // statsHistograms (1641x)
58180: 470, // statsLocked (1641x)
58181: 471, // statsMeta (1641x)
57935: 472, // switchesSym (1641x)
57936: 473, // system (1641x)
57937: 474, // systemTime (1641x)
58083: 475, // target (1641x)
57942: 476, // temptable (1641x)
57947: 477, // timeout (1641x)
58089: 478, // tls (1641x)
58099: 479, // top (1641x)
57950: 480, // tpcc (1641x)
57951: 481, // tpch10 (1641x)
57954: 482, // transaction (1641x)
57955: 483, // triggers (1641x)
57963: 484, // uncommitted (1641x)
57964: 485, // undefined (1641x)
57967: 486, // unset (1641x)
58186: 487, // width (1641x)
57983: 488, // x509 (1641x)
57985: 489, // addDate (1640x)
57598: 490, // advise (1640x)
57604: 491, // any (1640x)
57986: 492, // approxCountDistinct (1640x)
57987: 493, // approxPercentile (1640x)
57613: 494, // avg (1640x)
57989: 495, // bitAnd (1640x)
57990: 496, // bitOr (1640x)
57991: 497, // bitXor (1640x)
57992: 498, // bound (1640x)
57996: 499, // cast (1640x)
58001: 500, // curDate (1640x)
58002: 501, // curTime (1640x)
58003: 502, // dateAdd (1640x)
58004: 503, // dateSub (1640x)
57707: 504, // escape (1640x)
57708: 505, // event (1640x)
57712: 506, // exclusive (1640x)
57716: 507, // explore (1640x)
58013: 508, // extract (1640x)
57721: 509, // file (1640x)
58015: 510, // follower (1640x)
58020: 511, // getFormat (1640x)
58021: 512, // groupConcat (1640x)
57744: 513, // imports (1640x)
58027: 514, // ioReadBandwidth (1640x)
58028: 515, // ioWriteBandwidth (1640x)
58029: 516, // jsonArrayagg (1640x)
58030: 517, // jsonObjectAgg (1640x)
58031: 518, // jsonSumCrc32 (1640x)
57761: 519, // lastval (1640x)
58032: 520, // leader (1640x)
58034: 521, // learner (1640x)
58039: 522, // max (1640x)
57773: 523, // max_idxnum (1640x)
57774: 524, // max_minutes (1640x)
57780: 525, // member (1640x)
58042: 526, // min (1640x)
57790: 527, // names (1640x)
58162: 528, // nodeID (1640x)
58163: 529, // nodeState (1640x)
58045: 530, // now (1640x)
57827: 531, // per_db (1640x)
57828: 532, // per_table (1640x)
58050: 533, // position (1640x)
57838: 534, // process (1640x)
57842: 535, // proxy (1640x)
57847: 536, // quick (1640x)
57860: 537, // replicas (1640x)
57861: 538, // replication (1640x)
58168: 539, // reset (1640x)
57870: 540, // reverse (1640x)
57875: 541, // rowCount (1640x)
58062: 542, // running (1640x)
57894: 543, // setval (1640x)
57897: 544, // shared (1640x)
57906: 545, // some (1640x)
57908: 546, // sqlBufferResult (1640x)
57909: 547, // sqlCache (1640x)
57910: 548, // sqlNoCache (1640x)
58068: 549, // staleness (1640x)
58074: 550, // std (1640x)
58071: 551, // stddev (1640x)
58072: 552, // stddevPop (1640x)
58073: 553, // stddevSamp (1640x)
58076: 554, // strict (1640x)
58077: 555, // strong (1640x)
58078: 556, // subDate (1640x)
58079: 557, // substring (1640x)
58080: 558, // sum (1640x)
57933: 559, // super (1640x)
58087: 560, // timestampAdd (1640x)
58088: 561, // timestampDiff (1640x)
58101: 562, // trim (1640x)
57957: 563, // tsoType (1640x)
58107: 564, // variance (1640x)
58108: 565, // varPop (1640x)
58109: 566, // varSamp (1640x)
58113: 567, // voter (1640x)
57979: 568, // weightString (1640x)
40: 569, // '(' (1547x)
57505: 570, // on (1545x)
57353: 571, // stringLit (1424x)
57590: 572, // with (1413x)
57515: 573, // partition (1394x)
58205: 574, // not2 (1346x)
57405: 575, // defaultKwd (1298x)
57498: 576, // not (1279x)
57369: 577, // as (1244x)
57384: 578, // collate (1209x)
57576: 579, // using (1185x)
57568: 580, // union (1184x)
57475: 581, // left (1182x)
57534: 582, // right (1182x)
43: 583, // '+' (1157x)
45: 584, // '-' (1155x)
57496: 585, // mod (1133x)
57502: 586, // null (1105x)
57580: 587, // values (1094x)
57446: 588, // ignore (1079x)
57530: 589, // replace (1073x)
57421: 590, // except (1071x)
58194: 591, // eq (1070x)
57461: 592, // intersect (1070x)
57381: 593, // charType (1062x)
57587: 594, // where (1062x)
58189: 595, // intLit (1055x)
57426: 596, // fetch (1052x)
57541: 597, // set (1046x)
57477: 598, // limit (1043x)
57431: 599, // forKwd (1039x)
42: 600, // '*' (1037x)
57483: 601, // lock (1037x)
57463: 602, // into (1036x)
57434: 603, // from (1032x)
57510: 604, // order (1015x)
57432: 605, // force (1010x)
57367: 606, // and (1009x)
57509: 607, // or (985x)
57358: 608, // andand (984x)
57829: 609, // pipesAsOr (984x)
57592: 610, // xor (984x)
57438: 611, // group (954x)
57440: 612, // having (947x)
57555: 613, // straightJoin (939x)
57589: 614, // window (933x)
57575: 615, // use (930x)
57466: 616, // join (927x)
57409: 617, // desc (921x)
57445: 618, // ifKwd (918x)
57476: 619, // like (917x)
57497: 620, // natural (917x)
57390: 621, // cross (916x)
57451: 622, // inner (916x)
57424: 623, // explain (915x)
125: 624, // '}' (913x)
57373: 625, // binaryType (912x)
57453: 626, // insert (906x)
57537: 627, // rows (900x)
57586: 628, // when (894x)
57417: 629, // elseKwd (890x)
57520: 630, // rangeKwd (890x)
57557: 631, // tableSample (890x)
57439: 632, // groups (889x)
57400: 633, // dayHour (887x)
57401: 634, // dayMicrosecond (887x)
57402: 635, // dayMinute (887x)
57403: 636, // daySecond (887x)
57442: 637, // hourMicrosecond (887x)
57443: 638, // hourMinute (887x)
57444: 639, // hourSecond (887x)
57494: 640, // minuteMicrosecond (887x)
57495: 641, // minuteSecond (887x)
57539: 642, // secondMicrosecond (887x)
57593: 643, // yearMonth (887x)
57370: 644, // asc (885x)
57448: 645, // in (879x)
57556: 646, // tableKwd (879x)
57559: 647, // then (879x)
60: 648, // '<' (871x)
62: 649, // '>' (871x)
47: 650, // '/' (869x)
57379: 651, // caseKwd (869x)
58195: 652, // ge (869x)
57464: 653, // is (869x)
58196: 654, // le (869x)
58200: 655, // neq (869x)
58201: 656, // neqSynonym (869x)
58202: 657, // nulleq (869x)
57529: 658, // repeat (869x)
37: 659, // '%' (868x)
38: 660, // '&' (868x)
94: 661, // '^' (868x)
124: 662, // '|' (868x)
57413: 663, // div (868x)
58199: 664, // lsh (868x)
58204: 665, // rsh (868x)
57425: 666, // falseKwd (867x)
57567: 667, // trueKwd (867x)
57354: 668, // singleAtIdentifier (866x)
57371: 669, // between (865x)
57396: 670, // currentUser (857x)
57447: 671, // ilike (856x)
57526: 672, // regexpKwd (856x)
57535: 673, // rlike (856x)
58188: 674, // decLit (855x)
58187: 675, // floatLit (855x)
58190: 676, // hexLit (853x)
57350: 677, // memberof (853x)
58191: 678, // bitLit (851x)
57536: 679, // row (849x)
57462: 680, // interval (848x)
58203: 681, // paramMarker (847x)
123: 682, // '{' (845x)
57398: 683, // database (841x)
57467: 684, // key (841x)
57422: 685, // exists (840x)
57352: 686, // underscoreCS (840x)
57388: 687, // convert (838x)
58125: 688, // builtinCurDate (837x)
58133: 689, // builtinNow (837x)
57392: 690, // currentDate (837x)
57395: 691, // currentTs (837x)
57481: 692, // localTime (837x)
57482: 693, // localTs (837x)
57540: 694, // selectKwd (837x)
57355: 695, // doubleAtIdentifier (836x)
57545: 696, // sql (835x)
58124: 697, // builtinCount (834x)
33: 698, // '!' (833x)
126: 699, // '~' (833x)
58118: 700, // builtinApproxCountDistinct (833x)
58119: 701, // builtinApproxPercentile (833x)
58120: 702, // builtinBitAnd (833x)
58121: 703, // builtinBitOr (833x)
58122: 704, // builtinBitXor (833x)
58123: 705, // builtinCast (833x)
58126: 706, // builtinCurTime (833x)
58127: 707, // builtinDateAdd (833x)
58128: 708, // builtinDateSub (833x)
58129: 709, // builtinExtract (833x)
58130: 710, // builtinGroupConcat (833x)
58131: 711, // builtinMax (833x)
58132: 712, // builtinMin (833x)
58134: 713, // builtinPosition (833x)
58136: 714, // builtinStddevPop (833x)
58137: 715, // builtinStddevSamp (833x)
58138: 716, // builtinSubstring (833x)
58139: 717, // builtinSum (833x)
58140: 718, // builtinSysDate (833x)
58141: 719, // builtinTranslate (833x)
58142: 720, // builtinTrim (833x)
58143: 721, // builtinUser (833x)
58144: 722, // builtinVarPop (833x)
58145: 723, // builtinVarSamp (833x)
57391: 724, // cumeDist (833x)
57393: 725, // currentRole (833x)
57394: 726, // currentTime (833x)
57408: 727, // denseRank (833x)
57427: 728, // firstValue (833x)
57470: 729, // lag (833x)
57471: 730, // lastValue (833x)
57472: 731, // lead (833x)
57500: 732, // nthValue (833x)
57501: 733, // ntile (833x)
57516: 734, // percentRank (833x)
57521: 735, // rank (833x)
57538: 736, // rowNumber (833x)
57560: 737, // tidbCurrentTSO (833x)
57577: 738, // utcDate (833x)
57578: 739, // utcTime (833x)
57579: 740, // utcTimestamp (833x)
57518: 741, // primary (832x)
57383: 742, // check (831x)
57569: 743, // unique (824x)
57386: 744, // constraint (821x)
57525: 745, // references (819x)
57359: 746, // pipes (818x)
57436: 747, // generated (815x)
57382: 748, // character (798x)
57449: 749, // index (784x)
57488: 750, // match (770x)
57573: 751, // update (720x)
57564: 752, // to (671x)
57366: 753, // analyze (667x)
46: 754, // '.' (659x)
57364: 755, // all (650x)
57368: 756, // array (616x)
58193: 757, // assignmentEq (616x)
58197: 758, // jss (616x)
58198: 759, // juss (616x)
57489: 760, // maxValue (614x)
57376: 761, // by (600x)
57365: 762, // alter (598x)
57479: 763, // lines (598x)
57531: 764, // require (594x)
64: 765, // '@' (588x)
57414: 766, // doubleType (583x)
57415: 767, // drop (583x)
57428: 768, // floatType (583x)
57378: 769, // cascade (582x)
57404: 770, // decimalType (582x)
57522: 771, // read (582x)
57523: 772, // realType (582x)
57532: 773, // restrict (582x)
57583: 774, // varcharacter (582x)
57582: 775, // varcharType (582x)
57347: 776, // asof (581x)
57460: 777, // integerType (581x)
57454: 778, // intType (581x)
57581: 779, // varbinaryType (580x)
57372: 780, // bigIntType (579x)
57374: 781, // blobType (579x)
57389: 782, // create (579x)
57429: 783, // float4Type (579x)
57430: 784, // float8Type (579x)
57455: 785, // int1Type (579x)
57456: 786, // int2Type (579x)
57457: 787, // int3Type (579x)
57458: 788, // int4Type (579x)
57459: 789, // int8Type (579x)
57484: 790, // long (579x)
57485: 791, // longblobType (579x)
57486: 792, // longtextType (579x)
57490: 793, // mediumblobType (579x)
57491: 794, // mediumIntType (579x)
57492: 795, // mediumtextType (579x)
57493: 796, // middleIntType (579x)
57503: 797, // numericType (579x)
57543: 798, // smallIntType (579x)
57561: 799, // tinyblobType (579x)
57562: 800, // tinyIntType (579x)
57563: 801, // tinytextType (579x)
57433: 802, // foreign (577x)
57435: 803, // fulltext (577x)
57348: 804, // toTimestamp (577x)
57349: 805, // toTSO (577x)
57506: 806, // optimize (575x)
57528: 807, // rename (575x)
57591: 808, // write (575x)
57363: 809, // add (574x)
57380: 810, // change (573x)
58483: 811, // Identifier (560x)
58564: 812, // NotKeywordToken (560x)
58852: 813, // TiDBKeyword (560x)
58867: 814, // UnReservedKeyword (560x)
58818: 815, // SubSelect (266x)
58880: 816, // UserVariable (209x)
58535: 817, // Literal (206x)
58808: 818, // StringLiteral (206x)
58787: 819, // SimpleIdent (203x)
58560: 820, // NextValueForSequence (202x)
58458: 821, // FunctionCallGeneric (199x)
58459: 822, // FunctionCallKeyword (199x)
58460: 823, // FunctionCallNonKeyword (199x)
58461: 824, // FunctionNameConflict (199x)
58462: 825, // FunctionNameDateArith (199x)
58463: 826, // FunctionNameDateArithMultiForms (199x)
58464: 827, // FunctionNameDatetimePrecision (199x)
58465: 828, // FunctionNameOptionalBraces (199x)
58466: 829, // FunctionNameSequence (199x)
58786: 830, // SimpleExpr (199x)
58819: 831, // SumExpr (199x)
58821: 832, // SystemVariable (199x)
58891: 833, // Variable (199x)
58915: 834, // WindowFuncCall (199x)
58288: 835, // BitExpr (181x)
58638: 836, // PredicateExpr (151x)
58291: 837, // BoolPri (148x)
58421: 838, // Expression (148x)
58558: 839, // NUM (127x)
58412: 840, // EqOpt (116x)
58931: 841, // logAnd (111x)
58932: 842, // logOr (111x)
57407: 843, // deleteKwd (87x)
58831: 844, // TableName (83x)
58809: 845, // StringName (57x)
58741: 846, // SelectStmt (56x)
58742: 847, // SelectStmtBasic (56x)
58744: 848, // SelectStmtFromDualTable (56x)
58745: 849, // SelectStmtFromTable (56x)
58762: 850, // SetOprClause (54x)
58763: 851, // SetOprClauseList (53x)
58766: 852, // SetOprStmtWithLimitOrderBy (53x)
58767: 853, // SetOprStmtWoutLimitOrderBy (53x)
58526: 854, // LengthNum (52x)
57571: 855, // unsigned (51x)
58921: 856, // WithClause (51x)
58754: 857, // SelectStmtWithClause (50x)
58765: 858, // SetOprStmt (50x)
57594: 859, // zerofill (48x)
57514: 860, // over (45x)
58316: 861, // ColumnName (44x)
58874: 862, // UpdateStmtNoWith (42x)
58378: 863, // DeleteWithoutUsingStmt (41x)
58511: 864, // InsertIntoStmt (39x)
58514: 865, // Int64Num (39x)
58705: 866, // ReplaceIntoStmt (39x)
58873: 867, // UpdateStmt (39x)
57410: 868, // describe (36x)
57411: 869, // distinct (36x)
57412: 870, // distinctRow (36x)
57588: 871, // while (36x)
57487: 872, // lowPriority (35x)
58920: 873, // WindowingClause (35x)
57406: 874, // delayed (34x)
58377: 875, // DeleteWithUsingStmt (34x)
57441: 876, // highPriority (34x)
57465: 877, // iterate (34x)
57474: 878, // leave (34x)
58376: 879, // DeleteFromStmt (32x)
57357: 880, // hintComment (28x)
58432: 881, // FieldLen (27x)
58611: 882, // OrderBy (26x)
58748: 883, // SelectStmtLimit (26x)
58604: 884, // OptWindowingClause (24x)
58261: 885, // AnalyzeTableStmt (23x)
58329: 886, // CommitStmt (23x)
58732: 887, // RollbackStmt (23x)
58770: 888, // SetStmt (23x)
57549: 889, // sqlBigResult (23x)
57550: 890, // sqlCalcFoundRows (23x)
57551: 891, // sqlSmallResult (23x)
57558: 892, // terminated (21x)
58306: 893, // CharsetKw (20x)
58422: 894, // ExpressionList (20x)
58882: 895, // Username (20x)
57419: 896, // enclosed (19x)
58417: 897, // ExplainStmt (19x)
58418: 898, // ExplainSym (19x)
58484: 899, // IfExists (19x)
58623: 900, // PartitionNameList (19x)
58865: 901, // TruncateTableStmt (19x)
58875: 902, // UseStmt (19x)
57420: 903, // escaped (18x)
58485: 904, // IfNotExists (18x)
57351: 905, // optionallyEnclosedBy (18x)
58632: 906, // PlacementPolicyOption (18x)
58649: 907, // ProcedureBlockContent (18x)
58678: 908, // ProcedureUnlabelLoopStmt (18x)
58651: 909, // ProcedureCaseStmt (17x)
58652: 910, // ProcedureCloseCur (17x)
58658: 911, // ProcedureFetchInto (17x)
58664: 912, // ProcedureIfstmt (17x)
58665: 913, // ProcedureIterate (17x)
58666: 914, // ProcedureLabeledBlock (17x)
58680: 915, // ProcedurelabeledLoopStmt (17x)
58667: 916, // ProcedureLeave (17x)
58668: 917, // ProcedureOpenCur (17x)
58671: 918, // ProcedureProcStmt (17x)
58674: 919, // ProcedureSearchedCase (17x)
58675: 920, // ProcedureSimpleCase (17x)
58676: 921, // ProcedureStatementStmt (17x)
58679: 922, // ProcedureUnlabeledBlock (17x)
58677: 923, // ProcedureUnlabelLoopBlock (17x)
58832: 924, // TableNameList (17x)
58587: 925, // OptFieldLen (16x)
58383: 926, // DistinctKwd (15x)
58854: 927, // TimestampUnit (15x)
58905: 928, // WhereClause (15x)
58906: 929, // WhereClauseOptional (15x)
58384: 930, // DistinctOpt (14x)
58413: 931, // EqOrAssignmentEq (14x)
58420: 932, // ExprOrDefault (14x)
58371: 933, // DefaultKwdOpt (13x)
58520: 934, // JoinTable (12x)
57499: 935, // noWriteToBinLog (12x)
58582: 936, // OptBinary (12x)
57527: 937, // release (12x)
58729: 938, // RolenameComposed (12x)
58828: 939, // TableFactor (12x)
58840: 940, // TableRef (12x)
58853: 941, // TimeUnit (12x)
58260: 942, // AnalyzeOptionListOpt (11x)
58317: 943, // ColumnNameList (11x)
58453: 944, // FromOrIn (11x)
58256: 945, // AlterTableStmt (10x)
58307: 946, // CharsetName (10x)
58361: 947, // DBName (10x)
58490: 948, // ImportIntoStmt (10x)
58505: 949, // IndexPartSpecification (10x)
57480: 950, // load (10x)
58562: 951, // NoWriteToBinLogAliasOpt (10x)
58572: 952, // NumLiteral (10x)
58612: 953, // OrderByOptional (10x)
58614: 954, // PartDefOption (10x)
58785: 955, // SignedNum (10x)
58294: 956, // BuggyDefaultFalseDistinctOpt (9x)
58370: 957, // DefaultFalseDistinctOpt (9x)
58423: 958, // ExpressionListOpt (9x)
58506: 959, // IndexPartSpecificationList (9x)
58521: 960, // JoinType (9x)
58565: 961, // NotSym (9x)
58712: 962, // ResourceGroupName (9x)
58728: 963, // Rolename (9x)
58723: 964, // RoleNameString (9x)
58894: 965, // VariableName (9x)
58359: 966, // CrossOpt (8x)
58419: 967, // ExplainableStmt (8x)
58497: 968, // IndexInvisible (8x)
58508: 969, // IndexType (8x)
58522: 970, // KeyOrIndex (8x)
58749: 971, // SelectStmtLimitOpt (8x)
58760: 972, // SetExpr (8x)
58922: 973, // WithClustered (8x)
58239: 974, // AllOrPartitionNameList (7x)
58285: 975, // BindableStmt (7x)
58305: 976, // Char (7x)
58340: 977, // ConstraintKeywordOpt (7x)
58366: 978, // DatabaseSym (7x)
58438: 979, // FieldsOrColumns (7x)
58450: 980, // ForceOpt (7x)
58500: 981, // IndexName (7x)
58503: 982, // IndexOption (7x)
58504: 983, // IndexOptionList (7x)
57469: 984, // kill (7x)
58624: 985, // PartitionNameListOpt (7x)
58642: 986, // Priority (7x)
58672: 987, // ProcedureProcStmt1s (7x)
58733: 988, // RowFormat (7x)
58736: 989, // RowValue (7x)
57542: 990, // show (7x)
58772: 991, // ShowDatabaseNameOpt (7x)
58835: 992, // TableOptimizerHints (7x)
58837: 993, // TableOption (7x)
57584: 994, // varying (7x)
58283: 995, // BeginTransactionStmt (6x)
58275: 996, // BRIEBooleanOptionName (6x)
58276: 997, // BRIEIntegerOptionName (6x)
58277: 998, // BRIEKeywordOptionName (6x)
58278: 999, // BRIEOption (6x)
58279: 1000, // BRIEOptions (6x)
58281: 1001, // BRIEStringOptionName (6x)
57385: 1002, // column (6x)
58312: 1003, // ColumnDef (6x)
58363: 1004, // DatabaseOption (6x)
58414: 1005, // EscapedTableRef (6x)
58436: 1006, // FieldTerminator (6x)
57437: 1007, // grant (6x)
58487: 1008, // IgnoreOptional (6x)
58502: 1009, // IndexNameList (6x)
58542: 1010, // LoadDataStmt (6x)
57519: 1011, // procedure (6x)
58700: 1012, // ReleaseSavepointStmt (6x)
58730: 1013, // RolenameList (6x)
58737: 1014, // SavepointStmt (6x)
58883: 1015, // UsernameList (6x)
58237: 1016, // AlgorithmClause (5x)
58292: 1017, // Boolean (5x)
58295: 1018, // BuiltinFunction (5x)
58296: 1019, // ByItem (5x)
58311: 1020, // CollationName (5x)
58314: 1021, // ColumnKeywordOpt (5x)
58379: 1022, // DirectPlacementOption (5x)
58381: 1023, // DirectResourceGroupOption (5x)
58434: 1024, // FieldOpt (5x)
58435: 1025, // FieldOpts (5x)
58481: 1026, // IdentList (5x)
58501: 1027, // IndexNameAndTypeOpt (5x)
57450: 1028, // infile (5x)
58531: 1029, // LimitOption (5x)
58546: 1030, // LockClause (5x)
58584: 1031, // OptCharsetWithOptBinary (5x)
57507: 1032, // option (5x)
58594: 1033, // OptNullTreatment (5x)
58636: 1034, // PolicyName (5x)
58643: 1035, // PriorityOpt (5x)
58740: 1036, // SelectLockOpt (5x)
58747: 1037, // SelectStmtIntoOption (5x)
58784: 1038, // SignedLiteral (5x)
58836: 1039, // TableOptimizerHintsOpt (5x)
58841: 1040, // TableRefs (5x)
58876: 1041, // UserSpec (5x)
58264: 1042, // AsOfClause (4x)
58267: 1043, // Assignment (4x)
58272: 1044, // AuthString (4x)
58297: 1045, // ByList (4x)
58333: 1046, // ConfigItemName (4x)
58337: 1047, // Constraint (4x)
58338: 1048, // ConstraintColumnarIndex (4x)
58341: 1049, // ConstraintVectorIndex (4x)
58342: 1050, // ConstraintWithColumnarIndex (4x)
58360: 1051, // CurdateSym (4x)
58446: 1052, // FloatOpt (4x)
58509: 1053, // IndexTypeName (4x)
58566: 1054, // NowSym (4x)
58567: 1055, // NowSymFunc (4x)
58568: 1056, // NowSymOptionFraction (4x)
58571: 1057, // NumList (4x)
57508: 1058, // optionally (4x)
58601: 1059, // OptWild (4x)
57512: 1060, // outer (4x)
58637: 1061, // Precision (4x)
58690: 1062, // ReferDef (4x)
58720: 1063, // RestrictOrCascadeOpt (4x)
58735: 1064, // RowStmt (4x)
58755: 1065, // SequenceOption (4x)
58823: 1066, // TableAsName (4x)
58824: 1067, // TableAsNameOpt (4x)
58834: 1068, // TableNameOptWild (4x)
58838: 1069, // TableOptionList (4x)
58849: 1070, // TextString (4x)
58856: 1071, // TraceableStmt (4x)
58862: 1072, // TransactionChar (4x)
58877: 1073, // UserSpecList (4x)
58890: 1074, // Varchar (4x)
58916: 1075, // WindowName (4x)
58268: 1076, // AssignmentList (3x)
58269: 1077, // AttributesOpt (3x)
58289: 1078, // BitValueType (3x)
58290: 1079, // BlobType (3x)
58293: 1080, // BooleanType (3x)
58304: 1081, // CastType (3x)
58323: 1082, // ColumnOption (3x)
58326: 1083, // ColumnPosition (3x)
58330: 1084, // CommonTableExpr (3x)
58355: 1085, // CreateTableStmt (3x)
58364: 1086, // DatabaseOptionList (3x)
58367: 1087, // DateAndTimeType (3x)
58374: 1088, // DefaultTrueDistinctOpt (3x)
58380: 1089, // DirectResourceGroupBackgroundOption (3x)
58382: 1090, // DirectResourceGroupRunawayOption (3x)
58404: 1091, // DynamicCalibrateResourceOption (3x)
57418: 1092, // elseIfKwd (3x)
58409: 1093, // EnforcedOrNot (3x)
58425: 1094, // ExtendedPriv (3x)
58441: 1095, // FixedPointType (3x)
58447: 1096, // FloatingPointType (3x)
58467: 1097, // GeneratedAlways (3x)
58470: 1098, // GlobalOrLocalOpt (3x)
58471: 1099, // GlobalScope (3x)
58475: 1100, // GroupByClause (3x)
58492: 1101, // IndexHint (3x)
58496: 1102, // IndexHintType (3x)
58515: 1103, // IntegerType (3x)
57468: 1104, // keys (3x)
58538: 1105, // LoadDataOptionListOpt (3x)
58545: 1106, // LocationLabelList (3x)
58557: 1107, // NChar (3x)
58561: 1108, // NextValueForSequenceParentheses (3x)
58569: 1109, // NowSymOptionFractionParentheses (3x)
58573: 1110, // NumericType (3x)
58559: 1111, // NVarchar (3x)
58595: 1112, // OptOrder (3x)
58599: 1113, // OptTemporary (3x)
58615: 1114, // PartDefOptionList (3x)
58617: 1115, // PartitionDefinition (3x)
58628: 1116, // PasswordOrLockOption (3x)
58635: 1117, // PluginNameList (3x)
58641: 1118, // PrimaryOpt (3x)
58644: 1119, // PrivElem (3x)
58646: 1120, // PrivType (3x)
58681: 1121, // QueryWatchOption (3x)
58683: 1122, // QueryWatchTextOption (3x)
58685: 1123, // RecommendIndexOption (3x)
58707: 1124, // RequireClause (3x)
58708: 1125, // RequireClauseOpt (3x)
58710: 1126, // RequireListElement (3x)
58731: 1127, // RolenameWithoutIdent (3x)
58724: 1128, // RoleOrPrivElem (3x)
58746: 1129, // SelectStmtGroup (3x)
58764: 1130, // SetOprOpt (3x)
58793: 1131, // SplitOption (3x)
58806: 1132, // StringLitOrUserVariable (3x)
58811: 1133, // StringType (3x)
58822: 1134, // TableAliasRefList (3x)
58825: 1135, // TableElement (3x)
58839: 1136, // TableOrTables (3x)
58851: 1137, // TextType (3x)
58863: 1138, // TransactionChars (3x)
57566: 1139, // trigger (3x)
58866: 1140, // Type (3x)
57570: 1141, // unlock (3x)
57572: 1142, // until (3x)
57574: 1143, // usage (3x)
58887: 1144, // ValuesList (3x)
58889: 1145, // ValuesStmtList (3x)
58885: 1146, // ValueSym (3x)
58892: 1147, // VariableAssignment (3x)
58913: 1148, // WindowFrameStart (3x)
58930: 1149, // Year (3x)
58233: 1150, // AddQueryWatchStmt (2x)
58235: 1151, // AdminStmt (2x)
58238: 1152, // AllColumnsOrPredicateColumnsOpt (2x)
58240: 1153, // AlterDatabaseStmt (2x)
58241: 1154, // AlterInstanceStmt (2x)
58242: 1155, // AlterJobOption (2x)
58244: 1156, // AlterOrderItem (2x)
58246: 1157, // AlterPolicyStmt (2x)
58247: 1158, // AlterRangeStmt (2x)
58248: 1159, // AlterResourceGroupStmt (2x)
58249: 1160, // AlterSequenceOption (2x)
58251: 1161, // AlterSequenceStmt (2x)
58252: 1162, // AlterTableSpec (2x)
58257: 1163, // AlterUserStmt (2x)
58258: 1164, // AnalyzeOption (2x)
58287: 1165, // BinlogStmt (2x)
58280: 1166, // BRIEStmt (2x)
58282: 1167, // BRIETables (2x)
58299: 1168, // CalibrateResourceStmt (2x)
57377: 1169, // call (2x)
58301: 1170, // CallStmt (2x)
58302: 1171, // CancelDistributionJobStmt (2x)
58303: 1172, // CancelImportStmt (2x)
58310: 1173, // CheckConstraintKeyword (2x)
58318: 1174, // ColumnNameListOpt (2x)
58321: 1175, // ColumnNameOrUserVariable (2x)
58320: 1176, // ColumnNameOrUserVarListOptWithBrackets (2x)
58324: 1177, // ColumnOptionList (2x)
58325: 1178, // ColumnOptionListOpt (2x)
58328: 1179, // CommentOrAttributeOption (2x)
58332: 1180, // CompletionTypeWithinTransaction (2x)
58334: 1181, // ConnectionOption (2x)
58336: 1182, // ConnectionOptions (2x)
58343: 1183, // CreateBindingStmt (2x)
58344: 1184, // CreateDatabaseStmt (2x)
58345: 1185, // CreateIndexStmt (2x)
58346: 1186, // CreatePolicyStmt (2x)
58347: 1187, // CreateProcedureStmt (2x)
58348: 1188, // CreateResourceGroupStmt (2x)
58349: 1189, // CreateRoleStmt (2x)
58351: 1190, // CreateSequenceStmt (2x)
58352: 1191, // CreateStatisticsStmt (2x)
58353: 1192, // CreateTableOptionListOpt (2x)
58356: 1193, // CreateUserStmt (2x)
58358: 1194, // CreateViewStmt (2x)
57399: 1195, // databases (2x)
58368: 1196, // DeallocateStmt (2x)
58369: 1197, // DeallocateSym (2x)
58372: 1198, // DefaultOrExpression (2x)
58385: 1199, // DistributeTableStmt (2x)
58386: 1200, // DoStmt (2x)
58387: 1201, // DropBindingStmt (2x)
58388: 1202, // DropDatabaseStmt (2x)
58389: 1203, // DropIndexStmt (2x)
58390: 1204, // DropPolicyStmt (2x)
58391: 1205, // DropProcedureStmt (2x)
58392: 1206, // DropQueryWatchStmt (2x)
58393: 1207, // DropResourceGroupStmt (2x)
58394: 1208, // DropRoleStmt (2x)
58395: 1209, // DropSequenceStmt (2x)
58396: 1210, // DropStatisticsStmt (2x)
58397: 1211, // DropStatsStmt (2x)
58398: 1212, // DropTableStmt (2x)
58399: 1213, // DropUserStmt (2x)
58400: 1214, // DropViewStmt (2x)
58402: 1215, // DuplicateOpt (2x)
58405: 1216, // ElseCaseOpt (2x)
58407: 1217, // EmptyStmt (2x)
58408: 1218, // EncryptionOpt (2x)
58410: 1219, // EnforcedOrNotOpt (2x)
58415: 1220, // ExecuteStmt (2x)
58416: 1221, // ExplainFormatType (2x)
58427: 1222, // Field (2x)
58430: 1223, // FieldItem (2x)
58437: 1224, // Fields (2x)
58442: 1225, // FlashbackDatabaseStmt (2x)
58443: 1226, // FlashbackTableStmt (2x)
58444: 1227, // FlashbackToNewName (2x)
58445: 1228, // FlashbackToTimestampStmt (2x)
58449: 1229, // FlushStmt (2x)
58451: 1230, // FormatOpt (2x)
58456: 1231, // FuncDatetimePrecList (2x)
58457: 1232, // FuncDatetimePrecListOpt (2x)
58472: 1233, // GrantProxyStmt (2x)
58473: 1234, // GrantRoleStmt (2x)
58474: 1235, // GrantStmt (2x)
58476: 1236, // HandleRange (2x)
58478: 1237, // HashString (2x)
58479: 1238, // HavingClause (2x)
58480: 1239, // HelpStmt (2x)
58493: 1240, // IndexHintList (2x)
58494: 1241, // IndexHintListOpt (2x)
58499: 1242, // IndexLockAndAlgorithmOpt (2x)
57452: 1243, // inout (2x)
58512: 1244, // InsertValues (2x)
58517: 1245, // IntoOpt (2x)
58523: 1246, // KeyOrIndexOpt (2x)
58524: 1247, // KillOrKillTiDB (2x)
58525: 1248, // KillStmt (2x)
58527: 1249, // LikeOrIlikeEscapeOpt (2x)
58530: 1250, // LimitClause (2x)
57478: 1251, // linear (2x)
58532: 1252, // LinearOpt (2x)
58533: 1253, // Lines (2x)
58536: 1254, // LoadDataOption (2x)
58539: 1255, // LoadDataSetItem (2x)
58541: 1256, // LoadDataSetSpecOpt (2x)
58543: 1257, // LoadStatsStmt (2x)
58547: 1258, // LockStatsStmt (2x)
58548: 1259, // LockTablesStmt (2x)
58555: 1260, // MaxValueOrExpression (2x)
58563: 1261, // NonTransactionalDMLStmt (2x)
58574: 1262, // ObjectType (2x)
57504: 1263, // of (2x)
58575: 1264, // OfTablesOpt (2x)
58576: 1265, // OnCommitOpt (2x)
58577: 1266, // OnDelete (2x)
58580: 1267, // OnUpdate (2x)
58585: 1268, // OptCollate (2x)
58589: 1269, // OptFull (2x)
58605: 1270, // OptimizeTableStmt (2x)
58591: 1271, // OptInteger (2x)
58607: 1272, // OptionalBraces (2x)
58606: 1273, // OptionLevel (2x)
58593: 1274, // OptLeadLagInfo (2x)
58592: 1275, // OptLLDefault (2x)
58600: 1276, // OptVectorElementType (2x)
57511: 1277, // out (2x)
58613: 1278, // OuterOpt (2x)
58618: 1279, // PartitionDefinitionList (2x)
58619: 1280, // PartitionDefinitionListOpt (2x)
58620: 1281, // PartitionIntervalOpt (2x)
58626: 1282, // PartitionOpt (2x)
58627: 1283, // PasswordOpt (2x)
58629: 1284, // PasswordOrLockOptionList (2x)
58630: 1285, // PasswordOrLockOptions (2x)
58631: 1286, // PlacementOptionList (2x)
58634: 1287, // PlanReplayerStmt (2x)
58640: 1288, // PreparedStmt (2x)
58645: 1289, // PrivLevel (2x)
58647: 1290, // ProcedurceCond (2x)
58648: 1291, // ProcedurceLabelOpt (2x)
58654: 1292, // ProcedureDecl (2x)
58661: 1293, // ProcedureHcond (2x)
58663: 1294, // ProcedureIf (2x)
58684: 1295, // QuickOptional (2x)
58686: 1296, // RecommendIndexOptionList (2x)
58687: 1297, // RecommendIndexOptionListOpt (2x)
58688: 1298, // RecommendIndexStmt (2x)
58689: 1299, // RecoverTableStmt (2x)
58691: 1300, // ReferOpt (2x)
58692: 1301, // RefreshObject (2x)
58697: 1302, // RefreshStatsStmt (2x)
58699: 1303, // RegexpSym (2x)
58701: 1304, // RenameTableStmt (2x)
58702: 1305, // RenameUserStmt (2x)
58704: 1306, // RepeatableOpt (2x)
58713: 1307, // ResourceGroupNameOption (2x)
58714: 1308, // ResourceGroupOptionList (2x)
58716: 1309, // ResourceGroupRunawayActionOption (2x)
58718: 1310, // ResourceGroupRunawayWatchOption (2x)
58719: 1311, // RestartStmt (2x)
57533: 1312, // revoke (2x)
58721: 1313, // RevokeRoleStmt (2x)
58722: 1314, // RevokeStmt (2x)
58725: 1315, // RoleOrPrivElemList (2x)
58726: 1316, // RoleSpec (2x)
58738: 1317, // SearchWhenThen (2x)
58750: 1318, // SelectStmtOpt (2x)
58753: 1319, // SelectStmtSQLCache (2x)
58757: 1320, // SetBindingStmt (2x)
58758: 1321, // SetDefaultRoleOpt (2x)
58759: 1322, // SetDefaultRoleStmt (2x)
58769: 1323, // SetRoleStmt (2x)
58777: 1324, // ShowProfileType (2x)
58780: 1325, // ShowStmt (2x)
58781: 1326, // ShowTableAliasOpt (2x)
58783: 1327, // ShutdownStmt (2x)
58788: 1328, // SimpleWhenThen (2x)
58794: 1329, // SplitRegionStmt (2x)
58790: 1330, // SpOptInout (2x)
58791: 1331, // SpPdparam (2x)
57546: 1332, // sqlexception (2x)
57547: 1333, // sqlstate (2x)
57548: 1334, // sqlwarning (2x)
58798: 1335, // Statement (2x)
58801: 1336, // StatsOptionsOpt (2x)
58802: 1337, // StatsPersistentVal (2x)
58803: 1338, // StatsType (2x)
58807: 1339, // StringLitOrUserVariableList (2x)
58812: 1340, // SubPartDefinition (2x)
58815: 1341, // SubPartitionMethod (2x)
58820: 1342, // Symbol (2x)
58826: 1343, // TableElementList (2x)
58829: 1344, // TableLock (2x)
58833: 1345, // TableNameListOpt (2x)
58848: 1346, // TablesTerminalSym (2x)
58846: 1347, // TableToTable (2x)
58850: 1348, // TextStringList (2x)
58855: 1349, // TraceStmt (2x)
58857: 1350, // TrafficCaptureOpt (2x)
58859: 1351, // TrafficReplayOpt (2x)
58861: 1352, // TrafficStmt (2x)
58868: 1353, // UnlockStatsStmt (2x)
58869: 1354, // UnlockTablesStmt (2x)
58870: 1355, // UpdateIndexElem (2x)
58878: 1356, // UserToUser (2x)
58893: 1357, // VariableAssignmentList (2x)
58903: 1358, // WhenClause (2x)
58908: 1359, // WindowDefinition (2x)
58911: 1360, // WindowFrameBound (2x)
58918: 1361, // WindowSpec (2x)
58923: 1362, // WithGrantOptionOpt (2x)
58924: 1363, // WithList (2x)
58929: 1364, // Writeable (2x)
58: 1365, // ':' (1x)
58234: 1366, // AdminShowSlow (1x)
58236: 1367, // AdminStmtLimitOpt (1x)
58243: 1368, // AlterJobOptionList (1x)
58245: 1369, // AlterOrderList (1x)
58250: 1370, // AlterSequenceOptionList (1x)
58253: 1371, // AlterTableSpecList (1x)
58254: 1372, // AlterTableSpecListOpt (1x)
58255: 1373, // AlterTableSpecSingleOpt (1x)
58259: 1374, // AnalyzeOptionList (1x)
58262: 1375, // AnyOrAll (1x)
58263: 1376, // ArrayKwdOpt (1x)
58265: 1377, // AsOfClauseOpt (1x)
58266: 1378, // AsOpt (1x)
58270: 1379, // AuthOption (1x)
58271: 1380, // AuthPlugin (1x)
58273: 1381, // AutoRandomOpt (1x)
58274: 1382, // BDRRole (1x)
58284: 1383, // BetweenOrNotOp (1x)
58286: 1384, // BindingStatusType (1x)
57375: 1385, // both (1x)
58298: 1386, // CalibrateOption (1x)
58300: 1387, // CalibrateResourceWorkloadOption (1x)
58308: 1388, // CharsetNameOrDefault (1x)
58309: 1389, // CharsetOpt (1x)
58313: 1390, // ColumnFormat (1x)
58315: 1391, // ColumnList (1x)
58322: 1392, // ColumnNameOrUserVariableList (1x)
58319: 1393, // ColumnNameOrUserVarListOpt (1x)
58327: 1394, // ColumnSetValueList (1x)
58331: 1395, // CompareOp (1x)
58335: 1396, // ConnectionOptionList (1x)
58339: 1397, // ConstraintElem (1x)
57387: 1398, // continueKwd (1x)
58350: 1399, // CreateSequenceOptionListOpt (1x)
58354: 1400, // CreateTableSelectOpt (1x)
58357: 1401, // CreateViewSelectOpt (1x)
57397: 1402, // cursor (1x)
58365: 1403, // DatabaseOptionListOpt (1x)
58362: 1404, // DBNameList (1x)
58373: 1405, // DefaultOrExpressionList (1x)
58375: 1406, // DefaultValueExpr (1x)
58401: 1407, // DryRunOptions (1x)
57416: 1408, // dual (1x)
58403: 1409, // DynamicCalibrateOptionList (1x)
58406: 1410, // ElseOpt (1x)
58411: 1411, // EnforcedOrNotOrNotNullOpt (1x)
57423: 1412, // exit (1x)
58424: 1413, // ExpressionOpt (1x)
58426: 1414, // FetchFirstOpt (1x)
58428: 1415, // FieldAsName (1x)
58429: 1416, // FieldAsNameOpt (1x)
58431: 1417, // FieldItemList (1x)
58433: 1418, // FieldList (1x)
58439: 1419, // FirstAndLastPartOpt (1x)
58440: 1420, // FirstOrNext (1x)
58448: 1421, // FlushOption (1x)
58452: 1422, // FromDual (1x)
58454: 1423, // FulltextSearchModifierOpt (1x)
58455: 1424, // FuncDatetimePrec (1x)
58468: 1425, // GetFormatSelector (1x)
58469: 1426, // GlobalOrLocal (1x)
58477: 1427, // HandleRangeList (1x)
58482: 1428, // IdentListWithParenOpt (1x)
58486: 1429, // IgnoreLines (1x)
58488: 1430, // IlikeOrNotOp (1x)
58489: 1431, // ImportFromSelectStmt (1x)
58495: 1432, // IndexHintScope (1x)
58498: 1433, // IndexKeyTypeOpt (1x)
58507: 1434, // IndexPartSpecificationListOpt (1x)
58510: 1435, // IndexTypeOpt (1x)
58491: 1436, // InOrNotOp (1x)
58513: 1437, // InstanceOption (1x)
58516: 1438, // IntervalExpr (1x)
58519: 1439, // IsolationLevel (1x)
58518: 1440, // IsOrNotOp (1x)
57473: 1441, // leading (1x)
58528: 1442, // LikeOrNotOp (1x)
58529: 1443, // LikeTableWithOrWithoutParen (1x)
58534: 1444, // LinesTerminated (1x)
58537: 1445, // LoadDataOptionList (1x)
58540: 1446, // LoadDataSetList (1x)
58544: 1447, // LocalOpt (1x)
58549: 1448, // LockType (1x)
58550: 1449, // LogTypeOpt (1x)
58551: 1450, // LowPriorityOpt (1x)
58552: 1451, // Match (1x)
58553: 1452, // MatchOpt (1x)
58554: 1453, // MaxValPartOpt (1x)
58556: 1454, // MaxValueOrExpressionList (1x)
58570: 1455, // NullPartOpt (1x)
58578: 1456, // OnDeleteUpdateOpt (1x)
58579: 1457, // OnDuplicateKeyUpdate (1x)
58581: 1458, // OptBinMod (1x)
58583: 1459, // OptCharset (1x)
58586: 1460, // OptExistingWindowName (1x)
58588: 1461, // OptFromFirstLast (1x)
58590: 1462, // OptGConcatSeparator (1x)
58608: 1463, // OptionalShardColumn (1x)
58596: 1464, // OptPartitionClause (1x)
58597: 1465, // OptSpPdparams (1x)
58598: 1466, // OptTable (1x)
58933: 1467, // optValue (1x)
58602: 1468, // OptWindowFrameClause (1x)
58603: 1469, // OptWindowOrderByClause (1x)
58610: 1470, // Order (1x)
58609: 1471, // OrReplace (1x)
57513: 1472, // outfile (1x)
58616: 1473, // PartDefValuesOpt (1x)
58621: 1474, // PartitionKeyAlgorithmOpt (1x)
58622: 1475, // PartitionMethod (1x)
58625: 1476, // PartitionNumOpt (1x)
58633: 1477, // PlanReplayerDumpOpt (1x)
57517: 1478, // precisionType (1x)
58639: 1479, // PrepareSQL (1x)
58934: 1480, // procedurceElseIfs (1x)
58650: 1481, // ProcedureCall (1x)
58653: 1482, // ProcedureCursorSelectStmt (1x)
58655: 1483, // ProcedureDeclIdents (1x)
58656: 1484, // ProcedureDecls (1x)
58657: 1485, // ProcedureDeclsOpt (1x)
58659: 1486, // ProcedureFetchList (1x)
58660: 1487, // ProcedureHandlerType (1x)
58662: 1488, // ProcedureHcondList (1x)
58669: 1489, // ProcedureOptDefault (1x)
58670: 1490, // ProcedureOptFetchNo (1x)
58673: 1491, // ProcedureProcStmts (1x)
58682: 1492, // QueryWatchOptionList (1x)
57524: 1493, // recursive (1x)
58693: 1494, // RefreshObjectList (1x)
58694: 1495, // RefreshStatsClusterOpt (1x)
58695: 1496, // RefreshStatsMode (1x)
58696: 1497, // RefreshStatsModeOpt (1x)
58698: 1498, // RegexpOrNotOp (1x)
58703: 1499, // ReorganizePartitionRuleOpt (1x)
58706: 1500, // Replica (1x)
58709: 1501, // RequireList (1x)
58711: 1502, // ResourceGroupBackgroundOptionList (1x)
58715: 1503, // ResourceGroupPriorityOption (1x)
58717: 1504, // ResourceGroupRunawayOptionList (1x)
58727: 1505, // RoleSpecList (1x)
58734: 1506, // RowOrRows (1x)
58739: 1507, // SearchedWhenThenList (1x)
58743: 1508, // SelectStmtFieldList (1x)
58751: 1509, // SelectStmtOpts (1x)
58752: 1510, // SelectStmtOptsList (1x)
58756: 1511, // SequenceOptionList (1x)
58761: 1512, // SetOpr (1x)
58768: 1513, // SetRoleOpt (1x)
58771: 1514, // ShardableStmt (1x)
58773: 1515, // ShowIndexKwd (1x)
58774: 1516, // ShowLikeOrWhereOpt (1x)
58775: 1517, // ShowPlacementTarget (1x)
58776: 1518, // ShowProfileArgsOpt (1x)
58778: 1519, // ShowProfileTypes (1x)
58779: 1520, // ShowProfileTypesOpt (1x)
58782: 1521, // ShowTargetFilterable (1x)
58789: 1522, // SimpleWhenThenList (1x)
57544: 1523, // spatial (1x)
58795: 1524, // SplitSyntaxOption (1x)
58792: 1525, // SpPdparams (1x)
57552: 1526, // ssl (1x)
58796: 1527, // Start (1x)
58797: 1528, // Starting (1x)
57553: 1529, // starting (1x)
58799: 1530, // StatementList (1x)
58800: 1531, // StatementScope (1x)
58804: 1532, // StorageMedia (1x)
57554: 1533, // stored (1x)
58805: 1534, // StringList (1x)
58810: 1535, // StringNameOrBRIEOptionKeyword (1x)
58813: 1536, // SubPartDefinitionList (1x)
58814: 1537, // SubPartDefinitionListOpt (1x)
58816: 1538, // SubPartitionNumOpt (1x)
58817: 1539, // SubPartitionOpt (1x)
58827: 1540, // TableElementListOpt (1x)
58830: 1541, // TableLockList (1x)
58842: 1542, // TableRefsClause (1x)
58843: 1543, // TableSampleMethodOpt (1x)
58844: 1544, // TableSampleOpt (1x)
58845: 1545, // TableSampleUnitOpt (1x)
58847: 1546, // TableToTableList (1x)
58858: 1547, // TrafficCaptureOptList (1x)
58860: 1548, // TrafficReplayOptList (1x)
57565: 1549, // trailing (1x)
58864: 1550, // TrimDirection (1x)
58871: 1551, // UpdateIndexesList (1x)
58872: 1552, // UpdateIndexesOpt (1x)
58879: 1553, // UserToUserList (1x)
58881: 1554, // UserVariableList (1x)
58884: 1555, // UsingRoles (1x)
58886: 1556, // Values (1x)
58888: 1557, // ValuesOpt (1x)
58895: 1558, // ViewAlgorithm (1x)
58896: 1559, // ViewCheckOption (1x)
58897: 1560, // ViewDefiner (1x)
58898: 1561, // ViewFieldList (1x)
58899: 1562, // ViewName (1x)
58900: 1563, // ViewSQLSecurity (1x)
57585: 1564, // virtual (1x)
58901: 1565, // VirtualOrStored (1x)
58902: 1566, // WatchDurationOption (1x)
58904: 1567, // WhenClauseList (1x)
58907: 1568, // WindowClauseOptional (1x)
58909: 1569, // WindowDefinitionList (1x)
58910: 1570, // WindowFrameBetween (1x)
58912: 1571, // WindowFrameExtent (1x)
58914: 1572, // WindowFrameUnits (1x)
58917: 1573, // WindowNameOrSpec (1x)
58919: 1574, // WindowSpecDetails (1x)
58925: 1575, // WithReadLockOpt (1x)
58926: 1576, // WithRollupClause (1x)
58927: 1577, // WithValidation (1x)
58928: 1578, // WithValidationOpt (1x)
58232: 1579, // $default (0x)
58192: 1580, // andnot (0x)
58216: 1581, // createTableSelect (0x)
58206: 1582, // empty (0x)
57345: 1583, // error (0x)
58231: 1584, // higherThanComma (0x)
58225: 1585, // higherThanParenthese (0x)
58214: 1586, // insertValues (0x)
57356: 1587, // invalid (0x)
58217: 1588, // lowerThanCharsetKwd (0x)
58230: 1589, // lowerThanComma (0x)
58215: 1590, // lowerThanCreateTableSelect (0x)
58227: 1591, // lowerThanEq (0x)
58222: 1592, // lowerThanFunction (0x)
58213: 1593, // lowerThanInsertValues (0x)
58218: 1594, // lowerThanKey (0x)
58219: 1595, // lowerThanLocal (0x)
58229: 1596, // lowerThanNot (0x)
58226: 1597, // lowerThanOn (0x)
58224: 1598, // lowerThanParenthese (0x)
58220: 1599, // lowerThanRemove (0x)
58207: 1600, // lowerThanSelectOpt (0x)
58212: 1601, // lowerThanSelectStmt (0x)
58211: 1602, // lowerThanSetKeyword (0x)
58210: 1603, // lowerThanStringLitToken (0x)
58208: 1604, // lowerThanValueKeyword (0x)
58209: 1605, // lowerThanWith (0x)
58221: 1606, // lowerThenOrder (0x)
58228: 1607, // neg (0x)
57360: 1608, // odbcDateType (0x)
57362: 1609, // odbcTimestampType (0x)
57361: 1610, // odbcTimeType (0x)
58223: 1611, // tableRefPriority (0x)
}
yySymNames = []string{
"';'",
"$end",
"remove",
"split",
"merge",
"reorganize",
"comment",
"secondaryEngineAttribute",
"storage",
"autoIncrement",
"','",
"first",
"after",
"serial",
"autoRandom",
"columnFormat",
"password",
"charsetKwd",
"checksum",
"placement",
"keyBlockSize",
"preSplitRegions",
"tablespace",
"encryption",
"engine",
"data",
"engine_attribute",
"insertMethod",
"maxRows",
"minRows",
"nodegroup",
"connection",
"autoRandomBase",
"statsBuckets",
"statsTopN",
"ttl",
"autoIdCache",
"avgRowLength",
"compression",
"delayKeyWrite",
"packKeys",
"rowFormat",
"secondaryEngine",
"shardRowIDBits",
"statsAutoRecalc",
"statsColChoice",
"statsColList",
"statsPersistent",
"statsSamplePages",
"statsSampleRate",
"tableChecksum",
"ttlEnable",
"ttlJobInterval",
"')'",
"resource",
"attribute",
"identifier",
"account",
"failedLoginAttempts",
"passwordLockTime",
"local",
"encryptionMethod",
"global",
"signed",
"resume",
"snapshot",
"backend",
"checkpoint",
"checksumConcurrency",
"compressionLevel",
"compressionType",
"concurrency",
"csvBackslashEscape",
"csvDelimiter",
"csvHeader",
"csvNotNull",
"csvNull",
"csvSeparator",
"csvTrimLastSeparators",
"encryptionKeyFile",
"fullBackupStorage",
"gcTTL",
"ignoreStats",
"lastBackup",
"loadStats",
"onDuplicate",
"online",
"rateLimit",
"restoredTS",
"sendCredentialsToTiKV",
"skipSchemaFiles",
"startTS",
"strictFormat",
"tikvImporter",
"untilTS",
"waitTiflashReady",
"withSysTable",
"tp",
"clustered",
"invisible",
"nonclustered",
"visible",
"addColumnarReplicaOnDemand",
"algorithm",
"begin",
"commit",
"no",
"rollback",
"start",
"truncate",
"action",
"cache",
"nocache",
"open",
"close",
"cycle",
"minValue",
"end",
"increment",
"nocycle",
"nomaxvalue",
"nominvalue",
"restart",
"regions",
"background",
"burstable",
"priority",
"queryLimit",
"ruRate",
"yearType",
"plan",
"subpartition",
"partitions",
"sqlTsiYear",
"timeDuration",
"constraints",
"followerConstraints",
"followers",
"leaderConstraints",
"learnerConstraints",
"learners",
"primaryRegion",
"schedule",
"survivalPreferences",
"voterConstraints",
"voters",
"watch",
"columns",
"execElapsed",
"importKwd",
"processedKeys",
"ru",
"user",
"view",
"day",
"defined",
"second",
"hour",
"microsecond",
"minute",
"month",
"quarter",
"sqlTsiDay",
"sqlTsiHour",
"sqlTsiMinute",
"sqlTsiMonth",
"sqlTsiQuarter",
"sqlTsiSecond",
"sqlTsiWeek",
"week",
"ascii",
"byteType",
"status",
"tables",
"unicodeSym",
"fields",
"readOnly",
"speed",
"logs",
"jsonType",
"cluster",
"datetimeType",
"dateType",
"query",
"separator",
"timeType",
"vectorType",
"cipher",
"compress",
"fixed",
"issuer",
"maxConnectionsPerHour",
"maxQueriesPerHour",
"maxUpdatesPerHour",
"maxUserConnections",
"preceding",
"san",
"subject",
"tokenIssuer",
"endTime",
"full",
"startTime",
"taskTypes",
"timestampType",
"utilizationLimit",
"booleanType",
"jobs",
"textType",
"bindings",
"bitType",
"boolType",
"current",
"definer",
"enum",
"hash",
"identified",
"job",
"national",
"ncharType",
"nvarcharType",
"respect",
"role",
"value",
"backup",
"enforced",
"following",
"less",
"lite",
"nowait",
"only",
"savepoint",
"skip",
"than",
"tiFlash",
"unbounded",
"binding",
"hypo",
"next_row_id",
"off",
"offset",
"policy",
"predicate",
"replica",
"stats",
"temporary",
"unlimited",
"digest",
"location",
"planCache",
"prepare",
"unknown",
"wait",
"btree",
"cooldown",
"ddl",
"declare",
"dryRun",
"format",
"hnsw",
"inverted",
"isolation",
"last",
"memory",
"next",
"optional",
"privileges",
"required",
"rtree",
"sampleRate",
"sequence",
"session",
"slow",
"switchGroup",
"traffic",
"validation",
"variables",
"attributes",
"cancel",
"capture",
"compact",
"disable",
"distributions",
"do",
"dynamic",
"enable",
"errorKwd",
"exact",
"flush",
"handler",
"history",
"mb",
"mode",
"pause",
"plugins",
"processlist",
"recover",
"repair",
"repeatable",
"similar",
"statistics",
"subpartitions",
"tidb",
"without",
"admin",
"batch",
"bdr",
"binlog",
"block",
"br",
"briefType",
"buckets",
"calibrate",
"cardinality",
"chain",
"clientErrorsSummary",
"cmSketch",
"coalesce",
"compressed",
"context",
"copyKwd",
"correlation",
"cpu",
"deallocate",
"dependency",
"directory",
"discard",
"disk",
"distribute",
"distribution",
"dotType",
"dry",
"duplicate",
"exchange",
"execute",
"expansion",
"flashback",
"general",
"help",
"high",
"histogram",
"hosts",
"identSQLErrors",
"incremental",
"indexes",
"inplace",
"instance",
"instant",
"ipc",
"labels",
"locked",
"low",
"medium",
"metadata",
"moderated",
"modify",
"nextval",
"nulls",
"pageSym",
"purge",
"rebuild",
"recommend",
"redundant",
"refresh",
"reload",
"restore",
"routine",
"rule",
"run",
"s3",
"samples",
"secondaryLoad",
"secondaryUnload",
"share",
"shutdown",
"slave",
"source",
"statsExtended",
"statsOptions",
"stop",
"swaps",
"tidbJson",
"tokudbDefault",
"tokudbFast",
"tokudbLzma",
"tokudbQuickLZ",
"tokudbSmall",
"tokudbSnappy",
"tokudbUncompressed",
"tokudbZlib",
"tokudbZstd",
"topn",
"trace",
"traditional",
"trueCardCost",
"verboseType",
"warnings",
"workload",
"against",
"ago",
"always",
"apply",
"backups",
"bernoulli",
"bindingCache",
"builtins",
"cascaded",
"causal",
"cleanup",
"client",
"collation",
"columnar",
"columnStatsUsage",
"committed",
"config",
"consistency",
"consistent",
"depth",
"disabled",
"dump",
"enabled",
"engines",
"events",
"evolve",
"expire",
"exprPushdownBlacklist",
"extended",
"faultsSym",
"found",
"function",
"grants",
"histogramsInFlight",
"internal",
"invoker",
"io",
"language",
"level",
"list",
"log",
"master",
"never",
"none",
"oltpReadOnly",
"oltpReadWrite",
"oltpWriteOnly",
"optimistic",
"optRuleBlacklist",
"parser",
"partial",
"partitioning",
"percent",
"pessimistic",
"point",
"preserve",
"profile",
"profiles",
"queries",
"recent",
"region",
"replay",
"replayer",
"restores",
"reuse",
"rollup",
"secondary",
"security",
"serializable",
"sessionStates",
"simple",
"statsHealthy",
"statsHistograms",
"statsLocked",
"statsMeta",
"switchesSym",
"system",
"systemTime",
"target",
"temptable",
"timeout",
"tls",
"top",
"tpcc",
"tpch10",
"transaction",
"triggers",
"uncommitted",
"undefined",
"unset",
"width",
"x509",
"addDate",
"advise",
"any",
"approxCountDistinct",
"approxPercentile",
"avg",
"bitAnd",
"bitOr",
"bitXor",
"bound",
"cast",
"curDate",
"curTime",
"dateAdd",
"dateSub",
"escape",
"event",
"exclusive",
"explore",
"extract",
"file",
"follower",
"getFormat",
"groupConcat",
"imports",
"ioReadBandwidth",
"ioWriteBandwidth",
"jsonArrayagg",
"jsonObjectAgg",
"jsonSumCrc32",
"lastval",
"leader",
"learner",
"max",
"max_idxnum",
"max_minutes",
"member",
"min",
"names",
"nodeID",
"nodeState",
"now",
"per_db",
"per_table",
"position",
"process",
"proxy",
"quick",
"replicas",
"replication",
"reset",
"reverse",
"rowCount",
"running",
"setval",
"shared",
"some",
"sqlBufferResult",
"sqlCache",
"sqlNoCache",
"staleness",
"std",
"stddev",
"stddevPop",
"stddevSamp",
"strict",
"strong",
"subDate",
"substring",
"sum",
"super",
"timestampAdd",
"timestampDiff",
"trim",
"tsoType",
"variance",
"varPop",
"varSamp",
"voter",
"weightString",
"'('",
"on",
"stringLit",
"with",
"partition",
"not2",
"defaultKwd",
"not",
"as",
"collate",
"using",
"union",
"left",
"right",
"'+'",
"'-'",
"mod",
"null",
"values",
"ignore",
"replace",
"except",
"eq",
"intersect",
"charType",
"where",
"intLit",
"fetch",
"set",
"limit",
"forKwd",
"'*'",
"lock",
"into",
"from",
"order",
"force",
"and",
"or",
"andand",
"pipesAsOr",
"xor",
"group",
"having",
"straightJoin",
"window",
"use",
"join",
"desc",
"ifKwd",
"like",
"natural",
"cross",
"inner",
"explain",
"'}'",
"binaryType",
"insert",
"rows",
"when",
"elseKwd",
"rangeKwd",
"tableSample",
"groups",
"dayHour",
"dayMicrosecond",
"dayMinute",
"daySecond",
"hourMicrosecond",
"hourMinute",
"hourSecond",
"minuteMicrosecond",
"minuteSecond",
"secondMicrosecond",
"yearMonth",
"asc",
"in",
"tableKwd",
"then",
"'<'",
"'>'",
"'/'",
"caseKwd",
"ge",
"is",
"le",
"neq",
"neqSynonym",
"nulleq",
"repeat",
"'%'",
"'&'",
"'^'",
"'|'",
"div",
"lsh",
"rsh",
"falseKwd",
"trueKwd",
"singleAtIdentifier",
"between",
"currentUser",
"ilike",
"regexpKwd",
"rlike",
"decLit",
"floatLit",
"hexLit",
"memberof",
"bitLit",
"row",
"interval",
"paramMarker",
"'{'",
"database",
"key",
"exists",
"underscoreCS",
"convert",
"builtinCurDate",
"builtinNow",
"currentDate",
"currentTs",
"localTime",
"localTs",
"selectKwd",
"doubleAtIdentifier",
"sql",
"builtinCount",
"'!'",
"'~'",
"builtinApproxCountDistinct",
"builtinApproxPercentile",
"builtinBitAnd",
"builtinBitOr",
"builtinBitXor",
"builtinCast",
"builtinCurTime",
"builtinDateAdd",
"builtinDateSub",
"builtinExtract",
"builtinGroupConcat",
"builtinMax",
"builtinMin",
"builtinPosition",
"builtinStddevPop",
"builtinStddevSamp",
"builtinSubstring",
"builtinSum",
"builtinSysDate",
"builtinTranslate",
"builtinTrim",
"builtinUser",
"builtinVarPop",
"builtinVarSamp",
"cumeDist",
"currentRole",
"currentTime",
"denseRank",
"firstValue",
"lag",
"lastValue",
"lead",
"nthValue",
"ntile",
"percentRank",
"rank",
"rowNumber",
"tidbCurrentTSO",
"utcDate",
"utcTime",
"utcTimestamp",
"primary",
"check",
"unique",
"constraint",
"references",
"pipes",
"generated",
"character",
"index",
"match",
"update",
"to",
"analyze",
"'.'",
"all",
"array",
"assignmentEq",
"jss",
"juss",
"maxValue",
"by",
"alter",
"lines",
"require",
"'@'",
"doubleType",
"drop",
"floatType",
"cascade",
"decimalType",
"read",
"realType",
"restrict",
"varcharacter",
"varcharType",
"asof",
"integerType",
"intType",
"varbinaryType",
"bigIntType",
"blobType",
"create",
"float4Type",
"float8Type",
"int1Type",
"int2Type",
"int3Type",
"int4Type",
"int8Type",
"long",
"longblobType",
"longtextType",
"mediumblobType",
"mediumIntType",
"mediumtextType",
"middleIntType",
"numericType",
"smallIntType",
"tinyblobType",
"tinyIntType",
"tinytextType",
"foreign",
"fulltext",
"toTimestamp",
"toTSO",
"optimize",
"rename",
"write",
"add",
"change",
"Identifier",
"NotKeywordToken",
"TiDBKeyword",
"UnReservedKeyword",
"SubSelect",
"UserVariable",
"Literal",
"StringLiteral",
"SimpleIdent",
"NextValueForSequence",
"FunctionCallGeneric",
"FunctionCallKeyword",
"FunctionCallNonKeyword",
"FunctionNameConflict",
"FunctionNameDateArith",
"FunctionNameDateArithMultiForms",
"FunctionNameDatetimePrecision",
"FunctionNameOptionalBraces",
"FunctionNameSequence",
"SimpleExpr",
"SumExpr",
"SystemVariable",
"Variable",
"WindowFuncCall",
"BitExpr",
"PredicateExpr",
"BoolPri",
"Expression",
"NUM",
"EqOpt",
"logAnd",
"logOr",
"deleteKwd",
"TableName",
"StringName",
"SelectStmt",
"SelectStmtBasic",
"SelectStmtFromDualTable",
"SelectStmtFromTable",
"SetOprClause",
"SetOprClauseList",
"SetOprStmtWithLimitOrderBy",
"SetOprStmtWoutLimitOrderBy",
"LengthNum",
"unsigned",
"WithClause",
"SelectStmtWithClause",
"SetOprStmt",
"zerofill",
"over",
"ColumnName",
"UpdateStmtNoWith",
"DeleteWithoutUsingStmt",
"InsertIntoStmt",
"Int64Num",
"ReplaceIntoStmt",
"UpdateStmt",
"describe",
"distinct",
"distinctRow",
"while",
"lowPriority",
"WindowingClause",
"delayed",
"DeleteWithUsingStmt",
"highPriority",
"iterate",
"leave",
"DeleteFromStmt",
"hintComment",
"FieldLen",
"OrderBy",
"SelectStmtLimit",
"OptWindowingClause",
"AnalyzeTableStmt",
"CommitStmt",
"RollbackStmt",
"SetStmt",
"sqlBigResult",
"sqlCalcFoundRows",
"sqlSmallResult",
"terminated",
"CharsetKw",
"ExpressionList",
"Username",
"enclosed",
"ExplainStmt",
"ExplainSym",
"IfExists",
"PartitionNameList",
"TruncateTableStmt",
"UseStmt",
"escaped",
"IfNotExists",
"optionallyEnclosedBy",
"PlacementPolicyOption",
"ProcedureBlockContent",
"ProcedureUnlabelLoopStmt",
"ProcedureCaseStmt",
"ProcedureCloseCur",
"ProcedureFetchInto",
"ProcedureIfstmt",
"ProcedureIterate",
"ProcedureLabeledBlock",
"ProcedurelabeledLoopStmt",
"ProcedureLeave",
"ProcedureOpenCur",
"ProcedureProcStmt",
"ProcedureSearchedCase",
"ProcedureSimpleCase",
"ProcedureStatementStmt",
"ProcedureUnlabeledBlock",
"ProcedureUnlabelLoopBlock",
"TableNameList",
"OptFieldLen",
"DistinctKwd",
"TimestampUnit",
"WhereClause",
"WhereClauseOptional",
"DistinctOpt",
"EqOrAssignmentEq",
"ExprOrDefault",
"DefaultKwdOpt",
"JoinTable",
"noWriteToBinLog",
"OptBinary",
"release",
"RolenameComposed",
"TableFactor",
"TableRef",
"TimeUnit",
"AnalyzeOptionListOpt",
"ColumnNameList",
"FromOrIn",
"AlterTableStmt",
"CharsetName",
"DBName",
"ImportIntoStmt",
"IndexPartSpecification",
"load",
"NoWriteToBinLogAliasOpt",
"NumLiteral",
"OrderByOptional",
"PartDefOption",
"SignedNum",
"BuggyDefaultFalseDistinctOpt",
"DefaultFalseDistinctOpt",
"ExpressionListOpt",
"IndexPartSpecificationList",
"JoinType",
"NotSym",
"ResourceGroupName",
"Rolename",
"RoleNameString",
"VariableName",
"CrossOpt",
"ExplainableStmt",
"IndexInvisible",
"IndexType",
"KeyOrIndex",
"SelectStmtLimitOpt",
"SetExpr",
"WithClustered",
"AllOrPartitionNameList",
"BindableStmt",
"Char",
"ConstraintKeywordOpt",
"DatabaseSym",
"FieldsOrColumns",
"ForceOpt",
"IndexName",
"IndexOption",
"IndexOptionList",
"kill",
"PartitionNameListOpt",
"Priority",
"ProcedureProcStmt1s",
"RowFormat",
"RowValue",
"show",
"ShowDatabaseNameOpt",
"TableOptimizerHints",
"TableOption",
"varying",
"BeginTransactionStmt",
"BRIEBooleanOptionName",
"BRIEIntegerOptionName",
"BRIEKeywordOptionName",
"BRIEOption",
"BRIEOptions",
"BRIEStringOptionName",
"column",
"ColumnDef",
"DatabaseOption",
"EscapedTableRef",
"FieldTerminator",
"grant",
"IgnoreOptional",
"IndexNameList",
"LoadDataStmt",
"procedure",
"ReleaseSavepointStmt",
"RolenameList",
"SavepointStmt",
"UsernameList",
"AlgorithmClause",
"Boolean",
"BuiltinFunction",
"ByItem",
"CollationName",
"ColumnKeywordOpt",
"DirectPlacementOption",
"DirectResourceGroupOption",
"FieldOpt",
"FieldOpts",
"IdentList",
"IndexNameAndTypeOpt",
"infile",
"LimitOption",
"LockClause",
"OptCharsetWithOptBinary",
"option",
"OptNullTreatment",
"PolicyName",
"PriorityOpt",
"SelectLockOpt",
"SelectStmtIntoOption",
"SignedLiteral",
"TableOptimizerHintsOpt",
"TableRefs",
"UserSpec",
"AsOfClause",
"Assignment",
"AuthString",
"ByList",
"ConfigItemName",
"Constraint",
"ConstraintColumnarIndex",
"ConstraintVectorIndex",
"ConstraintWithColumnarIndex",
"CurdateSym",
"FloatOpt",
"IndexTypeName",
"NowSym",
"NowSymFunc",
"NowSymOptionFraction",
"NumList",
"optionally",
"OptWild",
"outer",
"Precision",
"ReferDef",
"RestrictOrCascadeOpt",
"RowStmt",
"SequenceOption",
"TableAsName",
"TableAsNameOpt",
"TableNameOptWild",
"TableOptionList",
"TextString",
"TraceableStmt",
"TransactionChar",
"UserSpecList",
"Varchar",
"WindowName",
"AssignmentList",
"AttributesOpt",
"BitValueType",
"BlobType",
"BooleanType",
"CastType",
"ColumnOption",
"ColumnPosition",
"CommonTableExpr",
"CreateTableStmt",
"DatabaseOptionList",
"DateAndTimeType",
"DefaultTrueDistinctOpt",
"DirectResourceGroupBackgroundOption",
"DirectResourceGroupRunawayOption",
"DynamicCalibrateResourceOption",
"elseIfKwd",
"EnforcedOrNot",
"ExtendedPriv",
"FixedPointType",
"FloatingPointType",
"GeneratedAlways",
"GlobalOrLocalOpt",
"GlobalScope",
"GroupByClause",
"IndexHint",
"IndexHintType",
"IntegerType",
"keys",
"LoadDataOptionListOpt",
"LocationLabelList",
"NChar",
"NextValueForSequenceParentheses",
"NowSymOptionFractionParentheses",
"NumericType",
"NVarchar",
"OptOrder",
"OptTemporary",
"PartDefOptionList",
"PartitionDefinition",
"PasswordOrLockOption",
"PluginNameList",
"PrimaryOpt",
"PrivElem",
"PrivType",
"QueryWatchOption",
"QueryWatchTextOption",
"RecommendIndexOption",
"RequireClause",
"RequireClauseOpt",
"RequireListElement",
"RolenameWithoutIdent",
"RoleOrPrivElem",
"SelectStmtGroup",
"SetOprOpt",
"SplitOption",
"StringLitOrUserVariable",
"StringType",
"TableAliasRefList",
"TableElement",
"TableOrTables",
"TextType",
"TransactionChars",
"trigger",
"Type",
"unlock",
"until",
"usage",
"ValuesList",
"ValuesStmtList",
"ValueSym",
"VariableAssignment",
"WindowFrameStart",
"Year",
"AddQueryWatchStmt",
"AdminStmt",
"AllColumnsOrPredicateColumnsOpt",
"AlterDatabaseStmt",
"AlterInstanceStmt",
"AlterJobOption",
"AlterOrderItem",
"AlterPolicyStmt",
"AlterRangeStmt",
"AlterResourceGroupStmt",
"AlterSequenceOption",
"AlterSequenceStmt",
"AlterTableSpec",
"AlterUserStmt",
"AnalyzeOption",
"BinlogStmt",
"BRIEStmt",
"BRIETables",
"CalibrateResourceStmt",
"call",
"CallStmt",
"CancelDistributionJobStmt",
"CancelImportStmt",
"CheckConstraintKeyword",
"ColumnNameListOpt",
"ColumnNameOrUserVariable",
"ColumnNameOrUserVarListOptWithBrackets",
"ColumnOptionList",
"ColumnOptionListOpt",
"CommentOrAttributeOption",
"CompletionTypeWithinTransaction",
"ConnectionOption",
"ConnectionOptions",
"CreateBindingStmt",
"CreateDatabaseStmt",
"CreateIndexStmt",
"CreatePolicyStmt",
"CreateProcedureStmt",
"CreateResourceGroupStmt",
"CreateRoleStmt",
"CreateSequenceStmt",
"CreateStatisticsStmt",
"CreateTableOptionListOpt",
"CreateUserStmt",
"CreateViewStmt",
"databases",
"DeallocateStmt",
"DeallocateSym",
"DefaultOrExpression",
"DistributeTableStmt",
"DoStmt",
"DropBindingStmt",
"DropDatabaseStmt",
"DropIndexStmt",
"DropPolicyStmt",
"DropProcedureStmt",
"DropQueryWatchStmt",
"DropResourceGroupStmt",
"DropRoleStmt",
"DropSequenceStmt",
"DropStatisticsStmt",
"DropStatsStmt",
"DropTableStmt",
"DropUserStmt",
"DropViewStmt",
"DuplicateOpt",
"ElseCaseOpt",
"EmptyStmt",
"EncryptionOpt",
"EnforcedOrNotOpt",
"ExecuteStmt",
"ExplainFormatType",
"Field",
"FieldItem",
"Fields",
"FlashbackDatabaseStmt",
"FlashbackTableStmt",
"FlashbackToNewName",
"FlashbackToTimestampStmt",
"FlushStmt",
"FormatOpt",
"FuncDatetimePrecList",
"FuncDatetimePrecListOpt",
"GrantProxyStmt",
"GrantRoleStmt",
"GrantStmt",
"HandleRange",
"HashString",
"HavingClause",
"HelpStmt",
"IndexHintList",
"IndexHintListOpt",
"IndexLockAndAlgorithmOpt",
"inout",
"InsertValues",
"IntoOpt",
"KeyOrIndexOpt",
"KillOrKillTiDB",
"KillStmt",
"LikeOrIlikeEscapeOpt",
"LimitClause",
"linear",
"LinearOpt",
"Lines",
"LoadDataOption",
"LoadDataSetItem",
"LoadDataSetSpecOpt",
"LoadStatsStmt",
"LockStatsStmt",
"LockTablesStmt",
"MaxValueOrExpression",
"NonTransactionalDMLStmt",
"ObjectType",
"of",
"OfTablesOpt",
"OnCommitOpt",
"OnDelete",
"OnUpdate",
"OptCollate",
"OptFull",
"OptimizeTableStmt",
"OptInteger",
"OptionalBraces",
"OptionLevel",
"OptLeadLagInfo",
"OptLLDefault",
"OptVectorElementType",
"out",
"OuterOpt",
"PartitionDefinitionList",
"PartitionDefinitionListOpt",
"PartitionIntervalOpt",
"PartitionOpt",
"PasswordOpt",
"PasswordOrLockOptionList",
"PasswordOrLockOptions",
"PlacementOptionList",
"PlanReplayerStmt",
"PreparedStmt",
"PrivLevel",
"ProcedurceCond",
"ProcedurceLabelOpt",
"ProcedureDecl",
"ProcedureHcond",
"ProcedureIf",
"QuickOptional",
"RecommendIndexOptionList",
"RecommendIndexOptionListOpt",
"RecommendIndexStmt",
"RecoverTableStmt",
"ReferOpt",
"RefreshObject",
"RefreshStatsStmt",
"RegexpSym",
"RenameTableStmt",
"RenameUserStmt",
"RepeatableOpt",
"ResourceGroupNameOption",
"ResourceGroupOptionList",
"ResourceGroupRunawayActionOption",
"ResourceGroupRunawayWatchOption",
"RestartStmt",
"revoke",
"RevokeRoleStmt",
"RevokeStmt",
"RoleOrPrivElemList",
"RoleSpec",
"SearchWhenThen",
"SelectStmtOpt",
"SelectStmtSQLCache",
"SetBindingStmt",
"SetDefaultRoleOpt",
"SetDefaultRoleStmt",
"SetRoleStmt",
"ShowProfileType",
"ShowStmt",
"ShowTableAliasOpt",
"ShutdownStmt",
"SimpleWhenThen",
"SplitRegionStmt",
"SpOptInout",
"SpPdparam",
"sqlexception",
"sqlstate",
"sqlwarning",
"Statement",
"StatsOptionsOpt",
"StatsPersistentVal",
"StatsType",
"StringLitOrUserVariableList",
"SubPartDefinition",
"SubPartitionMethod",
"Symbol",
"TableElementList",
"TableLock",
"TableNameListOpt",
"TablesTerminalSym",
"TableToTable",
"TextStringList",
"TraceStmt",
"TrafficCaptureOpt",
"TrafficReplayOpt",
"TrafficStmt",
"UnlockStatsStmt",
"UnlockTablesStmt",
"UpdateIndexElem",
"UserToUser",
"VariableAssignmentList",
"WhenClause",
"WindowDefinition",
"WindowFrameBound",
"WindowSpec",
"WithGrantOptionOpt",
"WithList",
"Writeable",
"':'",
"AdminShowSlow",
"AdminStmtLimitOpt",
"AlterJobOptionList",
"AlterOrderList",
"AlterSequenceOptionList",
"AlterTableSpecList",
"AlterTableSpecListOpt",
"AlterTableSpecSingleOpt",
"AnalyzeOptionList",
"AnyOrAll",
"ArrayKwdOpt",
"AsOfClauseOpt",
"AsOpt",
"AuthOption",
"AuthPlugin",
"AutoRandomOpt",
"BDRRole",
"BetweenOrNotOp",
"BindingStatusType",
"both",
"CalibrateOption",
"CalibrateResourceWorkloadOption",
"CharsetNameOrDefault",
"CharsetOpt",
"ColumnFormat",
"ColumnList",
"ColumnNameOrUserVariableList",
"ColumnNameOrUserVarListOpt",
"ColumnSetValueList",
"CompareOp",
"ConnectionOptionList",
"ConstraintElem",
"continueKwd",
"CreateSequenceOptionListOpt",
"CreateTableSelectOpt",
"CreateViewSelectOpt",
"cursor",
"DatabaseOptionListOpt",
"DBNameList",
"DefaultOrExpressionList",
"DefaultValueExpr",
"DryRunOptions",
"dual",
"DynamicCalibrateOptionList",
"ElseOpt",
"EnforcedOrNotOrNotNullOpt",
"exit",
"ExpressionOpt",
"FetchFirstOpt",
"FieldAsName",
"FieldAsNameOpt",
"FieldItemList",
"FieldList",
"FirstAndLastPartOpt",
"FirstOrNext",
"FlushOption",
"FromDual",
"FulltextSearchModifierOpt",
"FuncDatetimePrec",
"GetFormatSelector",
"GlobalOrLocal",
"HandleRangeList",
"IdentListWithParenOpt",
"IgnoreLines",
"IlikeOrNotOp",
"ImportFromSelectStmt",
"IndexHintScope",
"IndexKeyTypeOpt",
"IndexPartSpecificationListOpt",
"IndexTypeOpt",
"InOrNotOp",
"InstanceOption",
"IntervalExpr",
"IsolationLevel",
"IsOrNotOp",
"leading",
"LikeOrNotOp",
"LikeTableWithOrWithoutParen",
"LinesTerminated",
"LoadDataOptionList",
"LoadDataSetList",
"LocalOpt",
"LockType",
"LogTypeOpt",
"LowPriorityOpt",
"Match",
"MatchOpt",
"MaxValPartOpt",
"MaxValueOrExpressionList",
"NullPartOpt",
"OnDeleteUpdateOpt",
"OnDuplicateKeyUpdate",
"OptBinMod",
"OptCharset",
"OptExistingWindowName",
"OptFromFirstLast",
"OptGConcatSeparator",
"OptionalShardColumn",
"OptPartitionClause",
"OptSpPdparams",
"OptTable",
"optValue",
"OptWindowFrameClause",
"OptWindowOrderByClause",
"Order",
"OrReplace",
"outfile",
"PartDefValuesOpt",
"PartitionKeyAlgorithmOpt",
"PartitionMethod",
"PartitionNumOpt",
"PlanReplayerDumpOpt",
"precisionType",
"PrepareSQL",
"procedurceElseIfs",
"ProcedureCall",
"ProcedureCursorSelectStmt",
"ProcedureDeclIdents",
"ProcedureDecls",
"ProcedureDeclsOpt",
"ProcedureFetchList",
"ProcedureHandlerType",
"ProcedureHcondList",
"ProcedureOptDefault",
"ProcedureOptFetchNo",
"ProcedureProcStmts",
"QueryWatchOptionList",
"recursive",
"RefreshObjectList",
"RefreshStatsClusterOpt",
"RefreshStatsMode",
"RefreshStatsModeOpt",
"RegexpOrNotOp",
"ReorganizePartitionRuleOpt",
"Replica",
"RequireList",
"ResourceGroupBackgroundOptionList",
"ResourceGroupPriorityOption",
"ResourceGroupRunawayOptionList",
"RoleSpecList",
"RowOrRows",
"SearchedWhenThenList",
"SelectStmtFieldList",
"SelectStmtOpts",
"SelectStmtOptsList",
"SequenceOptionList",
"SetOpr",
"SetRoleOpt",
"ShardableStmt",
"ShowIndexKwd",
"ShowLikeOrWhereOpt",
"ShowPlacementTarget",
"ShowProfileArgsOpt",
"ShowProfileTypes",
"ShowProfileTypesOpt",
"ShowTargetFilterable",
"SimpleWhenThenList",
"spatial",
"SplitSyntaxOption",
"SpPdparams",
"ssl",
"Start",
"Starting",
"starting",
"StatementList",
"StatementScope",
"StorageMedia",
"stored",
"StringList",
"StringNameOrBRIEOptionKeyword",
"SubPartDefinitionList",
"SubPartDefinitionListOpt",
"SubPartitionNumOpt",
"SubPartitionOpt",
"TableElementListOpt",
"TableLockList",
"TableRefsClause",
"TableSampleMethodOpt",
"TableSampleOpt",
"TableSampleUnitOpt",
"TableToTableList",
"TrafficCaptureOptList",
"TrafficReplayOptList",
"trailing",
"TrimDirection",
"UpdateIndexesList",
"UpdateIndexesOpt",
"UserToUserList",
"UserVariableList",
"UsingRoles",
"Values",
"ValuesOpt",
"ViewAlgorithm",
"ViewCheckOption",
"ViewDefiner",
"ViewFieldList",
"ViewName",
"ViewSQLSecurity",
"virtual",
"VirtualOrStored",
"WatchDurationOption",
"WhenClauseList",
"WindowClauseOptional",
"WindowDefinitionList",
"WindowFrameBetween",
"WindowFrameExtent",
"WindowFrameUnits",
"WindowNameOrSpec",
"WindowSpecDetails",
"WithReadLockOpt",
"WithRollupClause",
"WithValidation",
"WithValidationOpt",
"$default",
"andnot",
"createTableSelect",
"empty",
"error",
"higherThanComma",
"higherThanParenthese",
"insertValues",
"invalid",
"lowerThanCharsetKwd",
"lowerThanComma",
"lowerThanCreateTableSelect",
"lowerThanEq",
"lowerThanFunction",
"lowerThanInsertValues",
"lowerThanKey",
"lowerThanLocal",
"lowerThanNot",
"lowerThanOn",
"lowerThanParenthese",
"lowerThanRemove",
"lowerThanSelectOpt",
"lowerThanSelectStmt",
"lowerThanSetKeyword",
"lowerThanStringLitToken",
"lowerThanValueKeyword",
"lowerThanWith",
"lowerThenOrder",
"neg",
"odbcDateType",
"odbcTimestampType",
"odbcTimeType",
"tableRefPriority",
}
yyReductions = []struct{ xsym, components int }{
{0, 1},
{1527, 1},
{945, 6},
{945, 8},
{945, 10},
{945, 5},
{945, 7},
{945, 7},
{945, 9},
{1308, 1},
{1308, 2},
{1308, 3},
{1503, 1},
{1503, 1},
{1503, 1},
{1504, 1},
{1504, 2},
{1504, 3},
{1310, 1},
{1310, 1},
{1310, 1},
{1309, 1},
{1309, 1},
{1309, 1},
{1309, 4},
{1090, 3},
{1090, 3},
{1090, 3},
{1090, 3},
{1090, 4},
{1566, 0},
{1566, 3},
{1566, 3},
{1023, 3},
{1023, 3},
{1023, 3},
{1023, 1},
{1023, 3},
{1023, 3},
{1023, 3},
{1023, 5},
{1023, 4},
{1023, 3},
{1023, 5},
{1023, 4},
{1023, 3},
{1502, 1},
{1502, 2},
{1502, 3},
{1089, 3},
{1089, 3},
{1286, 1},
{1286, 2},
{1286, 3},
{1022, 3},
{1022, 3},
{1022, 3},
{1022, 3},
{1022, 3},
{1022, 3},
{1022, 3},
{1022, 3},
{1022, 3},
{1022, 3},
{1022, 3},
{1022, 3},
{906, 4},
{906, 4},
{906, 4},
{906, 4},
{1077, 3},
{1077, 3},
{1336, 3},
{1336, 3},
{1373, 1},
{1373, 2},
{1373, 4},
{1373, 8},
{1373, 8},
{1373, 3},
{1373, 3},
{1373, 2},
{1106, 0},
{1106, 3},
{1162, 1},
{1162, 5},
{1162, 6},
{1162, 5},
{1162, 5},
{1162, 5},
{1162, 6},
{1162, 2},
{1162, 5},
{1162, 6},
{1162, 8},
{1162, 8},
{1162, 1},
{1162, 1},
{1162, 3},
{1162, 4},
{1162, 5},
{1162, 3},
{1162, 4},
{1162, 8},
{1162, 4},
{1162, 7},
{1162, 3},
{1162, 4},
{1162, 4},
{1162, 4},
{1162, 4},
{1162, 2},
{1162, 2},
{1162, 4},
{1162, 4},
{1162, 4},
{1162, 3},
{1162, 2},
{1162, 2},
{1162, 5},
{1162, 6},
{1162, 6},
{1162, 8},
{1162, 5},
{1162, 5},
{1162, 3},
{1162, 3},
{1162, 3},
{1162, 5},
{1162, 1},
{1162, 1},
{1162, 1},
{1162, 1},
{1162, 2},
{1162, 2},
{1162, 1},
{1162, 1},
{1162, 4},
{1162, 3},
{1162, 4},
{1162, 1},
{1162, 1},
{1499, 0},
{1499, 5},
{974, 1},
{974, 1},
{1578, 0},
{1578, 1},
{1577, 2},
{1577, 2},
{973, 1},
{973, 1},
{1098, 0},
{1098, 1},
{1098, 1},
{1016, 3},
{1016, 3},
{1016, 3},
{1016, 3},
{1016, 3},
{1030, 3},
{1030, 3},
{1364, 2},
{1364, 2},
{970, 1},
{970, 1},
{1246, 0},
{1246, 1},
{1021, 0},
{1021, 1},
{1083, 0},
{1083, 1},
{1083, 2},
{1372, 0},
{1372, 1},
{1371, 1},
{1371, 3},
{900, 1},
{900, 3},
{977, 0},
{977, 1},
{977, 2},
{1342, 1},
{1304, 3},
{1546, 1},
{1546, 3},
{1347, 3},
{1305, 3},
{1553, 1},
{1553, 3},
{1356, 3},
{1299, 5},
{1299, 3},
{1299, 4},
{1228, 4},
{1228, 5},
{1228, 5},
{1228, 4},
{1228, 5},
{1228, 5},
{1226, 4},
{1227, 0},
{1227, 2},
{1225, 4},
{1199, 10},
{1199, 13},
{1171, 4},
{1329, 6},
{1329, 8},
{1131, 6},
{1131, 2},
{1524, 0},
{1524, 2},
{1524, 1},
{1524, 3},
{885, 6},
{885, 7},
{885, 8},
{885, 8},
{885, 9},
{885, 10},
{885, 9},
{885, 8},
{885, 7},
{885, 9},
{1152, 0},
{1152, 2},
{1152, 2},
{942, 0},
{942, 2},
{1374, 1},
{1374, 3},
{1164, 2},
{1164, 2},
{1164, 3},
{1164, 3},
{1164, 2},
{1164, 2},
{1043, 3},
{1076, 1},
{1076, 3},
{995, 1},
{995, 2},
{995, 2},
{995, 2},
{995, 4},
{995, 5},
{995, 6},
{995, 4},
{995, 5},
{1165, 2},
{1003, 3},
{1003, 3},
{861, 1},
{861, 3},
{861, 5},
{943, 1},
{943, 3},
{1174, 0},
{1174, 1},
{1428, 0},
{1428, 3},
{1026, 1},
{1026, 3},
{1393, 0},
{1393, 1},
{1392, 1},
{1392, 3},
{1175, 1},
{1175, 1},
{1176, 0},
{1176, 3},
{886, 1},
{886, 2},
{1118, 0},
{1118, 1},
{961, 1},
{961, 1},
{1093, 1},
{1093, 2},
{1219, 0},
{1219, 1},
{1411, 2},
{1411, 1},
{1082, 2},
{1082, 1},
{1082, 1},
{1082, 3},
{1082, 4},
{1082, 2},
{1082, 2},
{1082, 1},
{1082, 3},
{1082, 2},
{1082, 3},
{1082, 3},
{1082, 2},
{1082, 6},
{1082, 6},
{1082, 1},
{1082, 2},
{1082, 2},
{1082, 2},
{1082, 2},
{1082, 3},
{1381, 0},
{1381, 3},
{1381, 5},
{1532, 1},
{1532, 1},
{1532, 1},
{1390, 1},
{1390, 1},
{1390, 1},
{1097, 0},
{1097, 2},
{1565, 0},
{1565, 1},
{1565, 1},
{1177, 1},
{1177, 2},
{1178, 0},
{1178, 1},
{1397, 7},
{1397, 7},
{1397, 7},
{1397, 7},
{1397, 8},
{1397, 5},
{1451, 2},
{1451, 2},
{1451, 2},
{1452, 0},
{1452, 1},
{1062, 5},
{1266, 3},
{1267, 3},
{1456, 0},
{1456, 1},
{1456, 1},
{1456, 2},
{1456, 2},
{1300, 1},
{1300, 1},
{1300, 2},
{1300, 2},
{1300, 2},
{1406, 1},
{1406, 1},
{1406, 1},
{1406, 1},
{1406, 3},
{1406, 3},
{1018, 3},
{1018, 3},
{1018, 4},
{1018, 4},
{1109, 3},
{1109, 1},
{1056, 1},
{1056, 3},
{1056, 4},
{1056, 3},
{1056, 1},
{1108, 3},
{1108, 1},
{820, 4},
{820, 4},
{1055, 1},
{1055, 1},
{1055, 1},
{1055, 1},
{1054, 1},
{1054, 1},
{1054, 1},
{1051, 1},
{1051, 1},
{1038, 1},
{1038, 2},
{1038, 2},
{952, 1},
{952, 1},
{952, 1},
{1338, 1},
{1338, 1},
{1338, 1},
{1384, 1},
{1384, 1},
{1191, 12},
{1210, 3},
{1185, 13},
{1434, 0},
{1434, 3},
{959, 1},
{959, 3},
{949, 3},
{949, 4},
{1242, 0},
{1242, 1},
{1242, 1},
{1242, 2},
{1242, 2},
{1433, 0},
{1433, 1},
{1433, 1},
{1433, 1},
{1433, 1},
{1433, 1},
{1153, 4},
{1153, 3},
{1184, 5},
{947, 1},
{1034, 1},
{962, 1},
{962, 1},
{1004, 4},
{1004, 4},
{1004, 4},
{1004, 2},
{1004, 1},
{1004, 5},
{1403, 0},
{1403, 1},
{1086, 1},
{1086, 2},
{1085, 12},
{1085, 7},
{1265, 0},
{1265, 4},
{1265, 4},
{933, 0},
{933, 1},
{1282, 0},
{1282, 7},
{1426, 1},
{1426, 1},
{1355, 2},
{1551, 1},
{1551, 3},
{1552, 0},
{1552, 5},
{1341, 6},
{1341, 5},
{1474, 0},
{1474, 3},
{1475, 1},
{1475, 5},
{1475, 6},
{1475, 4},
{1475, 5},
{1475, 4},
{1475, 3},
{1475, 1},
{1281, 0},
{1281, 7},
{1438, 1},
{1438, 2},
{1455, 0},
{1455, 2},
{1453, 0},
{1453, 2},
{1419, 0},
{1419, 14},
{1252, 0},
{1252, 1},
{1539, 0},
{1539, 4},
{1538, 0},
{1538, 2},
{1476, 0},
{1476, 2},
{1280, 0},
{1280, 3},
{1279, 1},
{1279, 3},
{1115, 5},
{1537, 0},
{1537, 3},
{1536, 1},
{1536, 3},
{1340, 3},
{1114, 0},
{1114, 2},
{954, 3},
{954, 3},
{954, 4},
{954, 3},
{954, 3},
{954, 3},
{954, 4},
{954, 4},
{954, 3},
{954, 3},
{954, 3},
{954, 3},
{954, 1},
{1473, 0},
{1473, 4},
{1473, 6},
{1473, 1},
{1473, 5},
{1473, 1},
{1473, 1},
{1215, 0},
{1215, 1},
{1215, 1},
{1378, 0},
{1378, 1},
{1400, 0},
{1400, 1},
{1400, 1},
{1400, 1},
{1400, 1},
{1401, 1},
{1401, 1},
{1401, 1},
{1401, 1},
{1443, 2},
{1443, 4},
{1194, 11},
{1471, 0},
{1471, 2},
{1558, 0},
{1558, 3},
{1558, 3},
{1558, 3},
{1560, 0},
{1560, 3},
{1563, 0},
{1563, 3},
{1563, 3},
{1562, 1},
{1561, 0},
{1561, 3},
{1391, 1},
{1391, 3},
{1559, 0},
{1559, 4},
{1559, 4},
{1200, 2},
{863, 13},
{863, 9},
{875, 10},
{879, 1},
{879, 1},
{879, 2},
{879, 2},
{978, 1},
{1202, 4},
{1203, 7},
{1203, 7},
{1212, 6},
{1113, 0},
{1113, 1},
{1113, 2},
{1214, 4},
{1214, 6},
{1213, 3},
{1213, 5},
{1208, 3},
{1208, 5},
{1211, 3},
{1211, 5},
{1211, 4},
{1063, 0},
{1063, 1},
{1063, 1},
{1136, 1},
{1136, 1},
{840, 0},
{840, 1},
{1217, 0},
{1349, 2},
{1349, 5},
{1349, 3},
{1349, 6},
{898, 1},
{898, 1},
{898, 1},
{897, 3},
{897, 3},
{897, 4},
{897, 4},
{897, 2},
{897, 3},
{897, 2},
{897, 2},
{897, 4},
{897, 7},
{897, 5},
{897, 7},
{897, 5},
{897, 5},
{897, 5},
{897, 3},
{897, 3},
{897, 6},
{897, 6},
{897, 6},
{897, 6},
{1221, 1},
{1221, 1},
{1221, 1},
{1221, 1},
{1221, 1},
{1221, 1},
{1221, 1},
{1221, 1},
{1014, 2},
{1012, 3},
{1166, 5},
{1166, 5},
{1166, 3},
{1166, 4},
{1166, 3},
{1166, 6},
{1166, 4},
{1166, 6},
{1166, 4},
{1166, 5},
{1166, 4},
{1166, 5},
{1166, 5},
{1166, 5},
{1167, 2},
{1167, 2},
{1167, 2},
{1404, 1},
{1404, 3},
{1000, 0},
{1000, 2},
{997, 1},
{997, 1},
{997, 1},
{997, 1},
{996, 1},
{996, 1},
{996, 1},
{996, 1},
{996, 1},
{996, 1},
{996, 1},
{996, 1},
{996, 1},
{996, 1},
{996, 1},
{996, 1},
{1001, 1},
{1001, 1},
{1001, 1},
{1001, 1},
{1001, 1},
{1001, 1},
{1001, 1},
{998, 1},
{998, 1},
{998, 2},
{999, 3},
{999, 3},
{999, 3},
{999, 3},
{999, 5},
{999, 3},
{999, 3},
{999, 3},
{999, 3},
{999, 6},
{999, 3},
{999, 3},
{999, 3},
{999, 3},
{999, 3},
{999, 3},
{999, 3},
{999, 3},
{999, 3},
{999, 3},
{999, 3},
{854, 1},
{865, 1},
{839, 1},
{1017, 1},
{1017, 1},
{1017, 1},
{1273, 1},
{1273, 1},
{1273, 1},
{1172, 4},
{838, 3},
{838, 3},
{838, 3},
{838, 3},
{838, 2},
{838, 9},
{838, 3},
{838, 3},
{838, 3},
{838, 1},
{1198, 1},
{1198, 1},
{1260, 1},
{1260, 1},
{1423, 0},
{1423, 4},
{1423, 7},
{1423, 3},
{1423, 3},
{842, 1},
{842, 1},
{841, 1},
{841, 1},
{894, 1},
{894, 3},
{1454, 1},
{1454, 3},
{1405, 1},
{1405, 3},
{958, 0},
{958, 1},
{1232, 0},
{1232, 1},
{1231, 1},
{837, 3},
{837, 3},
{837, 4},
{837, 5},
{837, 1},
{1395, 1},
{1395, 1},
{1395, 1},
{1395, 1},
{1395, 1},
{1395, 1},
{1395, 1},
{1395, 1},
{1383, 1},
{1383, 2},
{1440, 1},
{1440, 2},
{1436, 1},
{1436, 2},
{1442, 1},
{1442, 2},
{1430, 1},
{1430, 2},
{1498, 1},
{1498, 2},
{1375, 1},
{1375, 1},
{1375, 1},
{836, 5},
{836, 3},
{836, 5},
{836, 4},
{836, 4},
{836, 3},
{836, 5},
{836, 1},
{1303, 1},
{1303, 1},
{1249, 0},
{1249, 2},
{1222, 1},
{1222, 3},
{1222, 5},
{1222, 2},
{1416, 0},
{1416, 1},
{1415, 1},
{1415, 2},
{1415, 1},
{1415, 2},
{1418, 1},
{1418, 3},
{1576, 0},
{1576, 2},
{1100, 4},
{1238, 0},
{1238, 2},
{1377, 0},
{1377, 1},
{1042, 3},
{899, 0},
{899, 2},
{904, 0},
{904, 3},
{1008, 0},
{1008, 1},
{981, 0},
{981, 1},
{983, 0},
{983, 2},
{982, 3},
{982, 1},
{982, 1},
{982, 3},
{982, 2},
{982, 1},
{982, 1},
{982, 1},
{982, 1},
{982, 5},
{982, 3},
{982, 3},
{982, 2},
{1027, 1},
{1027, 3},
{1027, 3},
{1435, 0},
{1435, 1},
{969, 2},
{969, 2},
{1053, 1},
{1053, 1},
{1053, 1},
{1053, 1},
{1053, 1},
{1053, 1},
{968, 1},
{968, 1},
{811, 1},
{811, 1},
{811, 1},
{811, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{814, 1},
{813, 1},
{813, 1},
{813, 1},
{813, 1},
{813, 1},
{813, 1},
{813, 1},
{813, 1},
{813, 1},
{813, 1},
{813, 1},
{813, 1},
{813, 1},
{813, 1},
{813, 1},
{813, 1},
{813, 1},
{813, 1},
{813, 1},
{813, 1},
{813, 1},
{813, 1},
{813, 1},
{813, 1},
{813, 1},
{813, 1},
{813, 1},
{813, 1},
{813, 1},
{813, 1},
{813, 1},
{813, 1},
{813, 1},
{813, 1},
{813, 1},
{813, 1},
{813, 1},
{813, 1},
{813, 1},
{813, 1},
{813, 1},
{813, 1},
{813, 1},
{813, 1},
{813, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{812, 1},
{1170, 2},
{1481, 1},
{1481, 3},
{1481, 4},
{1481, 6},
{864, 9},
{1245, 0},
{1245, 1},
{1244, 5},
{1244, 4},
{1244, 4},
{1244, 4},
{1244, 4},
{1244, 2},
{1244, 1},
{1244, 1},
{1244, 1},
{1244, 1},
{1244, 2},
{1146, 1},
{1146, 1},
{1144, 1},
{1144, 3},
{989, 3},
{1557, 0},
{1557, 1},
{1556, 3},
{1556, 1},
{932, 1},
{932, 1},
{1394, 3},
{1394, 5},
{1457, 0},
{1457, 5},
{866, 7},
{817, 1},
{817, 1},
{817, 1},
{817, 1},
{817, 1},
{817, 1},
{817, 1},
{817, 2},
{817, 1},
{817, 1},
{817, 2},
{817, 2},
{818, 1},
{818, 2},
{1369, 1},
{1369, 3},
{1156, 2},
{882, 3},
{1045, 1},
{1045, 3},
{1019, 1},
{1019, 2},
{1470, 1},
{1470, 1},
{1112, 0},
{1112, 1},
{1112, 1},
{953, 0},
{953, 1},
{835, 3},
{835, 3},
{835, 3},
{835, 3},
{835, 3},
{835, 3},
{835, 5},
{835, 5},
{835, 5},
{835, 3},
{835, 3},
{835, 3},
{835, 3},
{835, 3},
{835, 3},
{835, 1},
{819, 1},
{819, 3},
{819, 5},
{830, 1},
{830, 1},
{830, 1},
{830, 1},
{830, 3},
{830, 1},
{830, 1},
{830, 1},
{830, 1},
{830, 1},
{830, 2},
{830, 2},
{830, 2},
{830, 2},
{830, 3},
{830, 2},
{830, 1},
{830, 3},
{830, 5},
{830, 6},
{830, 2},
{830, 4},
{830, 2},
{830, 7},
{830, 7},
{830, 5},
{830, 6},
{830, 6},
{830, 4},
{830, 4},
{830, 3},
{830, 3},
{1376, 0},
{1376, 1},
{926, 1},
{926, 1},
{930, 1},
{930, 1},
{957, 0},
{957, 1},
{1088, 0},
{1088, 1},
{956, 1},
{956, 2},
{824, 1},
{824, 1},
{824, 1},
{824, 1},
{824, 1},
{824, 1},
{824, 1},
{824, 1},
{824, 1},
{824, 1},
{824, 1},
{824, 1},
{824, 1},
{824, 1},
{824, 1},
{824, 1},
{824, 1},
{824, 1},
{824, 1},
{824, 1},
{824, 1},
{824, 1},
{824, 1},
{824, 1},
{824, 1},
{824, 1},
{824, 1},
{824, 1},
{824, 1},
{824, 1},
{824, 1},
{1272, 0},
{1272, 2},
{828, 1},
{828, 1},
{828, 1},
{828, 1},
{828, 1},
{827, 1},
{827, 1},
{827, 1},
{827, 1},
{827, 1},
{827, 1},
{822, 4},
{822, 4},
{822, 2},
{822, 3},
{822, 2},
{822, 4},
{822, 6},
{822, 2},
{822, 2},
{822, 2},
{822, 4},
{822, 6},
{822, 4},
{823, 4},
{823, 4},
{823, 6},
{823, 8},
{823, 8},
{823, 6},
{823, 6},
{823, 6},
{823, 6},
{823, 6},
{823, 8},
{823, 8},
{823, 8},
{823, 8},
{823, 4},
{823, 6},
{823, 6},
{823, 7},
{823, 4},
{823, 7},
{823, 7},
{823, 1},
{823, 8},
{823, 4},
{1425, 1},
{1425, 1},
{1425, 1},
{1425, 1},
{825, 1},
{825, 1},
{826, 1},
{826, 1},
{1550, 1},
{1550, 1},
{1550, 1},
{829, 4},
{829, 6},
{829, 1},
{831, 6},
{831, 4},
{831, 4},
{831, 5},
{831, 6},
{831, 5},
{831, 6},
{831, 5},
{831, 6},
{831, 5},
{831, 6},
{831, 5},
{831, 5},
{831, 8},
{831, 6},
{831, 6},
{831, 6},
{831, 6},
{831, 6},
{831, 6},
{831, 6},
{831, 5},
{831, 6},
{831, 7},
{831, 8},
{831, 8},
{831, 9},
{1462, 0},
{1462, 2},
{821, 4},
{821, 6},
{1424, 0},
{1424, 2},
{1424, 3},
{941, 1},
{941, 1},
{941, 1},
{941, 1},
{941, 1},
{941, 1},
{941, 1},
{941, 1},
{941, 1},
{941, 1},
{941, 1},
{941, 1},
{927, 1},
{927, 1},
{927, 1},
{927, 1},
{927, 1},
{927, 1},
{927, 1},
{927, 1},
{927, 1},
{927, 1},
{927, 1},
{927, 1},
{927, 1},
{927, 1},
{927, 1},
{927, 1},
{927, 1},
{1413, 0},
{1413, 1},
{1567, 1},
{1567, 2},
{1358, 4},
{1410, 0},
{1410, 2},
{1081, 2},
{1081, 3},
{1081, 1},
{1081, 1},
{1081, 2},
{1081, 2},
{1081, 2},
{1081, 2},
{1081, 2},
{1081, 1},
{1081, 1},
{1081, 2},
{1081, 1},
{1081, 3},
{986, 1},
{986, 1},
{986, 1},
{1035, 0},
{1035, 1},
{844, 1},
{844, 3},
{844, 3},
{924, 1},
{924, 3},
{1068, 2},
{1068, 4},
{1134, 1},
{1134, 3},
{1059, 0},
{1059, 2},
{1295, 0},
{1295, 1},
{1288, 4},
{1479, 1},
{1479, 1},
{1220, 2},
{1220, 4},
{1554, 1},
{1554, 3},
{1196, 3},
{1197, 1},
{1197, 1},
{887, 1},
{887, 2},
{887, 3},
{887, 4},
{1180, 4},
{1180, 4},
{1180, 5},
{1180, 2},
{1180, 3},
{1180, 1},
{1180, 2},
{1327, 1},
{1311, 1},
{1239, 2},
{847, 4},
{848, 3},
{849, 7},
{1544, 0},
{1544, 7},
{1544, 5},
{1543, 0},
{1543, 1},
{1543, 1},
{1543, 1},
{1545, 0},
{1545, 1},
{1545, 1},
{1306, 0},
{1306, 4},
{846, 7},
{846, 6},
{846, 5},
{846, 6},
{846, 6},
{857, 2},
{857, 2},
{856, 2},
{856, 3},
{1363, 3},
{1363, 1},
{1084, 4},
{1422, 2},
{1568, 0},
{1568, 2},
{1569, 1},
{1569, 3},
{1359, 3},
{1075, 1},
{1361, 3},
{1574, 4},
{1460, 0},
{1460, 1},
{1464, 0},
{1464, 3},
{1469, 0},
{1469, 3},
{1468, 0},
{1468, 2},
{1572, 1},
{1572, 1},
{1572, 1},
{1571, 1},
{1571, 1},
{1148, 2},
{1148, 2},
{1148, 2},
{1148, 4},
{1148, 2},
{1570, 4},
{1360, 1},
{1360, 2},
{1360, 2},
{1360, 2},
{1360, 4},
{884, 0},
{884, 1},
{873, 2},
{1573, 1},
{1573, 1},
{834, 4},
{834, 4},
{834, 4},
{834, 4},
{834, 4},
{834, 5},
{834, 7},
{834, 7},
{834, 6},
{834, 6},
{834, 9},
{1274, 0},
{1274, 3},
{1274, 3},
{1275, 0},
{1275, 2},
{1033, 0},
{1033, 2},
{1033, 2},
{1461, 0},
{1461, 2},
{1461, 2},
{1542, 1},
{1040, 1},
{1040, 3},
{1005, 1},
{1005, 4},
{940, 1},
{940, 1},
{939, 6},
{939, 2},
{939, 3},
{985, 0},
{985, 4},
{1067, 0},
{1067, 1},
{1066, 1},
{1066, 2},
{1102, 2},
{1102, 2},
{1102, 2},
{1432, 0},
{1432, 2},
{1432, 3},
{1432, 3},
{1101, 5},
{1009, 0},
{1009, 1},
{1009, 3},
{1009, 1},
{1009, 3},
{1240, 1},
{1240, 2},
{1241, 0},
{1241, 1},
{934, 3},
{934, 5},
{934, 7},
{934, 7},
{934, 9},
{934, 4},
{934, 6},
{934, 3},
{934, 5},
{934, 7},
{960, 1},
{960, 1},
{1278, 0},
{1278, 1},
{966, 1},
{966, 2},
{966, 2},
{1250, 0},
{1250, 2},
{1029, 1},
{1029, 1},
{1506, 1},
{1506, 1},
{1420, 1},
{1420, 1},
{1414, 0},
{1414, 1},
{883, 2},
{883, 4},
{883, 4},
{883, 5},
{971, 0},
{971, 1},
{1318, 1},
{1318, 1},
{1318, 1},
{1318, 1},
{1318, 1},
{1318, 1},
{1318, 1},
{1318, 1},
{1318, 1},
{1509, 0},
{1509, 1},
{1510, 2},
{1510, 1},
{992, 1},
{1039, 0},
{1039, 1},
{1319, 1},
{1319, 1},
{1508, 1},
{1129, 0},
{1129, 1},
{1037, 0},
{1037, 5},
{815, 3},
{815, 3},
{815, 3},
{815, 3},
{1036, 0},
{1036, 3},
{1036, 3},
{1036, 4},
{1036, 5},
{1036, 4},
{1036, 5},
{1036, 5},
{1036, 4},
{1264, 0},
{1264, 2},
{858, 1},
{858, 1},
{858, 2},
{858, 2},
{853, 3},
{853, 3},
{852, 4},
{852, 4},
{852, 5},
{852, 2},
{852, 2},
{852, 3},
{851, 1},
{851, 3},
{850, 1},
{850, 1},
{1512, 2},
{1512, 2},
{1512, 2},
{1130, 1},
{888, 2},
{888, 4},
{888, 6},
{888, 4},
{888, 4},
{888, 3},
{888, 6},
{888, 6},
{888, 3},
{888, 4},
{1323, 3},
{1322, 6},
{1321, 1},
{1321, 1},
{1321, 1},
{1513, 3},
{1513, 1},
{1513, 1},
{1138, 1},
{1138, 3},
{1072, 3},
{1072, 2},
{1072, 2},
{1072, 3},
{1439, 2},
{1439, 2},
{1439, 2},
{1439, 1},
{972, 1},
{972, 1},
{972, 1},
{931, 1},
{931, 1},
{965, 1},
{965, 3},
{1046, 1},
{1046, 3},
{1046, 3},
{1147, 3},
{1147, 4},
{1147, 4},
{1147, 4},
{1147, 4},
{1147, 3},
{1147, 3},
{1147, 2},
{1147, 4},
{1147, 4},
{1147, 2},
{1147, 2},
{1388, 1},
{1388, 1},
{946, 1},
{946, 1},
{1020, 1},
{1020, 1},
{1357, 1},
{1357, 3},
{833, 1},
{833, 1},
{832, 1},
{816, 1},
{895, 1},
{895, 3},
{895, 2},
{895, 2},
{1015, 1},
{1015, 3},
{1283, 1},
{1283, 4},
{1044, 1},
{964, 1},
{964, 1},
{938, 3},
{938, 2},
{1127, 1},
{1127, 1},
{963, 1},
{963, 1},
{1013, 1},
{1013, 3},
{1367, 2},
{1367, 4},
{1367, 4},
{1382, 1},
{1382, 1},
{1151, 3},
{1151, 5},
{1151, 6},
{1151, 4},
{1151, 4},
{1151, 5},
{1151, 5},
{1151, 4},
{1151, 5},
{1151, 6},
{1151, 4},
{1151, 5},
{1151, 5},
{1151, 5},
{1151, 6},
{1151, 6},
{1151, 4},
{1151, 3},
{1151, 3},
{1151, 4},
{1151, 4},
{1151, 5},
{1151, 5},
{1151, 3},
{1151, 3},
{1151, 3},
{1151, 3},
{1151, 3},
{1151, 3},
{1151, 4},
{1151, 5},
{1151, 4},
{1151, 4},
{1151, 6},
{1368, 1},
{1368, 3},
{1155, 3},
{1366, 2},
{1366, 2},
{1366, 3},
{1366, 3},
{1427, 1},
{1427, 3},
{1236, 5},
{1057, 1},
{1057, 3},
{1325, 3},
{1325, 4},
{1325, 4},
{1325, 5},
{1325, 4},
{1325, 5},
{1325, 5},
{1325, 4},
{1325, 6},
{1325, 4},
{1325, 8},
{1325, 2},
{1325, 5},
{1325, 3},
{1325, 4},
{1325, 3},
{1325, 3},
{1325, 2},
{1325, 5},
{1325, 2},
{1325, 2},
{1325, 4},
{1325, 4},
{1325, 4},
{1325, 4},
{1325, 6},
{1517, 2},
{1517, 2},
{1517, 4},
{1520, 0},
{1520, 1},
{1519, 1},
{1519, 3},
{1324, 1},
{1324, 1},
{1324, 2},
{1324, 2},
{1324, 2},
{1324, 1},
{1324, 1},
{1324, 1},
{1324, 1},
{1518, 0},
{1518, 3},
{1555, 0},
{1555, 2},
{1515, 1},
{1515, 1},
{1515, 1},
{944, 1},
{944, 1},
{1521, 1},
{1521, 1},
{1521, 1},
{1521, 1},
{1521, 3},
{1521, 3},
{1521, 3},
{1521, 3},
{1521, 5},
{1521, 4},
{1521, 5},
{1521, 5},
{1521, 1},
{1521, 5},
{1521, 1},
{1521, 2},
{1521, 2},
{1521, 2},
{1521, 1},
{1521, 2},
{1521, 2},
{1521, 2},
{1521, 2},
{1521, 2},
{1521, 1},
{1521, 1},
{1521, 1},
{1521, 1},
{1521, 1},
{1521, 1},
{1521, 1},
{1521, 1},
{1521, 1},
{1521, 1},
{1521, 1},
{1521, 2},
{1521, 1},
{1521, 1},
{1521, 1},
{1521, 2},
{1521, 2},
{1521, 3},
{1521, 2},
{1521, 2},
{1516, 0},
{1516, 2},
{1516, 2},
{1099, 0},
{1099, 1},
{1099, 1},
{1531, 0},
{1531, 1},
{1531, 1},
{1531, 1},
{1269, 0},
{1269, 1},
{991, 0},
{991, 2},
{1326, 2},
{1500, 1},
{1500, 1},
{1229, 3},
{1117, 1},
{1117, 3},
{1421, 1},
{1421, 1},
{1421, 3},
{1421, 1},
{1421, 2},
{1421, 3},
{1421, 1},
{1449, 0},
{1449, 1},
{1449, 1},
{1449, 1},
{1449, 1},
{1449, 1},
{951, 0},
{951, 1},
{951, 1},
{1345, 0},
{1345, 1},
{1575, 0},
{1575, 3},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1335, 1},
{1071, 1},
{1071, 1},
{1071, 1},
{1071, 1},
{1071, 1},
{1071, 1},
{1071, 1},
{1071, 1},
{1071, 1},
{1071, 1},
{1071, 1},
{1071, 1},
{1071, 1},
{1071, 1},
{1071, 1},
{1071, 1},
{967, 1},
{967, 1},
{967, 1},
{967, 1},
{967, 1},
{967, 1},
{967, 1},
{967, 1},
{967, 1},
{967, 1},
{1530, 1},
{1530, 3},
{1047, 2},
{1049, 8},
{1048, 8},
{1050, 1},
{1050, 1},
{1050, 1},
{1173, 1},
{1173, 1},
{1135, 1},
{1135, 1},
{1343, 1},
{1343, 3},
{1540, 0},
{1540, 3},
{993, 1},
{993, 4},
{993, 4},
{993, 4},
{993, 3},
{993, 4},
{993, 3},
{993, 3},
{993, 3},
{993, 3},
{993, 3},
{993, 3},
{993, 3},
{993, 3},
{993, 1},
{993, 3},
{993, 3},
{993, 3},
{993, 3},
{993, 3},
{993, 3},
{993, 3},
{993, 3},
{993, 3},
{993, 3},
{993, 3},
{993, 3},
{993, 3},
{993, 2},
{993, 2},
{993, 3},
{993, 3},
{993, 5},
{993, 3},
{993, 7},
{993, 3},
{993, 3},
{980, 0},
{980, 1},
{1337, 1},
{1337, 1},
{1192, 0},
{1192, 1},
{1069, 1},
{1069, 2},
{1069, 3},
{1466, 0},
{1466, 1},
{901, 3},
{988, 3},
{988, 3},
{988, 3},
{988, 3},
{988, 3},
{988, 3},
{988, 3},
{988, 3},
{988, 3},
{988, 3},
{988, 3},
{988, 3},
{988, 3},
{988, 3},
{988, 3},
{1140, 1},
{1140, 1},
{1140, 1},
{1110, 3},
{1110, 2},
{1110, 3},
{1110, 3},
{1110, 2},
{1103, 1},
{1103, 1},
{1103, 1},
{1103, 1},
{1103, 1},
{1103, 1},
{1103, 1},
{1103, 1},
{1103, 1},
{1103, 1},
{1103, 1},
{1103, 1},
{1080, 1},
{1080, 1},
{1271, 0},
{1271, 1},
{1271, 1},
{1095, 1},
{1095, 1},
{1095, 1},
{1096, 1},
{1096, 1},
{1096, 1},
{1096, 2},
{1096, 1},
{1096, 1},
{1078, 1},
{1133, 3},
{1133, 2},
{1133, 3},
{1133, 2},
{1133, 3},
{1133, 3},
{1133, 2},
{1133, 2},
{1133, 1},
{1133, 2},
{1133, 5},
{1133, 5},
{1133, 1},
{1133, 3},
{1133, 2},
{1133, 3},
{976, 1},
{976, 1},
{1107, 1},
{1107, 2},
{1107, 2},
{1074, 2},
{1074, 2},
{1074, 1},
{1074, 1},
{1111, 2},
{1111, 2},
{1111, 1},
{1111, 2},
{1111, 2},
{1111, 3},
{1111, 3},
{1111, 2},
{1149, 1},
{1149, 1},
{1079, 1},
{1079, 2},
{1079, 1},
{1079, 1},
{1079, 2},
{1137, 1},
{1137, 2},
{1137, 1},
{1137, 1},
{1031, 1},
{1031, 1},
{1031, 1},
{1031, 1},
{1087, 1},
{1087, 2},
{1087, 2},
{1087, 2},
{1087, 3},
{881, 3},
{925, 0},
{925, 1},
{1024, 1},
{1024, 1},
{1024, 1},
{1025, 0},
{1025, 2},
{1052, 0},
{1052, 1},
{1052, 1},
{1061, 5},
{1458, 0},
{1458, 1},
{1276, 0},
{1276, 3},
{1276, 3},
{936, 0},
{936, 2},
{936, 3},
{1459, 0},
{1459, 2},
{893, 2},
{893, 1},
{893, 2},
{1268, 0},
{1268, 2},
{1534, 1},
{1534, 3},
{1070, 1},
{1070, 1},
{1070, 1},
{1348, 1},
{1348, 3},
{845, 1},
{845, 1},
{1535, 1},
{1535, 1},
{1535, 1},
{867, 1},
{867, 2},
{862, 10},
{862, 8},
{902, 2},
{928, 2},
{929, 0},
{929, 1},
{1193, 9},
{1189, 4},
{1163, 9},
{1163, 9},
{1154, 3},
{1158, 4},
{1437, 2},
{1437, 6},
{1041, 2},
{1073, 1},
{1073, 3},
{1182, 0},
{1182, 2},
{1396, 1},
{1396, 2},
{1181, 2},
{1181, 2},
{1181, 2},
{1181, 2},
{1125, 0},
{1125, 1},
{1124, 2},
{1124, 2},
{1124, 2},
{1124, 2},
{1501, 1},
{1501, 3},
{1501, 2},
{1126, 2},
{1126, 2},
{1126, 2},
{1126, 2},
{1126, 2},
{1179, 0},
{1179, 2},
{1179, 2},
{1307, 0},
{1307, 3},
{1285, 0},
{1285, 1},
{1284, 1},
{1284, 2},
{1116, 2},
{1116, 2},
{1116, 3},
{1116, 3},
{1116, 4},
{1116, 5},
{1116, 2},
{1116, 5},
{1116, 3},
{1116, 3},
{1116, 2},
{1116, 2},
{1116, 2},
{1116, 4},
{1379, 0},
{1379, 3},
{1379, 3},
{1379, 5},
{1379, 5},
{1379, 4},
{1380, 1},
{1237, 1},
{1237, 1},
{1316, 1},
{1505, 1},
{1505, 3},
{975, 1},
{975, 1},
{975, 1},
{975, 1},
{975, 1},
{975, 1},
{975, 1},
{975, 1},
{1183, 7},
{1183, 5},
{1183, 9},
{1339, 1},
{1339, 3},
{1132, 1},
{1132, 1},
{1201, 5},
{1201, 7},
{1201, 7},
{1320, 5},
{1320, 7},
{1320, 7},
{1298, 6},
{1298, 4},
{1298, 4},
{1298, 4},
{1298, 4},
{1298, 4},
{1297, 0},
{1297, 2},
{1296, 1},
{1296, 3},
{1123, 3},
{1235, 9},
{1233, 7},
{1234, 4},
{1362, 0},
{1362, 3},
{1362, 3},
{1362, 3},
{1362, 3},
{1362, 3},
{1094, 1},
{1094, 2},
{1128, 1},
{1128, 1},
{1128, 1},
{1128, 3},
{1128, 3},
{1315, 1},
{1315, 3},
{1119, 1},
{1119, 4},
{1120, 1},
{1120, 2},
{1120, 1},
{1120, 1},
{1120, 2},
{1120, 2},
{1120, 1},
{1120, 1},
{1120, 1},
{1120, 1},
{1120, 1},
{1120, 1},
{1120, 1},
{1120, 1},
{1120, 1},
{1120, 2},
{1120, 1},
{1120, 2},
{1120, 1},
{1120, 2},
{1120, 2},
{1120, 1},
{1120, 1},
{1120, 1},
{1120, 1},
{1120, 3},
{1120, 2},
{1120, 2},
{1120, 2},
{1120, 2},
{1120, 2},
{1120, 2},
{1120, 2},
{1120, 1},
{1120, 1},
{1262, 0},
{1262, 1},
{1262, 1},
{1262, 1},
{1289, 1},
{1289, 3},
{1289, 3},
{1289, 3},
{1289, 1},
{1314, 7},
{1313, 4},
{1010, 18},
{1450, 0},
{1450, 1},
{1230, 0},
{1230, 2},
{1429, 0},
{1429, 3},
{1389, 0},
{1389, 3},
{1447, 0},
{1447, 1},
{1224, 0},
{1224, 2},
{979, 1},
{979, 1},
{1417, 2},
{1417, 1},
{1223, 3},
{1223, 2},
{1223, 3},
{1223, 3},
{1223, 4},
{1223, 6},
{1006, 1},
{1006, 1},
{1006, 1},
{1253, 0},
{1253, 3},
{1528, 0},
{1528, 3},
{1444, 0},
{1444, 3},
{1256, 0},
{1256, 2},
{1446, 3},
{1446, 1},
{1255, 3},
{1105, 0},
{1105, 2},
{1445, 1},
{1445, 3},
{1254, 1},
{1254, 3},
{948, 9},
{948, 8},
{1431, 1},
{1431, 1},
{1431, 1},
{1431, 1},
{1354, 2},
{1259, 3},
{1346, 1},
{1346, 1},
{1344, 2},
{1448, 1},
{1448, 2},
{1448, 1},
{1448, 2},
{1541, 1},
{1541, 3},
{1261, 6},
{1514, 1},
{1514, 1},
{1514, 1},
{1514, 1},
{1407, 0},
{1407, 2},
{1407, 3},
{1463, 0},
{1463, 2},
{1270, 4},
{1248, 2},
{1248, 3},
{1248, 3},
{1248, 2},
{1247, 1},
{1247, 2},
{1257, 3},
{1258, 3},
{1258, 5},
{1258, 7},
{1353, 3},
{1353, 5},
{1353, 7},
{1302, 5},
{1494, 1},
{1494, 3},
{1497, 0},
{1497, 1},
{1496, 1},
{1496, 1},
{1495, 0},
{1495, 1},
{1301, 3},
{1301, 3},
{1301, 3},
{1301, 1},
{1204, 5},
{1188, 6},
{1159, 6},
{1207, 5},
{1186, 7},
{1157, 6},
{1190, 6},
{1399, 0},
{1399, 1},
{1511, 1},
{1511, 2},
{1065, 3},
{1065, 3},
{1065, 3},
{1065, 3},
{1065, 3},
{1065, 1},
{1065, 2},
{1065, 3},
{1065, 1},
{1065, 2},
{1065, 3},
{1065, 1},
{1065, 2},
{1065, 1},
{1065, 1},
{1065, 2},
{955, 1},
{955, 2},
{955, 2},
{1209, 4},
{1161, 5},
{1370, 1},
{1370, 2},
{1160, 1},
{1160, 1},
{1160, 3},
{1160, 3},
{1218, 1},
{1145, 1},
{1145, 3},
{1064, 2},
{1287, 6},
{1287, 7},
{1287, 10},
{1287, 11},
{1287, 6},
{1287, 7},
{1287, 4},
{1287, 5},
{1287, 6},
{1477, 0},
{1477, 3},
{1352, 5},
{1352, 5},
{1352, 3},
{1352, 3},
{1547, 1},
{1547, 2},
{1350, 3},
{1350, 3},
{1350, 3},
{1548, 1},
{1548, 2},
{1351, 3},
{1351, 3},
{1351, 3},
{1351, 3},
{1465, 0},
{1465, 1},
{1525, 3},
{1525, 1},
{1331, 3},
{1330, 0},
{1330, 1},
{1330, 1},
{1330, 1},
{921, 1},
{921, 1},
{921, 1},
{921, 1},
{921, 1},
{921, 1},
{921, 1},
{921, 1},
{921, 1},
{921, 1},
{921, 1},
{921, 1},
{921, 1},
{921, 1},
{921, 1},
{1482, 1},
{1482, 1},
{1482, 1},
{1482, 1},
{922, 1},
{1483, 1},
{1483, 3},
{1489, 0},
{1489, 2},
{1292, 4},
{1292, 5},
{1292, 6},
{1487, 1},
{1487, 1},
{1488, 1},
{1488, 3},
{1293, 1},
{1293, 1},
{1293, 2},
{1293, 1},
{1290, 1},
{1290, 3},
{1467, 0},
{1467, 1},
{917, 2},
{911, 5},
{910, 2},
{1490, 0},
{1490, 2},
{1490, 1},
{1486, 1},
{1486, 3},
{1485, 0},
{1485, 1},
{1484, 2},
{1484, 3},
{1491, 0},
{1491, 3},
{987, 2},
{987, 3},
{907, 4},
{912, 4},
{1294, 4},
{1480, 0},
{1480, 2},
{1480, 2},
{909, 1},
{909, 1},
{1522, 1},
{1522, 2},
{1507, 1},
{1507, 2},
{1328, 4},
{1317, 4},
{1216, 0},
{1216, 2},
{920, 6},
{919, 5},
{923, 1},
{908, 6},
{908, 6},
{914, 4},
{1291, 0},
{1291, 1},
{915, 4},
{913, 2},
{916, 2},
{918, 1},
{918, 1},
{918, 1},
{918, 1},
{918, 1},
{918, 1},
{918, 1},
{918, 1},
{918, 1},
{918, 1},
{918, 1},
{918, 1},
{1187, 8},
{1205, 4},
{1168, 3},
{1386, 0},
{1386, 1},
{1386, 1},
{1409, 1},
{1409, 2},
{1409, 3},
{1091, 3},
{1091, 3},
{1091, 3},
{1091, 5},
{1387, 2},
{1387, 2},
{1387, 2},
{1387, 2},
{1387, 2},
{1150, 4},
{1492, 1},
{1492, 2},
{1492, 3},
{1121, 3},
{1121, 3},
{1121, 3},
{1121, 1},
{1122, 3},
{1122, 3},
{1122, 5},
{1206, 4},
{1206, 6},
{1206, 6},
}
yyXErrors = map[yyXError]string{}
yyParseTab = [5228][]uint16{
// 0
{2451, 2451, 3: 3031, 64: 3054, 104: 3033, 3036, 107: 3065, 3034, 3186, 122: 3067, 130: 3202, 149: 3194, 183: 3205, 223: 3051, 230: 3049, 249: 3061, 273: 3203, 277: 3030, 282: 3039, 287: 3085, 292: 3053, 295: 3027, 303: 3084, 3197, 306: 3035, 311: 3204, 322: 3064, 327: 3029, 333: 3062, 335: 3028, 337: 3068, 358: 3055, 360: 3190, 362: 3201, 364: 3057, 373: 3066, 378: 3052, 391: 3044, 569: 3076, 572: 3075, 587: 3074, 589: 3060, 597: 3083, 601: 3196, 615: 3189, 617: 3047, 623: 3045, 626: 3059, 646: 3073, 694: 3069, 751: 3188, 753: 3032, 762: 3025, 767: 3038, 782: 3037, 806: 3198, 3026, 815: 3080, 843: 3040, 846: 3082, 3070, 3071, 3072, 3081, 3079, 3078, 3077, 856: 3043, 3164, 3163, 862: 3187, 3041, 3145, 866: 3156, 3173, 3046, 875: 3042, 879: 3102, 885: 3096, 3100, 3153, 3165, 897: 3104, 3048, 901: 3172, 3174, 937: 3050, 945: 3089, 948: 3144, 950: 3193, 984: 3200, 990: 3056, 995: 3097, 1007: 3191, 1010: 3147, 1012: 3158, 1014: 3162, 1085: 3109, 1141: 3195, 1150: 3117, 3087, 1153: 3088, 3091, 1157: 3094, 3092, 3095, 1161: 3093, 1163: 3090, 1165: 3098, 3099, 1168: 3105, 3058, 3143, 3106, 3183, 1183: 3113, 3107, 3108, 3114, 3115, 3116, 3112, 3118, 3119, 1193: 3111, 3110, 1196: 3101, 3063, 1199: 3120, 3121, 3135, 3122, 3123, 3126, 3125, 3131, 3130, 3132, 3127, 3133, 3134, 3124, 3129, 3128, 1217: 3086, 1220: 3103, 1225: 3139, 3137, 1228: 3138, 3136, 1233: 3141, 3142, 3140, 1239: 3180, 1247: 3199, 3146, 1257: 3148, 3149, 3176, 1261: 3181, 1270: 3182, 1287: 3151, 3152, 1298: 3179, 3157, 1302: 3161, 1304: 3154, 3155, 1311: 3178, 3192, 3160, 3159, 1320: 3166, 1322: 3168, 3167, 1325: 3170, 1327: 3177, 1329: 3169, 1335: 3185, 1349: 3171, 1352: 3184, 3150, 3175, 1527: 3023, 1530: 3024},
{1: 3022},
{8248, 3021},
{19: 8201, 54: 8200, 152: 8197, 269: 8202, 345: 8198, 588: 4954, 630: 8199, 646: 2236, 683: 7067, 978: 8196, 1008: 4953},
{152: 8181, 646: 8180},
// 5
{646: 8174},
{180: 8152, 646: 8153, 683: 7067, 978: 8154},
{646: 8140},
{149: 8131, 273: 8132, 308: 8130, 328: 8129},
{457: 8118, 573: 8119, 646: 2811, 1524: 8117},
// 10
{60: 5562, 342: 815, 646: 815, 935: 5561, 951: 8071},
{2781, 2781, 444: 8070, 450: 8069},
{482: 8058},
{571: 8057},
{2750, 2750, 106: 6984, 606: 6982, 937: 6983, 1180: 8056},
// 15
{19: 2502, 54: 7569, 62: 7483, 103: 2502, 152: 7566, 2502, 186: 7561, 212: 2502, 221: 7567, 235: 845, 244: 6579, 269: 7570, 7225, 299: 7556, 410: 7562, 607: 7565, 646: 2470, 683: 7067, 696: 2502, 743: 7558, 749: 2620, 803: 7560, 978: 7563, 1011: 7571, 1099: 7568, 1113: 6578, 1433: 7557, 1471: 7564, 1523: 7559},
{19: 7489, 54: 7490, 62: 7483, 152: 7485, 7484, 173: 2470, 221: 7486, 235: 845, 7481, 243: 7487, 6579, 249: 1301, 269: 7491, 7225, 299: 7478, 646: 2470, 683: 7067, 749: 7480, 978: 7479, 1011: 7492, 1099: 7488, 1113: 7482},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4062, 894: 7477},
{2: 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 11: 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 54: 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 588: 1119, 603: 1119, 872: 1119, 874: 1119, 876: 1119, 880: 6364, 992: 6365, 1039: 7465},
{2479, 2479},
// 20
{2478, 2478},
{569: 3076, 587: 3074, 646: 3073, 694: 3069, 751: 3188, 815: 4074, 843: 3040, 846: 4073, 3070, 3071, 3072, 3081, 3079, 4075, 4076, 862: 6082, 6080, 875: 6081},
{104: 3033, 3036, 107: 3065, 3034, 130: 7438, 230: 3049, 257: 7437, 569: 3076, 572: 3075, 587: 3074, 589: 3060, 597: 7441, 626: 3059, 646: 3073, 694: 3069, 751: 3188, 753: 3032, 815: 7439, 843: 3040, 846: 7440, 3070, 3071, 3072, 3081, 3079, 3078, 3077, 856: 3043, 7447, 7446, 862: 3187, 3041, 7444, 866: 7445, 7443, 875: 3042, 879: 7442, 885: 7455, 7450, 7453, 7454, 937: 3050, 950: 7456, 995: 7449, 1010: 7448, 1012: 7452, 1014: 7451, 1071: 7436},
{2: 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 11: 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 54: 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 571: 2446, 2446, 587: 2446, 589: 2446, 599: 2446, 2446, 626: 2446, 646: 2446, 694: 2446, 751: 2446, 753: 2446, 762: 2446, 843: 2446},
{2: 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 11: 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 54: 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 571: 2445, 2445, 587: 2445, 589: 2445, 599: 2445, 2445, 626: 2445, 646: 2445, 694: 2445, 751: 2445, 753: 2445, 762: 2445, 843: 2445},
// 25
{2: 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 11: 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 54: 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 571: 2444, 2444, 587: 2444, 589: 2444, 599: 2444, 2444, 626: 2444, 646: 2444, 694: 2444, 751: 2444, 753: 2444, 762: 2444, 843: 2444},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 7396, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 7394, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 7389, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 3076, 571: 7392, 3075, 587: 3074, 589: 3060, 599: 7393, 4148, 626: 3059, 646: 3073, 694: 3069, 751: 3188, 753: 7395, 762: 4924, 811: 4147, 3217, 3218, 3216, 4925, 843: 3040, 7390, 846: 4926, 3070, 3071, 3072, 3081, 3079, 3078, 3077, 856: 3043, 4932, 4931, 862: 3187, 3041, 4929, 866: 4930, 4928, 875: 3042, 879: 4927, 945: 4933, 948: 4934, 967: 7391},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 7388, 3217, 3218, 3216},
{230: 7386},
{178: 7379, 646: 7071, 683: 7067, 978: 7070, 1167: 7378},
// 30
{223: 7376},
{223: 7373},
{223: 7371},
{223: 7366},
{17: 4649, 19: 7187, 33: 7216, 7215, 62: 7224, 113: 7197, 147: 838, 149: 7188, 172: 845, 838, 175: 838, 200: 7226, 208: 845, 223: 7173, 242: 7227, 265: 7185, 270: 7225, 273: 7229, 275: 845, 293: 7210, 838, 308: 7174, 328: 7189, 341: 7202, 343: 7191, 374: 7228, 376: 7212, 395: 7201, 401: 7222, 403: 7206, 7186, 409: 7204, 411: 7220, 413: 7195, 420: 7193, 7209, 425: 7199, 428: 7208, 7178, 7219, 438: 7179, 453: 7184, 7183, 460: 7223, 466: 7211, 468: 7217, 7214, 7218, 7213, 483: 7205, 593: 4650, 625: 7180, 646: 7177, 697: 7200, 748: 4648, 7190, 753: 7221, 782: 7176, 893: 7196, 1011: 7207, 1099: 7203, 1104: 7192, 1195: 7194, 1269: 7182, 1500: 7181, 1515: 7198, 1521: 7175},
// 35
{451: 7069, 646: 7071, 683: 7067, 978: 7070, 1167: 7068},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 7056, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 7058, 3217, 3218, 3216, 1481: 7057},
{2: 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 11: 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 54: 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 588: 1119, 600: 1119, 602: 1119, 872: 1119, 874: 1119, 876: 1119, 880: 6364, 992: 6365, 1039: 7043},
{2: 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 11: 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 54: 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 600: 1119, 602: 1119, 872: 1119, 874: 1119, 876: 1119, 880: 6364, 992: 6365, 1039: 7010},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 7005, 3217, 3218, 3216},
// 40
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 6999, 3217, 3218, 3216},
{249: 6997},
{249: 1302},
{1300, 1300, 106: 6984, 606: 6982, 752: 6981, 937: 6983, 1180: 6980},
{1289, 1289},
// 45
{1288, 1288},
{571: 6979},
{2: 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 11: 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 54: 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 6949, 6955, 6956, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 571: 1124, 574: 1124, 1124, 1124, 581: 1124, 1124, 1124, 1124, 1124, 1124, 1124, 589: 1124, 593: 1124, 595: 1124, 600: 1124, 613: 6952, 618: 1124, 625: 1124, 1124, 651: 1124, 658: 1124, 666: 1124, 1124, 1124, 670: 1124, 674: 1124, 1124, 1124, 678: 1124, 1124, 1124, 1124, 1124, 1124, 685: 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 695: 1124, 697: 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 750: 1124, 755: 4397, 869: 4395, 4396, 872: 6367, 874: 6369, 876: 6368, 880: 6364, 889: 6948, 6951, 6947, 926: 6867, 930: 6945, 986: 6946, 992: 6944, 1318: 6954, 6950, 1509: 6943, 6953},
{468, 468, 53: 468, 570: 468, 572: 468, 579: 468, 468, 590: 468, 592: 468, 594: 4940, 596: 468, 598: 468, 468, 601: 468, 468, 6918, 468, 611: 468, 928: 4941, 6919, 1422: 6917},
{1114, 1114, 53: 1114, 570: 1114, 572: 1114, 579: 1114, 1114, 590: 1114, 592: 1114, 596: 1114, 598: 1114, 1114, 601: 1114, 1114, 604: 1114, 611: 6905, 1100: 6907, 1129: 6906},
// 50
{1572, 1572, 53: 1572, 570: 1572, 572: 1572, 579: 1572, 1572, 590: 1572, 592: 1572, 596: 1572, 598: 1572, 1572, 601: 1572, 1572, 604: 4077, 882: 4131, 953: 6901},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 6896},
{679: 4112, 1064: 4111, 1145: 4110},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 6883, 3217, 3218, 3216, 1084: 6882, 1363: 6880, 1493: 6881},
{569: 3076, 572: 3075, 587: 3074, 646: 3073, 694: 3069, 815: 6879, 846: 4067, 3070, 3071, 3072, 3081, 3079, 3078, 3077, 856: 4066, 4069, 4068},
// 55
{1095, 1095, 53: 1095, 570: 1095, 572: 1095, 579: 1095},
{1094, 1094, 53: 1094, 570: 1094, 572: 1094, 579: 1094},
{580: 6864, 590: 6865, 592: 6866, 1512: 6863},
{728, 728, 580: 1080, 590: 1080, 592: 1080, 596: 4079, 598: 4078, 604: 4077, 882: 4080, 4081},
{580: 1083, 590: 1083, 592: 1083},
// 60
{730, 730, 580: 1081, 590: 1081, 592: 1081},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 6697, 6692, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 6698, 3224, 3215, 3451, 3583, 3584, 6695, 3606, 6694, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 6699, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 6702, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 6700, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 6703, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 6693, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 6704, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 6701, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 6696, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 575: 6706, 593: 4650, 668: 6710, 695: 6709, 748: 4648, 811: 6707, 3217, 3218, 3216, 893: 6711, 965: 6708, 1147: 6712, 1357: 6705},
{18: 6536, 64: 6539, 277: 6537, 6544, 287: 6543, 292: 6538, 6541, 295: 6533, 6542, 363: 6540, 407: 6535, 422: 6545, 486: 6547, 597: 6546, 742: 6532, 762: 6548, 782: 6534, 990: 6531},
{24: 815, 60: 5562, 172: 815, 815, 178: 815, 265: 815, 271: 815, 285: 815, 301: 815, 314: 815, 336: 815, 340: 815, 625: 815, 646: 815, 935: 5561, 951: 6506},
{808, 808},
// 65
{807, 807},
{806, 806},
{805, 805},
{804, 804},
{803, 803},
// 70
{802, 802},
{801, 801},
{800, 800},
{799, 799},
{798, 798},
// 75
{797, 797},
{796, 796},
{795, 795},
{794, 794},
{793, 793},
// 80
{792, 792},
{791, 791},
{790, 790},
{789, 789},
{788, 788},
// 85
{787, 787},
{786, 786},
{785, 785},
{784, 784},
{783, 783},
// 90
{782, 782},
{781, 781},
{780, 780},
{779, 779},
{778, 778},
// 95
{777, 777},
{776, 776},
{775, 775},
{774, 774},
{773, 773},
// 100
{772, 772},
{771, 771},
{770, 770},
{769, 769},
{768, 768},
// 105
{767, 767},
{766, 766},
{765, 765},
{764, 764},
{763, 763},
// 110
{762, 762},
{761, 761},
{760, 760},
{759, 759},
{758, 758},
// 115
{757, 757},
{756, 756},
{755, 755},
{754, 754},
{753, 753},
// 120
{752, 752},
{751, 751},
{750, 750},
{749, 749},
{748, 748},
// 125
{747, 747},
{746, 746},
{745, 745},
{744, 744},
{743, 743},
// 130
{742, 742},
{741, 741},
{740, 740},
{739, 739},
{738, 738},
// 135
{737, 737},
{736, 736},
{735, 735},
{734, 734},
{733, 733},
// 140
{732, 732},
{731, 731},
{729, 729},
{727, 727},
{726, 726},
// 145
{725, 725},
{724, 724},
{723, 723},
{722, 722},
{721, 721},
// 150
{720, 720},
{719, 719},
{718, 718},
{717, 717},
{716, 716},
// 155
{715, 715},
{714, 714},
{713, 713},
{712, 712},
{711, 711},
// 160
{710, 710},
{709, 709},
{708, 708},
{681, 681},
{2: 619, 619, 619, 619, 619, 619, 619, 619, 11: 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 54: 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 600: 619, 646: 6503, 1466: 6504},
// 165
{474, 474, 579: 474},
{2: 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 11: 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 54: 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 588: 1119, 600: 1119, 682: 1119, 872: 1119, 874: 1119, 876: 1119, 880: 6364, 992: 6365, 1039: 6366},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 6362, 3217, 3218, 3216, 947: 6363},
{749: 6340},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 6183, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 6185, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 6191, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 6187, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 6184, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 6192, 3404, 3279, 3671, 6186, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 6189, 6293, 3307, 3560, 6190, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 6188, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 571: 6194, 601: 6217, 626: 6211, 694: 6200, 745: 6215, 749: 6210, 751: 6213, 755: 6204, 762: 6205, 767: 6209, 782: 6206, 811: 3957, 3217, 3218, 3216, 843: 6208, 845: 6193, 938: 6195, 950: 6199, 990: 6212, 1007: 6214, 1094: 6196, 1119: 6197, 6203, 1127: 6198, 6201, 1139: 6207, 1143: 6216, 1315: 6294},
// 170
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 6183, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 6185, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 6191, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 6187, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 6184, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 6192, 3404, 3279, 3671, 6186, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 6189, 3306, 3307, 3560, 6190, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 6188, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 571: 6194, 601: 6217, 626: 6211, 694: 6200, 745: 6215, 749: 6210, 751: 6213, 755: 6204, 762: 6205, 767: 6209, 782: 6206, 811: 3957, 3217, 3218, 3216, 843: 6208, 845: 6193, 938: 6195, 950: 6199, 990: 6212, 1007: 6214, 1094: 6196, 1119: 6197, 6203, 1127: 6198, 6201, 1139: 6207, 1143: 6216, 1315: 6202},
{25: 6154, 243: 6155},
{602: 6113},
{173: 6084, 243: 6105, 646: 6085, 1346: 6104},
{173: 6084, 243: 6086, 646: 6085, 1346: 6083},
// 175
{570: 6066, 598: 232, 1463: 6065},
{60: 5562, 173: 815, 646: 815, 935: 5561, 951: 6060},
{31: 6055, 56: 5501, 183: 6056, 569: 6053, 589: 5502, 595: 3209, 839: 6054, 1018: 6057},
{31: 225, 56: 225, 183: 225, 301: 6052, 569: 225, 589: 225, 595: 225},
{243: 6034},
// 180
{459: 4906},
{278: 4870, 458: 4871},
{54: 4844},
{146: 3206},
{2: 3208, 809: 3207},
// 185
{54: 3788, 110: 3789, 130: 3792, 696: 3791, 1121: 3787, 3790, 1492: 3786},
{54: 3211, 595: 3209, 839: 3210},
{2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 16: 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 64: 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 111: 2342, 2342, 2342, 2342, 2342, 2342, 118: 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 131: 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 152: 2342, 154: 2342, 156: 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 176: 2342, 2342, 188: 2342, 191: 2342, 2342, 2342, 2342, 202: 2342, 204: 2342, 239: 2342, 247: 2342, 290: 2342, 330: 2342, 569: 2342, 2342, 572: 2342, 2342, 575: 2342, 577: 2342, 2342, 2342, 2342, 587: 2342, 2342, 2342, 2342, 592: 2342, 2342, 2342, 596: 2342, 2342, 2342, 2342, 601: 2342, 2342, 605: 2342, 615: 2342, 617: 2342, 2342, 623: 2342, 626: 2342, 2342, 646: 2342, 651: 2342, 658: 2342, 679: 2342, 694: 2342, 748: 2342, 2342, 751: 2342, 753: 2342, 760: 2342, 763: 2342, 843: 2342, 868: 2342, 871: 2342, 877: 2342, 2342},
{3, 3},
{611: 3212},
// 190
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 575: 3214, 668: 3783, 811: 3213, 3217, 3218, 3216, 816: 3785, 962: 3784},
{2609, 2609, 10: 2609, 53: 2609, 2609, 110: 2609, 124: 2609, 2609, 2609, 2609, 2609, 130: 2609, 696: 2609},
{2608, 2608, 10: 2608, 53: 2608, 2608, 110: 2608, 124: 2608, 2608, 2608, 2608, 2608, 130: 2608, 696: 2608},
{2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202},
{2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201},
// 195
{2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200},
{2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199},
{2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198},
{2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197},
{2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196},
// 200
{2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195},
{2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194},
{2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193},
{2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192},
{2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191},
// 205
{2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190},
{2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189},
{2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188},
{2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187},
{2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186},
// 210
{2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185},
{2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184},
{2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183},
{2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182},
{2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181},
// 215
{2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180},
{2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179},
{2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178},
{2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177},
{2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176},
// 220
{2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175},
{2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174},
{2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173},
{2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172},
{2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171},
// 225
{2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170},
{2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169},
{2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168},
{2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167},
{2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166},
// 230
{2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165},
{2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164},
{2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163},
{2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162},
{2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161},
// 235
{2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160},
{2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159},
{2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158},
{2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157},
{2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156},
// 240
{2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155},
{2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154},
{2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153},
{2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152},
{2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151},
// 245
{2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150},
{2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149},
{2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148},
{2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147},
{2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146},
// 250
{2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145},
{2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144, 2144},
{2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143},
{2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142},
{2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141},
// 255
{2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140},
{2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139},
{2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138},
{2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137},
{2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136},
// 260
{2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135},
{2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134},
{2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133},
{2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132},
{2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131},
// 265
{2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130},
{2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129},
{2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128},
{2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127},
{2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126},
// 270
{2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125},
{2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124},
{2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123},
{2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122},
{2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121},
// 275
{2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120},
{2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119},
{2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118},
{2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117},
{2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116},
// 280
{2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115},
{2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114},
{2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113},
{2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112},
{2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111},
// 285
{2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110},
{2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109},
{2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108},
{2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107},
{2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106},
// 290
{2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105},
{2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104},
{2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103},
{2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102},
{2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101},
// 295
{2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100},
{2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099},
{2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098},
{2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097},
{2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096},
// 300
{2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095},
{2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094},
{2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093},
{2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092},
{2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091},
// 305
{2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090},
{2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089},
{2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088},
{2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087},
{2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086, 2086},
// 310
{2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085},
{2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084},
{2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083},
{2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082},
{2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081},
// 315
{2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080},
{2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079},
{2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078},
{2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077},
{2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076},
// 320
{2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075},
{2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074},
{2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073},
{2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072},
{2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071},
// 325
{2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070},
{2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069},
{2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068},
{2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067},
{2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066},
// 330
{2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065},
{2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064},
{2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063},
{2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062},
{2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061},
// 335
{2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060},
{2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059},
{2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058},
{2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057},
{2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056},
// 340
{2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055},
{2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054},
{2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053},
{2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052},
{2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051},
// 345
{2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050},
{2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049},
{2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048},
{2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047},
{2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046},
// 350
{2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045},
{2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044},
{2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043},
{2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042},
{2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041},
// 355
{2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040},
{2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039},
{2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038},
{2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037},
{2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036},
// 360
{2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035},
{2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034},
{2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033},
{2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032},
{2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031},
// 365
{2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030, 2030},
{2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029},
{2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028},
{2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027},
{2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026},
// 370
{2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025},
{2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024},
{2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023},
{2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022},
{2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021},
// 375
{2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020},
{2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019},
{2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018},
{2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017},
{2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016},
// 380
{2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015},
{2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014},
{2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013},
{2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012},
{2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011},
// 385
{2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010},
{2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009},
{2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008},
{2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007},
{2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006},
// 390
{2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005},
{2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004},
{2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003},
{2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002},
{2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001},
// 395
{2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000},
{1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999},
{1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998},
{1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997},
{1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996},
// 400
{1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995},
{1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994},
{1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993},
{1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992},
{1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991},
// 405
{1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990},
{1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989},
{1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988},
{1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987},
{1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986},
// 410
{1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985},
{1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984},
{1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983},
{1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982},
{1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981},
// 415
{1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980},
{1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979},
{1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978},
{1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977},
{1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976},
// 420
{1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975, 1975},
{1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974},
{1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973},
{1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972},
{1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971},
// 425
{1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970},
{1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969},
{1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968},
{1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967},
{1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966},
// 430
{1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965},
{1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964},
{1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963},
{1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962},
{1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961},
// 435
{1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960},
{1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959},
{1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958},
{1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957},
{1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956},
// 440
{1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955},
{1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954},
{1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953},
{1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952},
{1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951},
// 445
{1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950},
{1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949},
{1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948},
{1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947},
{1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946},
// 450
{1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945},
{1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944},
{1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943},
{1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942},
{1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941},
// 455
{1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940},
{1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939},
{1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938},
{1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937},
{1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936},
// 460
{1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935},
{1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934},
{1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933},
{1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932},
{1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931},
// 465
{1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930},
{1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929},
{1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928},
{1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927},
{1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926},
// 470
{1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925},
{1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924},
{1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923},
{1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922},
{1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921},
// 475
{1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920},
{1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919},
{1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918},
{1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917},
{1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916},
// 480
{1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915},
{1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914},
{1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913},
{1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912},
{1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911},
// 485
{1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910},
{1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909},
{1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908},
{1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907},
{1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906},
// 490
{1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905},
{1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904},
{1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903},
{1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902},
{1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901},
// 495
{1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900},
{1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899},
{1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1898},
{1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897},
{1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896},
// 500
{1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895},
{1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894},
{1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893},
{1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892},
{1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891},
// 505
{1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890},
{1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889},
{1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888},
{1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887},
{1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886},
// 510
{1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885},
{1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884},
{1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883},
{1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882},
{1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881},
// 515
{1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880},
{1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879},
{1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878},
{1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877},
{1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876},
// 520
{1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875},
{1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874},
{1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873},
{1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872},
{1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871},
// 525
{1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870},
{1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869},
{1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868},
{1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867},
{1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866},
// 530
{1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865},
{1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864},
{1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863},
{1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862},
{1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861},
// 535
{1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860},
{1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859},
{1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858},
{1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857},
{1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856},
// 540
{1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855},
{1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854},
{1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853},
{1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852},
{1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851},
// 545
{1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850},
{1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849},
{1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848},
{1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847},
{1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846},
// 550
{1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845},
{1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844},
{1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843},
{1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842},
{1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841},
// 555
{1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840},
{1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839},
{1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838},
{1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837},
{1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836},
// 560
{1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835},
{1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834},
{1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833},
{1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832},
{1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831},
// 565
{1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830},
{1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829},
{1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828},
{1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827},
{1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826},
// 570
{1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825},
{1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824},
{1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823},
{1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822},
{1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821},
// 575
{1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820},
{1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819},
{1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818},
{1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817},
{1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816},
// 580
{1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815},
{1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814},
{1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813, 1813},
{1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812},
{1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811},
// 585
{1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810},
{1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809},
{1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808},
{1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807},
{1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806},
// 590
{1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805},
{1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804},
{1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803},
{1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802},
{1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801},
// 595
{1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800},
{1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799},
{1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798},
{1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797},
{1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796},
// 600
{1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795},
{1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794},
{1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793},
{1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792},
{1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791},
// 605
{1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790},
{1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789},
{1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788},
{1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787},
{1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786},
// 610
{1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785},
{1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784},
{1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783},
{1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782},
{1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781},
// 615
{1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780},
{1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779},
{1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778},
{1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777},
{1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776},
// 620
{1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775},
{1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774},
{1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773},
{1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772},
{1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771},
// 625
{1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770},
{1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769},
{1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768},
{1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767},
{1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766},
// 630
{1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765},
{1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764},
{1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763},
{1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762},
{1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761},
// 635
{1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760},
{1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759},
{1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758, 1758},
{1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757},
{1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756},
// 640
{1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755},
{1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754},
{1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753},
{1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752},
{1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751},
// 645
{1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750},
{1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749},
{1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748},
{1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747},
{1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746},
// 650
{1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745},
{1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744},
{1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743},
{1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742},
{1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741},
// 655
{1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740},
{1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739},
{1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738},
{1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737},
{1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736},
// 660
{1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735},
{1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734},
{1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733},
{1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732},
{1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731},
// 665
{1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730},
{1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729},
{1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728},
{1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727},
{1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726},
// 670
{1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725},
{1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724},
{1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723},
{1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722},
{1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721},
// 675
{1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720},
{1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719},
{1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718},
{1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717},
{1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716},
// 680
{1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715},
{1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714},
{1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713},
{1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712},
{1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711},
// 685
{1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710},
{1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709},
{1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708},
{1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707},
{1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706},
// 690
{1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705},
{1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704},
{1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703},
{1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702},
{1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701},
// 695
{1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700},
{1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699},
{1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698},
{1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697},
{1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696},
// 700
{1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695},
{1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694},
{1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693},
{1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692},
{1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691},
// 705
{1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690},
{1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689},
{1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688},
{1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687},
{1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686},
// 710
{1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685},
{1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684},
{1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683},
{1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682},
{1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681},
// 715
{1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680},
{1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679},
{1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678},
{1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677},
{1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676},
// 720
{1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675},
{1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674},
{1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673},
{1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672},
{1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671},
// 725
{1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670},
{1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669},
{1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668},
{1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667},
{1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666},
// 730
{1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665},
{1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664},
{1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663},
{1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662},
{1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661},
// 735
{1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660},
{1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659},
{1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658},
{1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657},
{1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656},
// 740
{1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655},
{1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654},
{1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653},
{1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652},
{1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651},
// 745
{1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650},
{1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649},
{1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648},
{1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647},
{1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646},
// 750
{1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645},
{1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644},
{1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643},
{1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642},
{1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641},
// 755
{1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640},
{1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639},
{1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638},
{1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637},
{1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636, 1636},
// 760
{1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635},
{1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 570: 1014, 1014, 1014, 1014, 1014, 576: 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 588: 1014, 590: 1014, 1014, 1014, 594: 1014, 596: 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 619: 1014, 1014, 1014, 1014, 1014, 1014, 627: 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 647: 1014, 1014, 1014, 1014, 652: 1014, 1014, 1014, 1014, 1014, 1014, 659: 1014, 1014, 1014, 1014, 1014, 1014, 1014, 669: 1014, 671: 1014, 1014, 1014, 677: 1014, 696: 1014, 746: 1014},
{2, 2},
{1, 1},
{14, 14, 10: 4842, 54: 3788, 110: 3789, 130: 3792, 696: 3791, 1121: 4841, 3790},
// 765
{13, 13, 10: 13, 54: 13, 110: 13, 130: 13, 696: 13},
{611: 4838},
{253: 2453, 256: 2453, 272: 2453, 591: 4828, 840: 4829, 984: 2453},
{7, 7, 10: 7, 54: 7, 110: 7, 130: 7, 696: 7},
{207: 4820, 246: 4819},
// 770
{246: 3793},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3783, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3874, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3850, 3855, 3937, 3854, 3851},
{1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 4816, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 570: 1885, 1885, 1885, 1885, 1885, 576: 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 588: 1885, 590: 1885, 1885, 1885, 594: 1885, 596: 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 619: 1885, 1885, 1885, 1885, 1885, 1885, 627: 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 647: 1885, 1885, 1885, 1885, 652: 1885, 1885, 1885, 1885, 1885, 1885, 659: 1885, 1885, 1885, 1885, 1885, 1885, 1885, 669: 1885, 671: 1885, 1885, 1885, 677: 1885, 696: 1885, 746: 1885, 754: 1885, 758: 1885, 1885},
{1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 4813, 1884, 1884, 1884, 1884, 1884, 576: 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 588: 1884, 590: 1884, 1884, 1884, 594: 1884, 596: 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 619: 1884, 1884, 1884, 1884, 1884, 1884, 627: 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 647: 1884, 1884, 1884, 1884, 652: 1884, 1884, 1884, 1884, 1884, 1884, 659: 1884, 1884, 1884, 1884, 1884, 1884, 1884, 669: 1884, 671: 1884, 1884, 1884, 677: 1884, 696: 1884, 746: 1884, 754: 1884, 758: 1884, 1884},
{2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 4810, 2202, 2202, 2202, 2202, 2202, 576: 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 588: 2202, 590: 2202, 2202, 2202, 594: 2202, 596: 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 619: 2202, 2202, 2202, 2202, 2202, 2202, 627: 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 647: 2202, 2202, 2202, 2202, 652: 2202, 2202, 2202, 2202, 2202, 2202, 659: 2202, 2202, 2202, 2202, 2202, 2202, 2202, 669: 2202, 671: 2202, 2202, 2202, 677: 2202, 696: 2202, 746: 2202, 754: 2202, 758: 2202, 2202},
// 775
{2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 1507, 2195, 2195, 2195, 2195, 2195, 576: 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 588: 2195, 590: 2195, 2195, 2195, 594: 2195, 596: 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 619: 2195, 2195, 2195, 2195, 2195, 2195, 627: 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 647: 2195, 2195, 2195, 2195, 652: 2195, 2195, 2195, 2195, 2195, 2195, 659: 2195, 2195, 2195, 2195, 2195, 2195, 2195, 669: 2195, 671: 2195, 2195, 2195, 677: 2195, 696: 2195, 746: 2195, 754: 2195, 758: 2195, 2195},
{2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 4805, 2182, 2182, 2182, 2182, 2182, 576: 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 588: 2182, 590: 2182, 2182, 2182, 594: 2182, 596: 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 619: 2182, 2182, 2182, 2182, 2182, 2182, 627: 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 647: 2182, 2182, 2182, 2182, 652: 2182, 2182, 2182, 2182, 2182, 2182, 659: 2182, 2182, 2182, 2182, 2182, 2182, 2182, 669: 2182, 671: 2182, 2182, 2182, 677: 2182, 696: 2182, 746: 2182, 754: 2182, 758: 2182, 2182},
{2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 1506, 2169, 2169, 2169, 2169, 2169, 576: 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 588: 2169, 590: 2169, 2169, 2169, 594: 2169, 596: 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 619: 2169, 2169, 2169, 2169, 2169, 2169, 627: 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 647: 2169, 2169, 2169, 2169, 652: 2169, 2169, 2169, 2169, 2169, 2169, 659: 2169, 2169, 2169, 2169, 2169, 2169, 2169, 669: 2169, 671: 2169, 2169, 2169, 677: 2169, 696: 2169, 746: 2169, 754: 2169, 758: 2169, 2169},
{2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 1503, 2158, 4804, 2158, 2158, 2158, 576: 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 588: 2158, 590: 2158, 2158, 2158, 594: 2158, 596: 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 619: 2158, 2158, 2158, 2158, 2158, 2158, 627: 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 647: 2158, 2158, 2158, 2158, 652: 2158, 2158, 2158, 2158, 2158, 2158, 659: 2158, 2158, 2158, 2158, 2158, 2158, 2158, 669: 2158, 671: 2158, 2158, 2158, 677: 2158, 696: 2158, 746: 2158, 754: 2158, 758: 2158, 2158},
{2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 1501, 2156, 2156, 2156, 2156, 2156, 576: 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 588: 2156, 590: 2156, 2156, 2156, 594: 2156, 596: 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 619: 2156, 2156, 2156, 2156, 2156, 2156, 627: 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 647: 2156, 2156, 2156, 2156, 652: 2156, 2156, 2156, 2156, 2156, 2156, 659: 2156, 2156, 2156, 2156, 2156, 2156, 2156, 669: 2156, 671: 2156, 2156, 2156, 677: 2156, 696: 2156, 746: 2156, 754: 2156, 758: 2156, 2156},
// 780
{2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 1496, 2130, 2130, 2130, 2130, 2130, 576: 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 588: 2130, 590: 2130, 2130, 2130, 594: 2130, 596: 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 619: 2130, 2130, 2130, 2130, 2130, 2130, 627: 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 647: 2130, 2130, 2130, 2130, 652: 2130, 2130, 2130, 2130, 2130, 2130, 659: 2130, 2130, 2130, 2130, 2130, 2130, 2130, 669: 2130, 671: 2130, 2130, 2130, 677: 2130, 696: 2130, 746: 2130, 754: 2130, 758: 2130, 2130},
{2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 1500, 2124, 2124, 2124, 2124, 2124, 576: 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 588: 2124, 590: 2124, 2124, 2124, 594: 2124, 596: 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 619: 2124, 2124, 2124, 2124, 2124, 2124, 627: 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 647: 2124, 2124, 2124, 2124, 652: 2124, 2124, 2124, 2124, 2124, 2124, 659: 2124, 2124, 2124, 2124, 2124, 2124, 2124, 669: 2124, 671: 2124, 2124, 2124, 677: 2124, 696: 2124, 746: 2124, 754: 2124, 758: 2124, 2124},
{2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 4801, 2114, 2114, 2114, 2114, 2114, 576: 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 588: 2114, 590: 2114, 2114, 2114, 594: 2114, 596: 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 619: 2114, 2114, 2114, 2114, 2114, 2114, 627: 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 647: 2114, 2114, 2114, 2114, 652: 2114, 2114, 2114, 2114, 2114, 2114, 659: 2114, 2114, 2114, 2114, 2114, 2114, 2114, 669: 2114, 671: 2114, 2114, 2114, 677: 2114, 696: 2114, 746: 2114, 754: 2114, 758: 2114, 2114},
{2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 1490, 2090, 2090, 2090, 2090, 2090, 576: 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 588: 2090, 590: 2090, 2090, 2090, 594: 2090, 596: 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 619: 2090, 2090, 2090, 2090, 2090, 2090, 627: 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 647: 2090, 2090, 2090, 2090, 652: 2090, 2090, 2090, 2090, 2090, 2090, 659: 2090, 2090, 2090, 2090, 2090, 2090, 2090, 669: 2090, 671: 2090, 2090, 2090, 677: 2090, 696: 2090, 746: 2090, 754: 2090, 758: 2090, 2090},
{2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 1482, 2083, 4800, 2083, 2083, 2083, 576: 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 588: 2083, 590: 2083, 2083, 2083, 594: 2083, 596: 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 619: 2083, 2083, 2083, 2083, 2083, 2083, 627: 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 647: 2083, 2083, 2083, 2083, 652: 2083, 2083, 2083, 2083, 2083, 2083, 659: 2083, 2083, 2083, 2083, 2083, 2083, 2083, 669: 2083, 671: 2083, 2083, 2083, 677: 2083, 696: 2083, 746: 2083, 754: 2083, 758: 2083, 2083},
// 785
{2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 1481, 2081, 4799, 2081, 2081, 2081, 576: 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 588: 2081, 590: 2081, 2081, 2081, 594: 2081, 596: 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 619: 2081, 2081, 2081, 2081, 2081, 2081, 627: 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 647: 2081, 2081, 2081, 2081, 652: 2081, 2081, 2081, 2081, 2081, 2081, 659: 2081, 2081, 2081, 2081, 2081, 2081, 2081, 669: 2081, 671: 2081, 2081, 2081, 677: 2081, 696: 2081, 746: 2081, 754: 2081, 758: 2081, 2081},
{2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 1480, 2078, 2078, 2078, 2078, 2078, 576: 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 588: 2078, 590: 2078, 2078, 2078, 594: 2078, 596: 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 619: 2078, 2078, 2078, 2078, 2078, 2078, 627: 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 647: 2078, 2078, 2078, 2078, 652: 2078, 2078, 2078, 2078, 2078, 2078, 659: 2078, 2078, 2078, 2078, 2078, 2078, 2078, 669: 2078, 671: 2078, 2078, 2078, 677: 2078, 696: 2078, 746: 2078, 754: 2078, 758: 2078, 2078},
{2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 1477, 2071, 2071, 2071, 2071, 2071, 576: 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 588: 2071, 590: 2071, 2071, 2071, 594: 2071, 596: 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 619: 2071, 2071, 2071, 2071, 2071, 2071, 627: 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, 647: 2071, 2071, 2071, 2071, 652: 2071, 2071, 2071, 2071, 2071, 2071, 659: 2071, 2071, 2071, 2071, 2071, 2071, 2071, 669: 2071, 671: 2071, 2071, 2071, 677: 2071, 696: 2071, 746: 2071, 754: 2071, 758: 2071, 2071},
{2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 1478, 2069, 2069, 2069, 2069, 2069, 576: 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 588: 2069, 590: 2069, 2069, 2069, 594: 2069, 596: 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 619: 2069, 2069, 2069, 2069, 2069, 2069, 627: 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 647: 2069, 2069, 2069, 2069, 652: 2069, 2069, 2069, 2069, 2069, 2069, 659: 2069, 2069, 2069, 2069, 2069, 2069, 2069, 669: 2069, 671: 2069, 2069, 2069, 677: 2069, 696: 2069, 746: 2069, 754: 2069, 758: 2069, 2069},
{2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 4789, 2068, 2068, 2068, 2068, 2068, 576: 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 588: 2068, 590: 2068, 2068, 2068, 594: 2068, 596: 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 619: 2068, 2068, 2068, 2068, 2068, 2068, 627: 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 647: 2068, 2068, 2068, 2068, 652: 2068, 2068, 2068, 2068, 2068, 2068, 659: 2068, 2068, 2068, 2068, 2068, 2068, 2068, 669: 2068, 671: 2068, 2068, 2068, 677: 2068, 696: 2068, 746: 2068, 754: 2068, 758: 2068, 2068},
// 790
{2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 1479, 2065, 2065, 2065, 2065, 2065, 576: 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 588: 2065, 590: 2065, 2065, 2065, 594: 2065, 596: 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 619: 2065, 2065, 2065, 2065, 2065, 2065, 627: 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 647: 2065, 2065, 2065, 2065, 652: 2065, 2065, 2065, 2065, 2065, 2065, 659: 2065, 2065, 2065, 2065, 2065, 2065, 2065, 669: 2065, 671: 2065, 2065, 2065, 677: 2065, 696: 2065, 746: 2065, 754: 2065, 758: 2065, 2065},
{2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 1504, 2063, 2063, 2063, 2063, 2063, 576: 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 588: 2063, 590: 2063, 2063, 2063, 594: 2063, 596: 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 619: 2063, 2063, 2063, 2063, 2063, 2063, 627: 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 647: 2063, 2063, 2063, 2063, 652: 2063, 2063, 2063, 2063, 2063, 2063, 659: 2063, 2063, 2063, 2063, 2063, 2063, 2063, 669: 2063, 671: 2063, 2063, 2063, 677: 2063, 696: 2063, 746: 2063, 754: 2063, 758: 2063, 2063},
{2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 1489, 2050, 2050, 2050, 2050, 2050, 576: 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 588: 2050, 590: 2050, 2050, 2050, 594: 2050, 596: 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 619: 2050, 2050, 2050, 2050, 2050, 2050, 627: 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 647: 2050, 2050, 2050, 2050, 652: 2050, 2050, 2050, 2050, 2050, 2050, 659: 2050, 2050, 2050, 2050, 2050, 2050, 2050, 669: 2050, 671: 2050, 2050, 2050, 677: 2050, 696: 2050, 746: 2050, 754: 2050, 758: 2050, 2050},
{2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 1486, 2027, 2027, 2027, 2027, 2027, 576: 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 588: 2027, 590: 2027, 2027, 2027, 594: 2027, 596: 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 619: 2027, 2027, 2027, 2027, 2027, 2027, 627: 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 647: 2027, 2027, 2027, 2027, 652: 2027, 2027, 2027, 2027, 2027, 2027, 659: 2027, 2027, 2027, 2027, 2027, 2027, 2027, 669: 2027, 671: 2027, 2027, 2027, 677: 2027, 696: 2027, 746: 2027, 754: 2027, 758: 2027, 2027},
{2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 1484, 2010, 2010, 2010, 2010, 2010, 576: 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 588: 2010, 590: 2010, 2010, 2010, 594: 2010, 596: 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 619: 2010, 2010, 2010, 2010, 2010, 2010, 627: 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 647: 2010, 2010, 2010, 2010, 652: 2010, 2010, 2010, 2010, 2010, 2010, 659: 2010, 2010, 2010, 2010, 2010, 2010, 2010, 669: 2010, 671: 2010, 2010, 2010, 677: 2010, 696: 2010, 746: 2010, 754: 2010, 758: 2010, 2010},
// 795
{2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 1505, 2009, 2009, 2009, 2009, 2009, 576: 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 588: 2009, 590: 2009, 2009, 2009, 594: 2009, 596: 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 619: 2009, 2009, 2009, 2009, 2009, 2009, 627: 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 647: 2009, 2009, 2009, 2009, 652: 2009, 2009, 2009, 2009, 2009, 2009, 659: 2009, 2009, 2009, 2009, 2009, 2009, 2009, 669: 2009, 671: 2009, 2009, 2009, 677: 2009, 696: 2009, 746: 2009, 754: 2009, 758: 2009, 2009},
{2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 1492, 2008, 2008, 2008, 2008, 2008, 576: 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 588: 2008, 590: 2008, 2008, 2008, 594: 2008, 596: 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 619: 2008, 2008, 2008, 2008, 2008, 2008, 627: 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 647: 2008, 2008, 2008, 2008, 652: 2008, 2008, 2008, 2008, 2008, 2008, 659: 2008, 2008, 2008, 2008, 2008, 2008, 2008, 669: 2008, 671: 2008, 2008, 2008, 677: 2008, 696: 2008, 746: 2008, 754: 2008, 758: 2008, 2008},
{2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 1494, 2004, 2004, 2004, 2004, 2004, 576: 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 588: 2004, 590: 2004, 2004, 2004, 594: 2004, 596: 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 619: 2004, 2004, 2004, 2004, 2004, 2004, 627: 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 647: 2004, 2004, 2004, 2004, 652: 2004, 2004, 2004, 2004, 2004, 2004, 659: 2004, 2004, 2004, 2004, 2004, 2004, 2004, 669: 2004, 671: 2004, 2004, 2004, 677: 2004, 696: 2004, 746: 2004, 754: 2004, 758: 2004, 2004},
{2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 1493, 2003, 2003, 2003, 2003, 2003, 576: 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 588: 2003, 590: 2003, 2003, 2003, 594: 2003, 596: 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 619: 2003, 2003, 2003, 2003, 2003, 2003, 627: 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 647: 2003, 2003, 2003, 2003, 652: 2003, 2003, 2003, 2003, 2003, 2003, 659: 2003, 2003, 2003, 2003, 2003, 2003, 2003, 669: 2003, 671: 2003, 2003, 2003, 677: 2003, 696: 2003, 746: 2003, 754: 2003, 758: 2003, 2003},
{1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1483, 1997, 1997, 1997, 1997, 1997, 576: 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 588: 1997, 590: 1997, 1997, 1997, 594: 1997, 596: 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 619: 1997, 1997, 1997, 1997, 1997, 1997, 627: 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 647: 1997, 1997, 1997, 1997, 652: 1997, 1997, 1997, 1997, 1997, 1997, 659: 1997, 1997, 1997, 1997, 1997, 1997, 1997, 669: 1997, 671: 1997, 1997, 1997, 677: 1997, 696: 1997, 746: 1997, 754: 1997, 758: 1997, 1997},
// 800
{1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 4786, 1883, 1883, 1883, 1883, 1883, 576: 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 588: 1883, 590: 1883, 1883, 1883, 594: 1883, 596: 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 619: 1883, 1883, 1883, 1883, 1883, 1883, 627: 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 647: 1883, 1883, 1883, 1883, 652: 1883, 1883, 1883, 1883, 1883, 1883, 659: 1883, 1883, 1883, 1883, 1883, 1883, 1883, 669: 1883, 671: 1883, 1883, 1883, 677: 1883, 696: 1883, 746: 1883, 754: 1883, 758: 1883, 1883},
{1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 4775, 1882, 1882, 1882, 1882, 1882, 576: 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 588: 1882, 590: 1882, 1882, 1882, 594: 1882, 596: 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 619: 1882, 1882, 1882, 1882, 1882, 1882, 627: 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 647: 1882, 1882, 1882, 1882, 652: 1882, 1882, 1882, 1882, 1882, 1882, 659: 1882, 1882, 1882, 1882, 1882, 1882, 1882, 669: 1882, 671: 1882, 1882, 1882, 677: 1882, 696: 1882, 746: 1882, 754: 1882, 758: 1882, 1882},
{1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1420, 1764, 1764, 1764, 1764, 1764, 576: 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 588: 1764, 590: 1764, 1764, 1764, 594: 1764, 596: 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 619: 1764, 1764, 1764, 1764, 1764, 1764, 627: 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 647: 1764, 1764, 1764, 1764, 652: 1764, 1764, 1764, 1764, 1764, 1764, 659: 1764, 1764, 1764, 1764, 1764, 1764, 1764, 669: 1764, 671: 1764, 1764, 1764, 677: 1764, 696: 1764, 746: 1764, 754: 1764, 758: 1764, 1764},
{1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 4772, 1756, 1756, 1756, 1756, 1756, 576: 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 588: 1756, 590: 1756, 1756, 1756, 594: 1756, 596: 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 619: 1756, 1756, 1756, 1756, 1756, 1756, 627: 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 647: 1756, 1756, 1756, 1756, 652: 1756, 1756, 1756, 1756, 1756, 1756, 659: 1756, 1756, 1756, 1756, 1756, 1756, 1756, 669: 1756, 671: 1756, 1756, 1756, 677: 1756, 696: 1756, 746: 1756, 754: 1756, 758: 1756, 1756},
{1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 4763, 1744, 1744, 1744, 1744, 1744, 576: 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 588: 1744, 590: 1744, 1744, 1744, 594: 1744, 596: 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 619: 1744, 1744, 1744, 1744, 1744, 1744, 627: 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 647: 1744, 1744, 1744, 1744, 652: 1744, 1744, 1744, 1744, 1744, 1744, 659: 1744, 1744, 1744, 1744, 1744, 1744, 1744, 669: 1744, 671: 1744, 1744, 1744, 677: 1744, 696: 1744, 746: 1744, 754: 1744, 758: 1744, 1744},
// 805
{1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1497, 1737, 1737, 1737, 1737, 1737, 576: 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 588: 1737, 590: 1737, 1737, 1737, 594: 1737, 596: 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 619: 1737, 1737, 1737, 1737, 1737, 1737, 627: 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 647: 1737, 1737, 1737, 1737, 652: 1737, 1737, 1737, 1737, 1737, 1737, 659: 1737, 1737, 1737, 1737, 1737, 1737, 1737, 669: 1737, 671: 1737, 1737, 1737, 677: 1737, 696: 1737, 746: 1737, 754: 1737, 758: 1737, 1737},
{1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1419, 1720, 1720, 1720, 1720, 1720, 576: 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 588: 1720, 590: 1720, 1720, 1720, 594: 1720, 596: 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 619: 1720, 1720, 1720, 1720, 1720, 1720, 627: 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 647: 1720, 1720, 1720, 1720, 652: 1720, 1720, 1720, 1720, 1720, 1720, 659: 1720, 1720, 1720, 1720, 1720, 1720, 1720, 669: 1720, 671: 1720, 1720, 1720, 677: 1720, 696: 1720, 746: 1720, 754: 1720, 758: 1720, 1720},
{1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 4756, 1707, 1707, 1707, 1707, 1707, 576: 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 588: 1707, 590: 1707, 1707, 1707, 594: 1707, 596: 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 619: 1707, 1707, 1707, 1707, 1707, 1707, 627: 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 647: 1707, 1707, 1707, 1707, 652: 1707, 1707, 1707, 1707, 1707, 1707, 659: 1707, 1707, 1707, 1707, 1707, 1707, 1707, 669: 1707, 671: 1707, 1707, 1707, 677: 1707, 696: 1707, 746: 1707, 754: 1707, 758: 1707, 1707},
{1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 4749, 1706, 1706, 1706, 1706, 1706, 576: 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 588: 1706, 590: 1706, 1706, 1706, 594: 1706, 596: 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 619: 1706, 1706, 1706, 1706, 1706, 1706, 627: 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 647: 1706, 1706, 1706, 1706, 652: 1706, 1706, 1706, 1706, 1706, 1706, 659: 1706, 1706, 1706, 1706, 1706, 1706, 1706, 669: 1706, 671: 1706, 1706, 1706, 677: 1706, 696: 1706, 746: 1706, 754: 1706, 758: 1706, 1706},
{1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 4729, 1685, 1685, 1685, 1685, 1685, 576: 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 588: 1685, 590: 1685, 1685, 1685, 594: 1685, 596: 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 619: 1685, 1685, 1685, 1685, 1685, 1685, 627: 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 1685, 647: 1685, 1685, 1685, 1685, 652: 1685, 1685, 1685, 1685, 1685, 1685, 659: 1685, 1685, 1685, 1685, 1685, 1685, 1685, 669: 1685, 671: 1685, 1685, 1685, 677: 1685, 696: 1685, 746: 1685, 754: 1685, 758: 1685, 1685},
// 810
{1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 4721, 1684, 1684, 1684, 1684, 1684, 576: 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 588: 1684, 590: 1684, 1684, 1684, 594: 1684, 596: 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 619: 1684, 1684, 1684, 1684, 1684, 1684, 627: 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 647: 1684, 1684, 1684, 1684, 652: 1684, 1684, 1684, 1684, 1684, 1684, 659: 1684, 1684, 1684, 1684, 1684, 1684, 1684, 669: 1684, 671: 1684, 1684, 1684, 677: 1684, 696: 1684, 746: 1684, 754: 1684, 758: 1684, 1684},
{1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 4715, 1683, 1683, 1683, 1683, 1683, 576: 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 588: 1683, 590: 1683, 1683, 1683, 594: 1683, 596: 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 619: 1683, 1683, 1683, 1683, 1683, 1683, 627: 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 647: 1683, 1683, 1683, 1683, 652: 1683, 1683, 1683, 1683, 1683, 1683, 659: 1683, 1683, 1683, 1683, 1683, 1683, 1683, 669: 1683, 671: 1683, 1683, 1683, 677: 1683, 696: 1683, 746: 1683, 754: 1683, 758: 1683, 1683},
{1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 570: 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 588: 1599, 590: 1599, 1599, 1599, 594: 1599, 596: 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 619: 1599, 1599, 1599, 1599, 1599, 1599, 627: 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 647: 1599, 1599, 1599, 1599, 652: 1599, 1599, 1599, 1599, 1599, 1599, 659: 1599, 1599, 1599, 1599, 1599, 1599, 1599, 669: 1599, 671: 1599, 1599, 1599, 677: 1599, 684: 1599, 696: 1599, 741: 1599, 1599, 1599, 1599, 1599, 1599, 1599},
{1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 570: 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 588: 1598, 590: 1598, 1598, 1598, 594: 1598, 596: 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 619: 1598, 1598, 1598, 1598, 1598, 1598, 627: 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 647: 1598, 1598, 1598, 1598, 652: 1598, 1598, 1598, 1598, 1598, 1598, 659: 1598, 1598, 1598, 1598, 1598, 1598, 1598, 669: 1598, 671: 1598, 1598, 1598, 677: 1598, 684: 1598, 696: 1598, 741: 1598, 1598, 1598, 1598, 1598, 1598, 1598},
{1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 570: 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 588: 1597, 590: 1597, 1597, 1597, 594: 1597, 596: 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 619: 1597, 1597, 1597, 1597, 1597, 1597, 627: 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 647: 1597, 1597, 1597, 1597, 652: 1597, 1597, 1597, 1597, 1597, 1597, 659: 1597, 1597, 1597, 1597, 1597, 1597, 1597, 669: 1597, 671: 1597, 1597, 1597, 677: 1597, 684: 1597, 696: 1597, 741: 1597, 1597, 1597, 1597, 1597, 1597, 1597},
// 815
{1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 570: 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 588: 1596, 590: 1596, 1596, 1596, 594: 1596, 596: 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 619: 1596, 1596, 1596, 1596, 1596, 1596, 627: 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 647: 1596, 1596, 1596, 1596, 652: 1596, 1596, 1596, 1596, 1596, 1596, 659: 1596, 1596, 1596, 1596, 1596, 1596, 1596, 669: 1596, 671: 1596, 1596, 1596, 677: 1596, 684: 1596, 696: 1596, 741: 1596, 1596, 1596, 1596, 1596, 1596, 1596},
{1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 570: 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 588: 1595, 590: 1595, 1595, 1595, 594: 1595, 596: 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 619: 1595, 1595, 1595, 1595, 1595, 1595, 627: 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 647: 1595, 1595, 1595, 1595, 652: 1595, 1595, 1595, 1595, 1595, 1595, 659: 1595, 1595, 1595, 1595, 1595, 1595, 1595, 669: 1595, 671: 1595, 1595, 1595, 677: 1595, 684: 1595, 696: 1595, 741: 1595, 1595, 1595, 1595, 1595, 1595, 1595},
{1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 570: 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 588: 1594, 590: 1594, 1594, 1594, 594: 1594, 596: 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 619: 1594, 1594, 1594, 1594, 1594, 1594, 627: 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 647: 1594, 1594, 1594, 1594, 652: 1594, 1594, 1594, 1594, 1594, 1594, 659: 1594, 1594, 1594, 1594, 1594, 1594, 1594, 669: 1594, 671: 1594, 1594, 1594, 677: 1594, 684: 1594, 696: 1594, 741: 1594, 1594, 1594, 1594, 1594, 1594, 1594},
{1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 570: 1593, 4714, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 588: 1593, 590: 1593, 1593, 1593, 594: 1593, 596: 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 619: 1593, 1593, 1593, 1593, 1593, 1593, 627: 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 647: 1593, 1593, 1593, 1593, 652: 1593, 1593, 1593, 1593, 1593, 1593, 659: 1593, 1593, 1593, 1593, 1593, 1593, 1593, 669: 1593, 671: 1593, 1593, 1593, 677: 1593, 684: 1593, 696: 1593, 741: 1593, 1593, 1593, 1593, 1593, 1593, 1593},
{571: 4711, 676: 4712, 678: 4713},
// 820
{1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 570: 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 588: 1591, 590: 1591, 1591, 1591, 594: 1591, 596: 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 619: 1591, 1591, 1591, 1591, 1591, 1591, 627: 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 647: 1591, 1591, 1591, 1591, 652: 1591, 1591, 1591, 1591, 1591, 1591, 659: 1591, 1591, 1591, 1591, 1591, 1591, 1591, 669: 1591, 671: 1591, 1591, 1591, 677: 1591, 684: 1591, 696: 1591, 741: 1591, 1591, 1591, 1591, 1591, 1591, 1591},
{1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 570: 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 588: 1590, 590: 1590, 1590, 1590, 594: 1590, 596: 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 619: 1590, 1590, 1590, 1590, 1590, 1590, 627: 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 647: 1590, 1590, 1590, 1590, 652: 1590, 1590, 1590, 1590, 1590, 1590, 659: 1590, 1590, 1590, 1590, 1590, 1590, 1590, 669: 1590, 671: 1590, 1590, 1590, 677: 1590, 684: 1590, 696: 1590, 741: 1590, 1590, 1590, 1590, 1590, 1590, 1590},
{1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 570: 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 588: 1587, 590: 1587, 1587, 1587, 594: 1587, 596: 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 619: 1587, 1587, 1587, 1587, 1587, 1587, 627: 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 647: 1587, 1587, 1587, 1587, 652: 1587, 1587, 1587, 1587, 1587, 1587, 659: 1587, 1587, 1587, 1587, 1587, 1587, 1587, 669: 1587, 671: 1587, 1587, 1587, 677: 1587, 684: 1587, 696: 1587, 741: 1587, 1587, 1587, 1587, 1587, 1587, 1587},
{1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 570: 1554, 1554, 1554, 1554, 1554, 576: 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 588: 1554, 590: 1554, 1554, 1554, 594: 1554, 596: 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 619: 1554, 1554, 1554, 1554, 1554, 1554, 627: 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 647: 1554, 1554, 1554, 1554, 652: 1554, 1554, 1554, 1554, 1554, 1554, 659: 1554, 1554, 1554, 1554, 1554, 1554, 1554, 669: 1554, 671: 1554, 1554, 1554, 677: 1554, 696: 1554, 746: 1554, 754: 4706, 758: 1554, 1554},
{1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 570: 1551, 1551, 1551, 1551, 1551, 576: 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 588: 1551, 590: 1551, 1551, 1551, 594: 1551, 596: 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 619: 1551, 1551, 1551, 1551, 1551, 1551, 627: 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 647: 1551, 1551, 1551, 1551, 652: 1551, 1551, 1551, 1551, 1551, 1551, 659: 1551, 1551, 1551, 1551, 1551, 1551, 1551, 669: 1551, 671: 1551, 1551, 1551, 677: 1551, 696: 1551, 746: 1551, 758: 4702, 4703},
// 825
{1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 570: 1550, 1550, 1550, 1550, 1550, 576: 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 588: 1550, 590: 1550, 1550, 1550, 594: 1550, 596: 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 619: 1550, 1550, 1550, 1550, 1550, 1550, 627: 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 647: 1550, 1550, 1550, 1550, 652: 1550, 1550, 1550, 1550, 1550, 1550, 659: 1550, 1550, 1550, 1550, 1550, 1550, 1550, 669: 1550, 671: 1550, 1550, 1550, 677: 1550, 696: 1550, 746: 1550},
{1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 570: 1549, 1549, 1549, 1549, 1549, 576: 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 588: 1549, 590: 1549, 1549, 1549, 594: 1549, 596: 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 619: 1549, 1549, 1549, 1549, 1549, 1549, 627: 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 647: 1549, 1549, 1549, 1549, 652: 1549, 1549, 1549, 1549, 1549, 1549, 659: 1549, 1549, 1549, 1549, 1549, 1549, 1549, 669: 1549, 671: 1549, 1549, 1549, 677: 1549, 696: 1549, 746: 1549},
{1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 570: 1548, 1548, 1548, 1548, 1548, 576: 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 588: 1548, 590: 1548, 1548, 1548, 594: 1548, 596: 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 619: 1548, 1548, 1548, 1548, 1548, 1548, 627: 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 647: 1548, 1548, 1548, 1548, 652: 1548, 1548, 1548, 1548, 1548, 1548, 659: 1548, 1548, 1548, 1548, 1548, 1548, 1548, 669: 1548, 671: 1548, 1548, 1548, 677: 1548, 696: 1548, 746: 1548},
{5, 5, 10: 5, 54: 5, 110: 5, 130: 5, 578: 3950, 696: 5, 746: 3951},
{1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 570: 1546, 1546, 1546, 1546, 1546, 576: 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 588: 1546, 590: 1546, 1546, 1546, 594: 1546, 596: 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 619: 1546, 1546, 1546, 1546, 1546, 1546, 627: 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 647: 1546, 1546, 1546, 1546, 652: 1546, 1546, 1546, 1546, 1546, 1546, 659: 1546, 1546, 1546, 1546, 1546, 1546, 1546, 669: 1546, 671: 1546, 1546, 1546, 677: 1546, 696: 1546, 746: 1546},
// 830
{1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 570: 1545, 1545, 1545, 1545, 1545, 576: 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 588: 1545, 590: 1545, 1545, 1545, 594: 1545, 596: 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 619: 1545, 1545, 1545, 1545, 1545, 1545, 627: 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 647: 1545, 1545, 1545, 1545, 652: 1545, 1545, 1545, 1545, 1545, 1545, 659: 1545, 1545, 1545, 1545, 1545, 1545, 1545, 669: 1545, 671: 1545, 1545, 1545, 677: 1545, 696: 1545, 746: 1545},
{1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 570: 1544, 1544, 1544, 1544, 1544, 576: 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 588: 1544, 590: 1544, 1544, 1544, 594: 1544, 596: 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 619: 1544, 1544, 1544, 1544, 1544, 1544, 627: 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 647: 1544, 1544, 1544, 1544, 652: 1544, 1544, 1544, 1544, 1544, 1544, 659: 1544, 1544, 1544, 1544, 1544, 1544, 1544, 669: 1544, 671: 1544, 1544, 1544, 677: 1544, 696: 1544, 746: 1544},
{1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 570: 1543, 1543, 1543, 1543, 1543, 576: 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 588: 1543, 590: 1543, 1543, 1543, 594: 1543, 596: 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 619: 1543, 1543, 1543, 1543, 1543, 1543, 627: 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 647: 1543, 1543, 1543, 1543, 652: 1543, 1543, 1543, 1543, 1543, 1543, 659: 1543, 1543, 1543, 1543, 1543, 1543, 1543, 669: 1543, 671: 1543, 1543, 1543, 677: 1543, 696: 1543, 746: 1543},
{1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 570: 1542, 1542, 1542, 1542, 1542, 576: 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 588: 1542, 590: 1542, 1542, 1542, 594: 1542, 596: 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 619: 1542, 1542, 1542, 1542, 1542, 1542, 627: 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 647: 1542, 1542, 1542, 1542, 652: 1542, 1542, 1542, 1542, 1542, 1542, 659: 1542, 1542, 1542, 1542, 1542, 1542, 1542, 669: 1542, 671: 1542, 1542, 1542, 677: 1542, 696: 1542, 746: 1542},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3783, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3874, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 4701, 3855, 3937, 3854, 3851},
// 835
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3783, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3874, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 4700, 3855, 3937, 3854, 3851},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3783, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3874, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 4699, 3855, 3937, 3854, 3851},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3783, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3874, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 4698, 3855, 3937, 3854, 3851},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3783, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3874, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 4697, 3855, 3937, 3854, 3851},
{1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 570: 1535, 1535, 1535, 1535, 1535, 576: 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 588: 1535, 590: 1535, 1535, 1535, 594: 1535, 596: 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 619: 1535, 1535, 1535, 1535, 1535, 1535, 627: 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 647: 1535, 1535, 1535, 1535, 652: 1535, 1535, 1535, 1535, 1535, 1535, 659: 1535, 1535, 1535, 1535, 1535, 1535, 1535, 669: 1535, 671: 1535, 1535, 1535, 677: 1535, 696: 1535, 746: 1535},
// 840
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 3075, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 4065, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 646: 3073, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 3069, 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 4064, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4691, 846: 4067, 3070, 3071, 3072, 3081, 3079, 3078, 3077, 856: 4066, 4069, 4068, 894: 4692},
{569: 4686},
{569: 3076, 815: 4685},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 4682, 3217, 3218, 3216},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3783, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3874, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 4681, 3855, 3937, 3854, 3851},
// 845
{569: 4674},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 628: 1349, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4661, 1413: 4662},
{569: 4595},
{569: 4120},
{569: 4109},
// 850
{569: 1502},
{569: 1499},
{569: 1498},
{569: 1495},
{569: 1491},
// 855
{569: 1488},
{569: 1487},
{569: 1485},
{1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 576: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 588: 1474, 590: 1474, 1474, 1474, 594: 1474, 596: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 619: 1474, 1474, 1474, 1474, 1474, 1474, 627: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 647: 1474, 1474, 1474, 1474, 652: 1474, 1474, 1474, 1474, 1474, 1474, 659: 1474, 1474, 1474, 1474, 1474, 1474, 1474, 669: 1474, 671: 1474, 1474, 1474, 677: 1474, 696: 1474, 746: 1474},
{1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 576: 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 588: 1473, 590: 1473, 1473, 1473, 594: 1473, 596: 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 619: 1473, 1473, 1473, 1473, 1473, 1473, 627: 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 647: 1473, 1473, 1473, 1473, 652: 1473, 1473, 1473, 1473, 1473, 1473, 659: 1473, 1473, 1473, 1473, 1473, 1473, 1473, 669: 1473, 671: 1473, 1473, 1473, 677: 1473, 696: 1473, 746: 1473},
// 860
{1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 576: 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 588: 1472, 590: 1472, 1472, 1472, 594: 1472, 596: 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 619: 1472, 1472, 1472, 1472, 1472, 1472, 627: 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 647: 1472, 1472, 1472, 1472, 652: 1472, 1472, 1472, 1472, 1472, 1472, 659: 1472, 1472, 1472, 1472, 1472, 1472, 1472, 669: 1472, 671: 1472, 1472, 1472, 677: 1472, 696: 1472, 746: 1472},
{1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 576: 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 588: 1471, 590: 1471, 1471, 1471, 594: 1471, 596: 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 619: 1471, 1471, 1471, 1471, 1471, 1471, 627: 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 647: 1471, 1471, 1471, 1471, 652: 1471, 1471, 1471, 1471, 1471, 1471, 659: 1471, 1471, 1471, 1471, 1471, 1471, 1471, 669: 1471, 671: 1471, 1471, 1471, 677: 1471, 696: 1471, 746: 1471},
{1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 576: 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 588: 1470, 590: 1470, 1470, 1470, 594: 1470, 596: 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 619: 1470, 1470, 1470, 1470, 1470, 1470, 627: 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 647: 1470, 1470, 1470, 1470, 652: 1470, 1470, 1470, 1470, 1470, 1470, 659: 1470, 1470, 1470, 1470, 1470, 1470, 1470, 669: 1470, 671: 1470, 1470, 1470, 677: 1470, 696: 1470, 746: 1470},
{1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 576: 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 588: 1469, 590: 1469, 1469, 1469, 594: 1469, 596: 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 619: 1469, 1469, 1469, 1469, 1469, 1469, 627: 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 647: 1469, 1469, 1469, 1469, 652: 1469, 1469, 1469, 1469, 1469, 1469, 659: 1469, 1469, 1469, 1469, 1469, 1469, 1469, 669: 1469, 671: 1469, 1469, 1469, 677: 1469, 696: 1469, 746: 1469},
{1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 576: 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 588: 1468, 590: 1468, 1468, 1468, 594: 1468, 596: 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 619: 1468, 1468, 1468, 1468, 1468, 1468, 627: 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 647: 1468, 1468, 1468, 1468, 652: 1468, 1468, 1468, 1468, 1468, 1468, 659: 1468, 1468, 1468, 1468, 1468, 1468, 1468, 669: 1468, 671: 1468, 1468, 1468, 677: 1468, 696: 1468, 746: 1468},
// 865
{1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 576: 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 588: 1467, 590: 1467, 1467, 1467, 594: 1467, 596: 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 619: 1467, 1467, 1467, 1467, 1467, 1467, 627: 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 647: 1467, 1467, 1467, 1467, 652: 1467, 1467, 1467, 1467, 1467, 1467, 659: 1467, 1467, 1467, 1467, 1467, 1467, 1467, 669: 1467, 671: 1467, 1467, 1467, 677: 1467, 696: 1467, 746: 1467},
{1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 576: 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 588: 1466, 590: 1466, 1466, 1466, 594: 1466, 596: 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 619: 1466, 1466, 1466, 1466, 1466, 1466, 627: 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 647: 1466, 1466, 1466, 1466, 652: 1466, 1466, 1466, 1466, 1466, 1466, 659: 1466, 1466, 1466, 1466, 1466, 1466, 1466, 669: 1466, 671: 1466, 1466, 1466, 677: 1466, 696: 1466, 746: 1466},
{1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 576: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 588: 1465, 590: 1465, 1465, 1465, 594: 1465, 596: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 619: 1465, 1465, 1465, 1465, 1465, 1465, 627: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 647: 1465, 1465, 1465, 1465, 652: 1465, 1465, 1465, 1465, 1465, 1465, 659: 1465, 1465, 1465, 1465, 1465, 1465, 1465, 669: 1465, 671: 1465, 1465, 1465, 677: 1465, 696: 1465, 746: 1465},
{1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 576: 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 588: 1464, 590: 1464, 1464, 1464, 594: 1464, 596: 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 619: 1464, 1464, 1464, 1464, 1464, 1464, 627: 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 647: 1464, 1464, 1464, 1464, 652: 1464, 1464, 1464, 1464, 1464, 1464, 659: 1464, 1464, 1464, 1464, 1464, 1464, 1464, 669: 1464, 671: 1464, 1464, 1464, 677: 1464, 696: 1464, 746: 1464},
{569: 4592},
// 870
{569: 4589},
{1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 4586, 1476, 1476, 1476, 1476, 1476, 576: 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 588: 1476, 590: 1476, 1476, 1476, 594: 1476, 596: 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 619: 1476, 1476, 1476, 1476, 1476, 1476, 627: 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 647: 1476, 1476, 1476, 1476, 652: 1476, 1476, 1476, 1476, 1476, 1476, 659: 1476, 1476, 1476, 1476, 1476, 1476, 1476, 669: 1476, 671: 1476, 1476, 1476, 677: 1476, 696: 1476, 746: 1476, 1272: 4587},
{569: 4584},
{1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 4580, 1381, 1381, 1381, 1381, 1381, 576: 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 588: 1381, 590: 1381, 1381, 1381, 594: 1381, 596: 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 619: 1381, 1381, 1381, 1381, 1381, 1381, 627: 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 647: 1381, 1381, 1381, 1381, 652: 1381, 1381, 1381, 1381, 1381, 1381, 659: 1381, 1381, 1381, 1381, 1381, 1381, 1381, 669: 1381, 671: 1381, 1381, 1381, 677: 1381, 696: 1381, 746: 1381, 1424: 4579},
{569: 4571},
// 875
{569: 4567},
{569: 4562},
{569: 4559},
{569: 4554},
{569: 4545},
// 880
{569: 4538},
{569: 4533},
{569: 4528},
{569: 4514},
{569: 4497},
// 885
{1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 570: 1429, 1429, 1429, 1429, 1429, 576: 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 588: 1429, 590: 1429, 1429, 1429, 594: 1429, 596: 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 619: 1429, 1429, 1429, 1429, 1429, 1429, 627: 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 647: 1429, 1429, 1429, 1429, 652: 1429, 1429, 1429, 1429, 1429, 1429, 659: 1429, 1429, 1429, 1429, 1429, 1429, 1429, 669: 1429, 671: 1429, 1429, 1429, 677: 1429, 696: 1429, 746: 1429},
{569: 4490},
{569: 1422},
{569: 1421},
{1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 570: 1413, 1413, 1413, 1413, 1413, 576: 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 588: 1413, 590: 1413, 1413, 1413, 594: 1413, 596: 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 619: 1413, 1413, 1413, 1413, 1413, 1413, 627: 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 647: 1413, 1413, 1413, 1413, 652: 1413, 1413, 1413, 1413, 1413, 1413, 659: 1413, 1413, 1413, 1413, 1413, 1413, 1413, 669: 1413, 671: 1413, 1413, 1413, 677: 1413, 696: 1413, 746: 1413},
// 890
{569: 4487},
{569: 4484},
{569: 4476},
{569: 4468},
{569: 4460},
// 895
{569: 4446},
{569: 4437},
{569: 4432},
{569: 4427},
{569: 4422},
// 900
{569: 4417},
{569: 4412},
{569: 4407},
{569: 4394},
{569: 4391},
// 905
{569: 4388},
{569: 4385},
{569: 4382},
{569: 4379},
{569: 4375},
// 910
{569: 4369},
{569: 4356},
{569: 4351},
{569: 4346},
{569: 3940},
// 915
{1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 570: 1017, 1017, 1017, 1017, 1017, 576: 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 588: 1017, 590: 1017, 1017, 1017, 594: 1017, 596: 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 619: 1017, 1017, 1017, 1017, 1017, 1017, 627: 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 647: 1017, 1017, 1017, 1017, 652: 1017, 1017, 1017, 1017, 1017, 1017, 659: 1017, 1017, 1017, 1017, 1017, 1017, 1017, 669: 1017, 671: 1017, 1017, 1017, 677: 1017, 696: 1017, 746: 1017},
{1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 570: 1016, 1016, 1016, 1016, 1016, 576: 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 588: 1016, 590: 1016, 1016, 1016, 594: 1016, 596: 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 619: 1016, 1016, 1016, 1016, 1016, 1016, 627: 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 647: 1016, 1016, 1016, 1016, 652: 1016, 1016, 1016, 1016, 1016, 1016, 659: 1016, 1016, 1016, 1016, 1016, 1016, 1016, 669: 1016, 671: 1016, 1016, 1016, 677: 1016, 696: 1016, 746: 1016},
{1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 570: 1015, 1015, 1015, 1015, 1015, 576: 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 588: 1015, 590: 1015, 1015, 1015, 594: 1015, 596: 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 619: 1015, 1015, 1015, 1015, 1015, 1015, 627: 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 647: 1015, 1015, 1015, 1015, 652: 1015, 1015, 1015, 1015, 1015, 1015, 659: 1015, 1015, 1015, 1015, 1015, 1015, 1015, 669: 1015, 671: 1015, 1015, 1015, 677: 1015, 696: 1015, 746: 1015},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 3942},
{1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 570: 1014, 1014, 1014, 1014, 1014, 576: 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 588: 1014, 590: 1014, 1014, 1014, 594: 1014, 596: 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 619: 1014, 1014, 1014, 1014, 1014, 1014, 627: 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 647: 1014, 1014, 1014, 1014, 652: 1014, 1014, 1014, 1014, 1014, 1014, 659: 1014, 1014, 1014, 1014, 1014, 1014, 1014, 669: 1014, 671: 1014, 1014, 1014, 677: 1014, 746: 1014, 757: 4344},
// 920
{10: 4275, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4274},
{569: 4246},
{2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 570: 2325, 2325, 2325, 2325, 577: 2325, 579: 2325, 2325, 2325, 2325, 588: 2325, 590: 2325, 4229, 2325, 594: 2325, 596: 2325, 2325, 2325, 2325, 601: 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 620: 2325, 2325, 2325, 2325, 2325, 627: 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 647: 2325, 4226, 4224, 652: 4223, 4231, 4225, 4227, 4228, 4230, 1395: 4222, 1440: 4221},
{2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 570: 2296, 2296, 2296, 2296, 577: 2296, 579: 2296, 2296, 2296, 2296, 588: 2296, 590: 2296, 2296, 2296, 594: 2296, 596: 2296, 2296, 2296, 2296, 601: 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 620: 2296, 2296, 2296, 2296, 2296, 627: 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2296, 647: 2296, 2296, 2296, 652: 2296, 2296, 2296, 2296, 2296, 2296},
// 925
{2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 570: 2265, 2265, 2265, 2265, 4032, 576: 4031, 2265, 579: 2265, 2265, 2265, 2265, 4002, 4003, 4008, 588: 2265, 590: 2265, 2265, 2265, 594: 2265, 596: 2265, 2265, 2265, 2265, 4004, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 619: 4036, 2265, 2265, 2265, 2265, 2265, 627: 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 4035, 647: 2265, 2265, 2265, 4005, 652: 2265, 2265, 2265, 2265, 2265, 2265, 659: 4006, 3999, 4009, 3998, 4007, 4000, 4001, 669: 4033, 671: 4037, 4045, 4046, 677: 4044, 961: 4034, 1303: 4038, 1383: 4040, 1430: 4042, 1436: 4039, 1442: 4041, 1498: 4043},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 1498, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 3958},
{1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 570: 1555, 1555, 1555, 1555, 1555, 576: 1555, 1555, 3950, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 588: 1555, 590: 1555, 1555, 1555, 594: 1555, 596: 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 619: 1555, 1555, 1555, 1555, 1555, 1555, 627: 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 647: 1555, 1555, 1555, 1555, 652: 1555, 1555, 1555, 1555, 1555, 1555, 659: 1555, 1555, 1555, 1555, 1555, 1555, 1555, 669: 1555, 671: 1555, 1555, 1555, 677: 1555, 746: 3951},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 571: 3956, 625: 3955, 811: 3957, 3217, 3218, 3216, 845: 3954, 1020: 3953},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3783, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3874, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3952, 3855, 3937, 3854, 3851},
// 930
{1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 570: 1537, 1537, 1537, 1537, 1537, 576: 1537, 1537, 3950, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 588: 1537, 590: 1537, 1537, 1537, 594: 1537, 596: 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 619: 1537, 1537, 1537, 1537, 1537, 1537, 627: 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 647: 1537, 1537, 1537, 1537, 652: 1537, 1537, 1537, 1537, 1537, 1537, 659: 1537, 1537, 1537, 1537, 1537, 1537, 1537, 669: 1537, 671: 1537, 1537, 1537, 677: 1537, 696: 1537, 746: 1537},
{1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 570: 1547, 1547, 1547, 1547, 1547, 576: 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 588: 1547, 590: 1547, 1547, 1547, 594: 1547, 596: 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 619: 1547, 1547, 1547, 1547, 1547, 1547, 627: 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 647: 1547, 1547, 1547, 1547, 652: 1547, 1547, 1547, 1547, 1547, 1547, 659: 1547, 1547, 1547, 1547, 1547, 1547, 1547, 669: 1547, 671: 1547, 1547, 1547, 677: 1547, 696: 1547, 746: 1547},
{1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 596: 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 619: 1021, 1021, 1021, 1021, 1021, 1021, 627: 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 652: 1021, 1021, 1021, 1021, 1021, 1021, 659: 1021, 1021, 1021, 1021, 1021, 1021, 1021, 669: 1021, 671: 1021, 1021, 1021, 677: 1021, 684: 1021, 694: 1021, 696: 1021, 741: 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021},
{1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 596: 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 619: 1020, 1020, 1020, 1020, 1020, 1020, 627: 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 652: 1020, 1020, 1020, 1020, 1020, 1020, 659: 1020, 1020, 1020, 1020, 1020, 1020, 1020, 669: 1020, 671: 1020, 1020, 1020, 677: 1020, 684: 1020, 694: 1020, 696: 1020, 741: 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020},
{479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 596: 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 619: 479, 479, 479, 479, 479, 479, 479, 627: 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 652: 479, 479, 479, 479, 479, 479, 659: 479, 479, 479, 479, 479, 479, 479, 668: 479, 479, 671: 479, 479, 479, 677: 479, 684: 479, 694: 479, 696: 479, 741: 479, 479, 479, 479, 479, 479, 479, 479, 479, 752: 479, 479, 756: 479, 479, 761: 479, 763: 479, 479, 479},
// 935
{478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 596: 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 619: 478, 478, 478, 478, 478, 478, 478, 627: 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 652: 478, 478, 478, 478, 478, 478, 659: 478, 478, 478, 478, 478, 478, 478, 668: 478, 478, 671: 478, 478, 478, 677: 478, 684: 478, 694: 478, 696: 478, 741: 478, 478, 478, 478, 478, 478, 478, 478, 478, 752: 478, 478, 756: 478, 478, 761: 478, 763: 478, 478, 478},
{129: 3987, 133: 3995, 154: 3983, 156: 3980, 3982, 3979, 3981, 3985, 3986, 3991, 3990, 3989, 3993, 3994, 3988, 3992, 3984, 606: 3965, 3963, 3964, 3962, 3960, 633: 3977, 3974, 3976, 3975, 3971, 3973, 3972, 3969, 3970, 3968, 3978, 841: 3961, 3959, 927: 3967, 941: 3966},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4030},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4029},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4028},
// 940
{2: 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 11: 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 54: 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 571: 2315, 574: 2315, 2315, 2315, 581: 2315, 2315, 2315, 2315, 2315, 2315, 2315, 589: 2315, 593: 2315, 595: 2315, 618: 2315, 625: 2315, 2315, 651: 2315, 658: 2315, 666: 2315, 2315, 2315, 670: 2315, 674: 2315, 2315, 2315, 678: 2315, 2315, 2315, 2315, 2315, 2315, 685: 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 695: 2315, 697: 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 750: 2315},
{2: 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 11: 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 54: 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 571: 2314, 574: 2314, 2314, 2314, 581: 2314, 2314, 2314, 2314, 2314, 2314, 2314, 589: 2314, 593: 2314, 595: 2314, 618: 2314, 625: 2314, 2314, 651: 2314, 658: 2314, 666: 2314, 2314, 2314, 670: 2314, 674: 2314, 2314, 2314, 678: 2314, 2314, 2314, 2314, 2314, 2314, 685: 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 695: 2314, 697: 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 750: 2314},
{2: 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 11: 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 54: 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 571: 2313, 574: 2313, 2313, 2313, 581: 2313, 2313, 2313, 2313, 2313, 2313, 2313, 589: 2313, 593: 2313, 595: 2313, 618: 2313, 625: 2313, 2313, 651: 2313, 658: 2313, 666: 2313, 2313, 2313, 670: 2313, 674: 2313, 2313, 2313, 678: 2313, 2313, 2313, 2313, 2313, 2313, 685: 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 695: 2313, 697: 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 750: 2313},
{2: 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 11: 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 54: 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 571: 2312, 574: 2312, 2312, 2312, 581: 2312, 2312, 2312, 2312, 2312, 2312, 2312, 589: 2312, 593: 2312, 595: 2312, 618: 2312, 625: 2312, 2312, 651: 2312, 658: 2312, 666: 2312, 2312, 2312, 670: 2312, 674: 2312, 2312, 2312, 678: 2312, 2312, 2312, 2312, 2312, 2312, 685: 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 695: 2312, 697: 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 750: 2312},
{583: 3996},
// 945
{1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 587: 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 596: 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 619: 1378, 1378, 1378, 1378, 1378, 1378, 627: 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, 652: 1378, 1378, 1378, 1378, 1378, 1378, 659: 1378, 1378, 1378, 1378, 1378, 1378, 1378, 669: 1378, 671: 1378, 1378, 1378, 677: 1378, 694: 1378, 748: 1378, 1378, 751: 1378},
{1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 587: 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 596: 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 619: 1377, 1377, 1377, 1377, 1377, 1377, 627: 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 652: 1377, 1377, 1377, 1377, 1377, 1377, 659: 1377, 1377, 1377, 1377, 1377, 1377, 1377, 669: 1377, 671: 1377, 1377, 1377, 677: 1377, 694: 1377, 748: 1377, 1377, 751: 1377},
{1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 587: 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 596: 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 619: 1376, 1376, 1376, 1376, 1376, 1376, 627: 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 652: 1376, 1376, 1376, 1376, 1376, 1376, 659: 1376, 1376, 1376, 1376, 1376, 1376, 1376, 669: 1376, 671: 1376, 1376, 1376, 677: 1376, 694: 1376, 748: 1376, 1376, 751: 1376},
{1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 587: 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 596: 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 619: 1375, 1375, 1375, 1375, 1375, 1375, 627: 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 652: 1375, 1375, 1375, 1375, 1375, 1375, 659: 1375, 1375, 1375, 1375, 1375, 1375, 1375, 669: 1375, 671: 1375, 1375, 1375, 677: 1375, 694: 1375, 748: 1375, 1375, 751: 1375},
{1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 587: 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 596: 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 619: 1374, 1374, 1374, 1374, 1374, 1374, 627: 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 652: 1374, 1374, 1374, 1374, 1374, 1374, 659: 1374, 1374, 1374, 1374, 1374, 1374, 1374, 669: 1374, 671: 1374, 1374, 1374, 677: 1374, 694: 1374, 748: 1374, 1374, 751: 1374},
// 950
{1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 587: 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 596: 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 619: 1373, 1373, 1373, 1373, 1373, 1373, 627: 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 652: 1373, 1373, 1373, 1373, 1373, 1373, 659: 1373, 1373, 1373, 1373, 1373, 1373, 1373, 669: 1373, 671: 1373, 1373, 1373, 677: 1373, 694: 1373, 748: 1373, 1373, 751: 1373},
{1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 587: 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 596: 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 619: 1372, 1372, 1372, 1372, 1372, 1372, 627: 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 652: 1372, 1372, 1372, 1372, 1372, 1372, 659: 1372, 1372, 1372, 1372, 1372, 1372, 1372, 669: 1372, 671: 1372, 1372, 1372, 677: 1372, 694: 1372, 748: 1372, 1372, 751: 1372},
{1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 587: 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 596: 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 619: 1371, 1371, 1371, 1371, 1371, 1371, 627: 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 652: 1371, 1371, 1371, 1371, 1371, 1371, 659: 1371, 1371, 1371, 1371, 1371, 1371, 1371, 669: 1371, 671: 1371, 1371, 1371, 677: 1371, 694: 1371, 748: 1371, 1371, 751: 1371},
{1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 587: 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 596: 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 619: 1370, 1370, 1370, 1370, 1370, 1370, 627: 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 652: 1370, 1370, 1370, 1370, 1370, 1370, 659: 1370, 1370, 1370, 1370, 1370, 1370, 1370, 669: 1370, 671: 1370, 1370, 1370, 677: 1370, 694: 1370, 748: 1370, 1370, 751: 1370},
{1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 587: 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 596: 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 619: 1369, 1369, 1369, 1369, 1369, 1369, 627: 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 652: 1369, 1369, 1369, 1369, 1369, 1369, 659: 1369, 1369, 1369, 1369, 1369, 1369, 1369, 669: 1369, 671: 1369, 1369, 1369, 677: 1369, 694: 1369, 748: 1369, 1369, 751: 1369},
// 955
{1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 587: 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 596: 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 619: 1368, 1368, 1368, 1368, 1368, 1368, 627: 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 652: 1368, 1368, 1368, 1368, 1368, 1368, 659: 1368, 1368, 1368, 1368, 1368, 1368, 1368, 669: 1368, 671: 1368, 1368, 1368, 677: 1368, 694: 1368, 748: 1368, 1368, 751: 1368},
{1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 587: 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 596: 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 619: 1367, 1367, 1367, 1367, 1367, 1367, 627: 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 652: 1367, 1367, 1367, 1367, 1367, 1367, 659: 1367, 1367, 1367, 1367, 1367, 1367, 1367, 669: 1367, 671: 1367, 1367, 1367, 677: 1367, 694: 1367, 748: 1367, 1367, 751: 1367},
{1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 587: 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 596: 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 619: 1366, 1366, 1366, 1366, 1366, 1366, 627: 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 652: 1366, 1366, 1366, 1366, 1366, 1366, 659: 1366, 1366, 1366, 1366, 1366, 1366, 1366, 669: 1366, 671: 1366, 1366, 1366, 677: 1366, 694: 1366, 748: 1366, 1366, 751: 1366},
{1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 587: 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 596: 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 619: 1365, 1365, 1365, 1365, 1365, 1365, 627: 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 652: 1365, 1365, 1365, 1365, 1365, 1365, 659: 1365, 1365, 1365, 1365, 1365, 1365, 1365, 669: 1365, 671: 1365, 1365, 1365, 677: 1365, 694: 1365, 748: 1365, 1365, 751: 1365},
{1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 587: 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 596: 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 619: 1364, 1364, 1364, 1364, 1364, 1364, 627: 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 652: 1364, 1364, 1364, 1364, 1364, 1364, 659: 1364, 1364, 1364, 1364, 1364, 1364, 1364, 669: 1364, 671: 1364, 1364, 1364, 677: 1364, 694: 1364, 748: 1364, 1364, 751: 1364},
// 960
{1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 587: 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 596: 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 619: 1363, 1363, 1363, 1363, 1363, 1363, 627: 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 652: 1363, 1363, 1363, 1363, 1363, 1363, 659: 1363, 1363, 1363, 1363, 1363, 1363, 1363, 669: 1363, 671: 1363, 1363, 1363, 677: 1363, 694: 1363, 748: 1363, 1363, 751: 1363},
{1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 587: 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 596: 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 619: 1362, 1362, 1362, 1362, 1362, 1362, 627: 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 652: 1362, 1362, 1362, 1362, 1362, 1362, 659: 1362, 1362, 1362, 1362, 1362, 1362, 1362, 669: 1362, 671: 1362, 1362, 1362, 677: 1362, 694: 1362, 748: 1362, 1362, 751: 1362},
{1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 587: 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 596: 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 619: 1361, 1361, 1361, 1361, 1361, 1361, 627: 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 652: 1361, 1361, 1361, 1361, 1361, 1361, 659: 1361, 1361, 1361, 1361, 1361, 1361, 1361, 669: 1361, 671: 1361, 1361, 1361, 677: 1361, 694: 1361, 748: 1361, 1361, 751: 1361},
{1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 587: 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 596: 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 619: 1360, 1360, 1360, 1360, 1360, 1360, 627: 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 652: 1360, 1360, 1360, 1360, 1360, 1360, 659: 1360, 1360, 1360, 1360, 1360, 1360, 1360, 669: 1360, 671: 1360, 1360, 1360, 677: 1360, 694: 1360, 748: 1360, 1360, 751: 1360},
{1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 587: 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 596: 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 619: 1359, 1359, 1359, 1359, 1359, 1359, 627: 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 652: 1359, 1359, 1359, 1359, 1359, 1359, 659: 1359, 1359, 1359, 1359, 1359, 1359, 1359, 669: 1359, 671: 1359, 1359, 1359, 677: 1359, 694: 1359, 748: 1359, 1359, 751: 1359},
// 965
{1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 587: 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 596: 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 619: 1358, 1358, 1358, 1358, 1358, 1358, 627: 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 652: 1358, 1358, 1358, 1358, 1358, 1358, 659: 1358, 1358, 1358, 1358, 1358, 1358, 1358, 669: 1358, 671: 1358, 1358, 1358, 677: 1358, 694: 1358, 748: 1358, 1358, 751: 1358},
{1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 587: 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 596: 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 619: 1357, 1357, 1357, 1357, 1357, 1357, 627: 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 652: 1357, 1357, 1357, 1357, 1357, 1357, 659: 1357, 1357, 1357, 1357, 1357, 1357, 1357, 669: 1357, 671: 1357, 1357, 1357, 677: 1357, 694: 1357, 748: 1357, 1357, 751: 1357},
{1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 587: 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 596: 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 619: 1356, 1356, 1356, 1356, 1356, 1356, 627: 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 652: 1356, 1356, 1356, 1356, 1356, 1356, 659: 1356, 1356, 1356, 1356, 1356, 1356, 1356, 669: 1356, 671: 1356, 1356, 1356, 677: 1356, 694: 1356, 748: 1356, 1356, 751: 1356},
{1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 587: 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 596: 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 619: 1355, 1355, 1355, 1355, 1355, 1355, 627: 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 652: 1355, 1355, 1355, 1355, 1355, 1355, 659: 1355, 1355, 1355, 1355, 1355, 1355, 1355, 669: 1355, 671: 1355, 1355, 1355, 677: 1355, 694: 1355, 748: 1355, 1355, 751: 1355},
{1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 587: 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 596: 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 619: 1354, 1354, 1354, 1354, 1354, 1354, 627: 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 652: 1354, 1354, 1354, 1354, 1354, 1354, 659: 1354, 1354, 1354, 1354, 1354, 1354, 1354, 669: 1354, 671: 1354, 1354, 1354, 677: 1354, 694: 1354, 748: 1354, 1354, 751: 1354},
// 970
{1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 587: 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 596: 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 619: 1353, 1353, 1353, 1353, 1353, 1353, 627: 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 652: 1353, 1353, 1353, 1353, 1353, 1353, 659: 1353, 1353, 1353, 1353, 1353, 1353, 1353, 669: 1353, 671: 1353, 1353, 1353, 677: 1353, 694: 1353, 748: 1353, 1353, 751: 1353},
{1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 587: 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 596: 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 619: 1352, 1352, 1352, 1352, 1352, 1352, 627: 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 652: 1352, 1352, 1352, 1352, 1352, 1352, 659: 1352, 1352, 1352, 1352, 1352, 1352, 1352, 669: 1352, 671: 1352, 1352, 1352, 677: 1352, 694: 1352, 748: 1352, 1352, 751: 1352},
{1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 587: 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 596: 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 619: 1351, 1351, 1351, 1351, 1351, 1351, 627: 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 652: 1351, 1351, 1351, 1351, 1351, 1351, 659: 1351, 1351, 1351, 1351, 1351, 1351, 1351, 669: 1351, 671: 1351, 1351, 1351, 677: 1351, 694: 1351, 748: 1351, 1351, 751: 1351},
{1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 587: 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 596: 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 619: 1350, 1350, 1350, 1350, 1350, 1350, 627: 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 652: 1350, 1350, 1350, 1350, 1350, 1350, 659: 1350, 1350, 1350, 1350, 1350, 1350, 1350, 669: 1350, 671: 1350, 1350, 1350, 677: 1350, 694: 1350, 748: 1350, 1350, 751: 1350},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3783, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3997},
// 975
{1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 570: 1562, 1562, 1562, 1562, 1562, 576: 1562, 1562, 579: 1562, 1562, 1562, 1562, 1562, 1562, 4008, 588: 1562, 590: 1562, 1562, 1562, 594: 1562, 596: 1562, 1562, 1562, 1562, 4004, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 619: 1562, 1562, 1562, 1562, 1562, 1562, 627: 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 647: 1562, 1562, 1562, 4005, 652: 1562, 1562, 1562, 1562, 1562, 1562, 659: 4006, 1562, 4009, 1562, 4007, 1562, 1562, 669: 1562, 671: 1562, 1562, 1562, 677: 1562},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3783, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 4027},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3783, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 4026},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3783, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 4025},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3783, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 4024},
// 980
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3783, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 4021, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 4020},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3783, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 4017, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 4016},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3783, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 4015},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3783, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 4014},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3783, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 4013},
// 985
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3783, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 4012},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3783, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 4011},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3783, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 4010},
{1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 570: 1556, 1556, 1556, 1556, 1556, 576: 1556, 1556, 579: 1556, 1556, 1556, 1556, 1556, 1556, 1556, 588: 1556, 590: 1556, 1556, 1556, 594: 1556, 596: 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 619: 1556, 1556, 1556, 1556, 1556, 1556, 627: 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 647: 1556, 1556, 1556, 1556, 652: 1556, 1556, 1556, 1556, 1556, 1556, 659: 1556, 1556, 1556, 1556, 1556, 1556, 1556, 669: 1556, 671: 1556, 1556, 1556, 677: 1556},
{1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 570: 1557, 1557, 1557, 1557, 1557, 576: 1557, 1557, 579: 1557, 1557, 1557, 1557, 1557, 1557, 1557, 588: 1557, 590: 1557, 1557, 1557, 594: 1557, 596: 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 619: 1557, 1557, 1557, 1557, 1557, 1557, 627: 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 647: 1557, 1557, 1557, 1557, 652: 1557, 1557, 1557, 1557, 1557, 1557, 659: 1557, 1557, 4009, 1557, 1557, 1557, 1557, 669: 1557, 671: 1557, 1557, 1557, 677: 1557},
// 990
{1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 570: 1558, 1558, 1558, 1558, 1558, 576: 1558, 1558, 579: 1558, 1558, 1558, 1558, 1558, 1558, 1558, 588: 1558, 590: 1558, 1558, 1558, 594: 1558, 596: 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 619: 1558, 1558, 1558, 1558, 1558, 1558, 627: 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 647: 1558, 1558, 1558, 1558, 652: 1558, 1558, 1558, 1558, 1558, 1558, 659: 1558, 1558, 4009, 1558, 1558, 1558, 1558, 669: 1558, 671: 1558, 1558, 1558, 677: 1558},
{1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 570: 1559, 1559, 1559, 1559, 1559, 576: 1559, 1559, 579: 1559, 1559, 1559, 1559, 1559, 1559, 1559, 588: 1559, 590: 1559, 1559, 1559, 594: 1559, 596: 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 619: 1559, 1559, 1559, 1559, 1559, 1559, 627: 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 647: 1559, 1559, 1559, 1559, 652: 1559, 1559, 1559, 1559, 1559, 1559, 659: 1559, 1559, 4009, 1559, 1559, 1559, 1559, 669: 1559, 671: 1559, 1559, 1559, 677: 1559},
{1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 570: 1560, 1560, 1560, 1560, 1560, 576: 1560, 1560, 579: 1560, 1560, 1560, 1560, 1560, 1560, 1560, 588: 1560, 590: 1560, 1560, 1560, 594: 1560, 596: 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 619: 1560, 1560, 1560, 1560, 1560, 1560, 627: 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 647: 1560, 1560, 1560, 1560, 652: 1560, 1560, 1560, 1560, 1560, 1560, 659: 1560, 1560, 4009, 1560, 1560, 1560, 1560, 669: 1560, 671: 1560, 1560, 1560, 677: 1560},
{1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 570: 1561, 1561, 1561, 1561, 1561, 576: 1561, 1561, 579: 1561, 1561, 1561, 1561, 1561, 1561, 1561, 588: 1561, 590: 1561, 1561, 1561, 594: 1561, 596: 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 619: 1561, 1561, 1561, 1561, 1561, 1561, 627: 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 647: 1561, 1561, 1561, 1561, 652: 1561, 1561, 1561, 1561, 1561, 1561, 659: 1561, 1561, 4009, 1561, 1561, 1561, 1561, 669: 1561, 671: 1561, 1561, 1561, 677: 1561},
{1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 570: 1565, 1565, 1565, 1565, 1565, 576: 1565, 1565, 579: 1565, 1565, 1565, 1565, 1565, 1565, 4008, 588: 1565, 590: 1565, 1565, 1565, 594: 1565, 596: 1565, 1565, 1565, 1565, 4004, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 619: 1565, 1565, 1565, 1565, 1565, 1565, 627: 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 647: 1565, 1565, 1565, 4005, 652: 1565, 1565, 1565, 1565, 1565, 1565, 659: 4006, 1565, 4009, 1565, 4007, 1565, 1565, 669: 1565, 671: 1565, 1565, 1565, 677: 1565},
// 995
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 1498, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4018},
{129: 3987, 133: 3995, 154: 3983, 156: 3980, 3982, 3979, 3981, 3985, 3986, 3991, 3990, 3989, 3993, 3994, 3988, 3992, 3984, 606: 3965, 3963, 3964, 3962, 3960, 633: 3977, 3974, 3976, 3975, 3971, 3973, 3972, 3969, 3970, 3968, 3978, 841: 3961, 3959, 927: 3967, 941: 4019},
{1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 570: 1563, 1563, 1563, 1563, 1563, 576: 1563, 1563, 579: 1563, 1563, 1563, 1563, 1563, 1563, 1563, 588: 1563, 590: 1563, 1563, 1563, 594: 1563, 596: 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 619: 1563, 1563, 1563, 1563, 1563, 1563, 627: 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 647: 1563, 1563, 1563, 1563, 652: 1563, 1563, 1563, 1563, 1563, 1563, 659: 1563, 1563, 1563, 1563, 1563, 1563, 1563, 669: 1563, 671: 1563, 1563, 1563, 677: 1563},
{1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 570: 1566, 1566, 1566, 1566, 1566, 576: 1566, 1566, 579: 1566, 1566, 1566, 1566, 1566, 1566, 4008, 588: 1566, 590: 1566, 1566, 1566, 594: 1566, 596: 1566, 1566, 1566, 1566, 4004, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 619: 1566, 1566, 1566, 1566, 1566, 1566, 627: 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 647: 1566, 1566, 1566, 4005, 652: 1566, 1566, 1566, 1566, 1566, 1566, 659: 4006, 1566, 4009, 1566, 4007, 1566, 1566, 669: 1566, 671: 1566, 1566, 1566, 677: 1566},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 1498, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4022},
// 1000
{129: 3987, 133: 3995, 154: 3983, 156: 3980, 3982, 3979, 3981, 3985, 3986, 3991, 3990, 3989, 3993, 3994, 3988, 3992, 3984, 606: 3965, 3963, 3964, 3962, 3960, 633: 3977, 3974, 3976, 3975, 3971, 3973, 3972, 3969, 3970, 3968, 3978, 841: 3961, 3959, 927: 3967, 941: 4023},
{1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 570: 1564, 1564, 1564, 1564, 1564, 576: 1564, 1564, 579: 1564, 1564, 1564, 1564, 1564, 1564, 1564, 588: 1564, 590: 1564, 1564, 1564, 594: 1564, 596: 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 619: 1564, 1564, 1564, 1564, 1564, 1564, 627: 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 647: 1564, 1564, 1564, 1564, 652: 1564, 1564, 1564, 1564, 1564, 1564, 659: 1564, 1564, 1564, 1564, 1564, 1564, 1564, 669: 1564, 671: 1564, 1564, 1564, 677: 1564},
{1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 570: 1567, 1567, 1567, 1567, 1567, 576: 1567, 1567, 579: 1567, 1567, 1567, 1567, 4002, 4003, 4008, 588: 1567, 590: 1567, 1567, 1567, 594: 1567, 596: 1567, 1567, 1567, 1567, 4004, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 619: 1567, 1567, 1567, 1567, 1567, 1567, 627: 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 1567, 647: 1567, 1567, 1567, 4005, 652: 1567, 1567, 1567, 1567, 1567, 1567, 659: 4006, 1567, 4009, 1567, 4007, 1567, 1567, 669: 1567, 671: 1567, 1567, 1567, 677: 1567},
{1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 570: 1568, 1568, 1568, 1568, 1568, 576: 1568, 1568, 579: 1568, 1568, 1568, 1568, 4002, 4003, 4008, 588: 1568, 590: 1568, 1568, 1568, 594: 1568, 596: 1568, 1568, 1568, 1568, 4004, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 619: 1568, 1568, 1568, 1568, 1568, 1568, 627: 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 647: 1568, 1568, 1568, 4005, 652: 1568, 1568, 1568, 1568, 1568, 1568, 659: 4006, 1568, 4009, 1568, 4007, 1568, 1568, 669: 1568, 671: 1568, 1568, 1568, 677: 1568},
{1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 570: 1569, 1569, 1569, 1569, 1569, 576: 1569, 1569, 579: 1569, 1569, 1569, 1569, 4002, 4003, 4008, 588: 1569, 590: 1569, 1569, 1569, 594: 1569, 596: 1569, 1569, 1569, 1569, 4004, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 619: 1569, 1569, 1569, 1569, 1569, 1569, 627: 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 647: 1569, 1569, 1569, 4005, 652: 1569, 1569, 1569, 1569, 1569, 1569, 659: 4006, 1569, 4009, 1569, 4007, 4000, 4001, 669: 1569, 671: 1569, 1569, 1569, 677: 1569},
// 1005
{1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 570: 1570, 1570, 1570, 1570, 1570, 576: 1570, 1570, 579: 1570, 1570, 1570, 1570, 4002, 4003, 4008, 588: 1570, 590: 1570, 1570, 1570, 594: 1570, 596: 1570, 1570, 1570, 1570, 4004, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 619: 1570, 1570, 1570, 1570, 1570, 1570, 627: 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 647: 1570, 1570, 1570, 4005, 652: 1570, 1570, 1570, 1570, 1570, 1570, 659: 4006, 3999, 4009, 1570, 4007, 4000, 4001, 669: 1570, 671: 1570, 1570, 1570, 677: 1570},
{2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 570: 2331, 2331, 2331, 2331, 577: 2331, 579: 2331, 2331, 2331, 2331, 588: 2331, 590: 2331, 592: 2331, 594: 2331, 596: 2331, 2331, 2331, 2331, 601: 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 620: 2331, 2331, 2331, 2331, 2331, 627: 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 647: 2331, 841: 3961, 3959},
{2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 570: 2332, 2332, 2332, 2332, 577: 2332, 579: 2332, 2332, 2332, 2332, 588: 2332, 590: 2332, 592: 2332, 594: 2332, 596: 2332, 2332, 2332, 2332, 601: 2332, 2332, 2332, 2332, 2332, 3965, 2332, 3964, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 620: 2332, 2332, 2332, 2332, 2332, 627: 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 647: 2332, 841: 3961, 3959},
{2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 570: 2333, 2333, 2333, 2333, 577: 2333, 579: 2333, 2333, 2333, 2333, 588: 2333, 590: 2333, 592: 2333, 594: 2333, 596: 2333, 2333, 2333, 2333, 601: 2333, 2333, 2333, 2333, 2333, 3965, 2333, 3964, 2333, 3960, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 620: 2333, 2333, 2333, 2333, 2333, 627: 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 647: 2333, 841: 3961, 3959},
{224: 2746, 250: 2746, 586: 2746, 619: 2746, 645: 2746, 666: 2746, 2746, 669: 2746, 671: 2746, 2746, 2746, 685: 2746},
// 1010
{224: 2745, 250: 2745, 586: 2745, 619: 2745, 645: 2745, 666: 2745, 2745, 669: 2745, 671: 2745, 2745, 2745, 685: 2745},
{2: 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 11: 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 54: 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 571: 2287, 574: 2287, 2287, 581: 2287, 2287, 2287, 2287, 2287, 2287, 2287, 589: 2287, 593: 2287, 595: 2287, 618: 2287, 625: 2287, 2287, 651: 2287, 658: 2287, 666: 2287, 2287, 2287, 670: 2287, 674: 2287, 2287, 2287, 678: 2287, 2287, 2287, 2287, 2287, 2287, 685: 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 695: 2287, 697: 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287},
{619: 4218, 645: 4217, 669: 4216, 671: 4219, 4045, 4046, 1303: 4220},
{569: 2283},
{2: 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 11: 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 54: 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 571: 2281, 574: 2281, 2281, 581: 2281, 2281, 2281, 2281, 2281, 2281, 2281, 589: 2281, 593: 2281, 595: 2281, 618: 2281, 625: 2281, 2281, 651: 2281, 658: 2281, 666: 2281, 2281, 2281, 670: 2281, 674: 2281, 2281, 2281, 678: 2281, 2281, 2281, 2281, 2281, 2281, 685: 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 695: 2281, 697: 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281},
// 1015
{2: 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 11: 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 54: 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 571: 2279, 574: 2279, 2279, 581: 2279, 2279, 2279, 2279, 2279, 2279, 2279, 589: 2279, 593: 2279, 595: 2279, 618: 2279, 625: 2279, 2279, 651: 2279, 658: 2279, 666: 2279, 2279, 2279, 670: 2279, 674: 2279, 2279, 2279, 678: 2279, 2279, 2279, 2279, 2279, 2279, 685: 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 695: 2279, 697: 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279},
{2: 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 11: 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 54: 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 571: 2277, 574: 2277, 2277, 581: 2277, 2277, 2277, 2277, 2277, 2277, 2277, 589: 2277, 593: 2277, 595: 2277, 618: 2277, 625: 2277, 2277, 651: 2277, 658: 2277, 666: 2277, 2277, 2277, 670: 2277, 674: 2277, 2277, 2277, 678: 2277, 2277, 2277, 2277, 2277, 2277, 685: 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 695: 2277, 697: 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277},
{569: 4060, 815: 4061},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3783, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 4057},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3783, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3874, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 4055, 3855, 3937, 3854, 3851},
// 1020
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3783, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3874, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 4051, 3855, 3937, 3854, 3851},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3783, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3874, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 4050, 3855, 3937, 3854, 3851},
{569: 4047},
{2: 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 11: 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 54: 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 571: 2264, 574: 2264, 2264, 581: 2264, 2264, 2264, 2264, 2264, 2264, 2264, 589: 2264, 593: 2264, 595: 2264, 618: 2264, 625: 2264, 2264, 651: 2264, 658: 2264, 666: 2264, 2264, 2264, 670: 2264, 674: 2264, 2264, 2264, 678: 2264, 2264, 2264, 2264, 2264, 2264, 685: 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 695: 2264, 697: 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264},
{2: 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 11: 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 54: 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 571: 2263, 574: 2263, 2263, 581: 2263, 2263, 2263, 2263, 2263, 2263, 2263, 589: 2263, 593: 2263, 595: 2263, 618: 2263, 625: 2263, 2263, 651: 2263, 658: 2263, 666: 2263, 2263, 2263, 670: 2263, 674: 2263, 2263, 2263, 678: 2263, 2263, 2263, 2263, 2263, 2263, 685: 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 695: 2263, 697: 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263},
// 1025
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3783, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3874, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 4048, 3855, 3937, 3854, 3851},
{53: 4049, 578: 3950, 746: 3951},
{2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 570: 2266, 2266, 2266, 2266, 577: 2266, 579: 2266, 2266, 2266, 2266, 588: 2266, 590: 2266, 2266, 2266, 594: 2266, 596: 2266, 2266, 2266, 2266, 601: 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 620: 2266, 2266, 2266, 2266, 2266, 627: 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 2266, 647: 2266, 2266, 2266, 652: 2266, 2266, 2266, 2266, 2266, 2266},
{2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 570: 2267, 2267, 2267, 2267, 577: 2267, 3950, 2267, 2267, 2267, 2267, 588: 2267, 590: 2267, 2267, 2267, 594: 2267, 596: 2267, 2267, 2267, 2267, 601: 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 620: 2267, 2267, 2267, 2267, 2267, 627: 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 647: 2267, 2267, 2267, 652: 2267, 2267, 2267, 2267, 2267, 2267, 746: 3951},
{2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 4053, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 570: 2262, 2262, 2262, 2262, 577: 2262, 3950, 2262, 2262, 2262, 2262, 588: 2262, 590: 2262, 2262, 2262, 594: 2262, 596: 2262, 2262, 2262, 2262, 601: 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 620: 2262, 2262, 2262, 2262, 2262, 627: 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 647: 2262, 2262, 2262, 652: 2262, 2262, 2262, 2262, 2262, 2262, 746: 3951, 1249: 4052},
// 1030
{2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 570: 2268, 2268, 2268, 2268, 577: 2268, 579: 2268, 2268, 2268, 2268, 588: 2268, 590: 2268, 2268, 2268, 594: 2268, 596: 2268, 2268, 2268, 2268, 601: 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 620: 2268, 2268, 2268, 2268, 2268, 627: 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 647: 2268, 2268, 2268, 652: 2268, 2268, 2268, 2268, 2268, 2268},
{571: 4054},
{2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 570: 2261, 2261, 2261, 2261, 577: 2261, 579: 2261, 2261, 2261, 2261, 588: 2261, 590: 2261, 2261, 2261, 594: 2261, 596: 2261, 2261, 2261, 2261, 601: 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 620: 2261, 2261, 2261, 2261, 2261, 627: 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 647: 2261, 2261, 2261, 652: 2261, 2261, 2261, 2261, 2261, 2261},
{2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 4053, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 570: 2262, 2262, 2262, 2262, 577: 2262, 3950, 2262, 2262, 2262, 2262, 588: 2262, 590: 2262, 2262, 2262, 594: 2262, 596: 2262, 2262, 2262, 2262, 601: 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 620: 2262, 2262, 2262, 2262, 2262, 627: 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 647: 2262, 2262, 2262, 652: 2262, 2262, 2262, 2262, 2262, 2262, 746: 3951, 1249: 4056},
{2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 570: 2269, 2269, 2269, 2269, 577: 2269, 579: 2269, 2269, 2269, 2269, 588: 2269, 590: 2269, 2269, 2269, 594: 2269, 596: 2269, 2269, 2269, 2269, 601: 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 620: 2269, 2269, 2269, 2269, 2269, 627: 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 647: 2269, 2269, 2269, 652: 2269, 2269, 2269, 2269, 2269, 2269},
// 1035
{583: 4002, 4003, 4008, 600: 4004, 606: 4058, 650: 4005, 659: 4006, 3999, 4009, 3998, 4007, 4000, 4001},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3783, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 4059},
{2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 570: 2270, 2270, 2270, 2270, 577: 2270, 579: 2270, 2270, 2270, 2270, 588: 2270, 590: 2270, 2270, 2270, 594: 2270, 596: 2270, 2270, 2270, 2270, 601: 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 620: 2270, 2270, 2270, 2270, 2270, 627: 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 647: 2270, 2270, 2270, 652: 2270, 2270, 2270, 2270, 2270, 2270},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 3075, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 4065, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 646: 3073, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 3069, 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 4064, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4062, 846: 4067, 3070, 3071, 3072, 3081, 3079, 3078, 3077, 856: 4066, 4069, 4068, 894: 4063},
{2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 570: 2271, 2271, 2271, 2271, 577: 2271, 579: 2271, 2271, 2271, 2271, 588: 2271, 590: 2271, 2271, 2271, 594: 2271, 596: 2271, 2271, 2271, 2271, 601: 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 620: 2271, 2271, 2271, 2271, 2271, 627: 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 647: 2271, 2271, 2271, 652: 2271, 2271, 2271, 2271, 2271, 2271},
// 1040
{2311, 2311, 10: 2311, 53: 2311, 184: 2311, 579: 2311, 604: 2311, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
{10: 4213, 53: 4214},
{10: 1535, 53: 1535, 574: 1535, 576: 1535, 578: 1535, 580: 1080, 583: 1535, 1535, 1535, 590: 1080, 1535, 1080, 596: 4079, 598: 4078, 600: 1535, 604: 4077, 606: 1535, 1535, 1535, 1535, 1535, 619: 1535, 645: 1535, 648: 1535, 1535, 1535, 652: 1535, 1535, 1535, 1535, 1535, 1535, 659: 1535, 1535, 1535, 1535, 1535, 1535, 1535, 669: 1535, 671: 1535, 1535, 1535, 677: 1535, 746: 1535, 882: 4080, 4081},
{569: 4109, 679: 4112, 1064: 4111, 1145: 4110},
{569: 3076, 587: 3074, 646: 3073, 694: 3069, 815: 4074, 846: 4073, 3070, 3071, 3072, 3081, 3079, 4075, 4076},
// 1045
{53: 4072, 580: 1081, 590: 1081, 592: 1081},
{53: 4071},
{53: 4070},
{1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 576: 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 587: 1108, 1108, 590: 1108, 1108, 1108, 594: 1108, 596: 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 619: 1108, 1108, 1108, 1108, 1108, 1108, 627: 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 652: 1108, 1108, 1108, 1108, 1108, 1108, 659: 1108, 1108, 1108, 1108, 1108, 1108, 1108, 669: 1108, 671: 1108, 1108, 1108, 677: 1108, 694: 1108, 696: 1108, 746: 1108, 751: 1108, 843: 1108},
{1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 576: 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 587: 1109, 1109, 590: 1109, 1109, 1109, 594: 1109, 596: 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 619: 1109, 1109, 1109, 1109, 1109, 1109, 627: 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 652: 1109, 1109, 1109, 1109, 1109, 1109, 659: 1109, 1109, 1109, 1109, 1109, 1109, 1109, 669: 1109, 671: 1109, 1109, 1109, 677: 1109, 694: 1109, 696: 1109, 746: 1109, 751: 1109, 843: 1109},
// 1050
{1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 576: 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 587: 1110, 1110, 590: 1110, 1110, 1110, 594: 1110, 596: 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 619: 1110, 1110, 1110, 1110, 1110, 1110, 627: 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 652: 1110, 1110, 1110, 1110, 1110, 1110, 659: 1110, 1110, 1110, 1110, 1110, 1110, 1110, 669: 1110, 671: 1110, 1110, 1110, 677: 1110, 694: 1110, 696: 1110, 746: 1110, 751: 1110, 843: 1110},
{1266, 1266, 53: 1266, 570: 1266, 572: 1266, 579: 1266, 1081, 590: 1081, 592: 1081},
{1265, 1265, 53: 1265, 570: 1265, 572: 1265, 579: 1265, 1080, 590: 1080, 592: 1080, 596: 4079, 598: 4078, 604: 4077, 882: 4080, 4081},
{1093, 1093, 53: 1093, 570: 1093, 572: 1093, 579: 1093},
{1092, 1092, 53: 1092, 570: 1092, 572: 1092, 579: 1092},
// 1055
{761: 4100},
{595: 3209, 681: 4088, 839: 4086, 854: 4087, 1029: 4095},
{11: 4083, 263: 4084, 1420: 4085},
{1086, 1086, 53: 1086, 570: 1086, 572: 1086, 579: 1086, 596: 4079, 598: 4078, 883: 4082},
{1085, 1085, 53: 1085, 570: 1085, 572: 1085, 579: 1085},
// 1060
{1084, 1084, 53: 1084, 570: 1084, 572: 1084, 579: 1084},
{595: 1143, 627: 1143, 679: 1143, 681: 1143},
{595: 1142, 627: 1142, 679: 1142, 681: 1142},
{595: 3209, 627: 1141, 679: 1141, 681: 4088, 839: 4086, 854: 4087, 1029: 4089, 1414: 4090},
{2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 16: 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 60: 2344, 2344, 2344, 64: 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 123: 2344, 2344, 2344, 2344, 2344, 2344, 2344, 131: 2344, 2344, 2344, 135: 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 154: 2344, 156: 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 202: 2344, 204: 2344, 239: 2344, 247: 2344, 290: 2344, 569: 2344, 2344, 572: 2344, 2344, 575: 2344, 577: 2344, 2344, 2344, 2344, 587: 2344, 2344, 2344, 2344, 592: 2344, 2344, 2344, 597: 2344, 599: 2344, 601: 2344, 2344, 605: 2344, 627: 2344, 646: 2344, 679: 2344, 694: 2344, 748: 2344, 2344, 751: 2344, 753: 2344},
// 1065
{1147, 1147, 10: 1147, 53: 1147, 239: 1147, 570: 1147, 572: 1147, 579: 1147, 1147, 590: 1147, 592: 1147, 599: 1147, 601: 1147, 1147, 627: 1147, 679: 1147},
{1146, 1146, 10: 1146, 53: 1146, 239: 1146, 570: 1146, 572: 1146, 579: 1146, 1146, 590: 1146, 592: 1146, 599: 1146, 601: 1146, 1146, 627: 1146, 679: 1146},
{627: 1140, 679: 1140},
{627: 4092, 679: 4091, 1506: 4093},
{229: 1145},
// 1070
{229: 1144},
{229: 4094},
{1136, 1136, 53: 1136, 570: 1136, 572: 1136, 579: 1136, 1136, 590: 1136, 592: 1136, 599: 1136, 601: 1136, 1136},
{1139, 1139, 10: 4096, 53: 1139, 239: 4097, 570: 1139, 572: 1139, 579: 1139, 1139, 590: 1139, 592: 1139, 599: 1139, 601: 1139, 1139},
{595: 3209, 681: 4088, 839: 4086, 854: 4087, 1029: 4099},
// 1075
{595: 3209, 681: 4088, 839: 4086, 854: 4087, 1029: 4098},
{1137, 1137, 53: 1137, 570: 1137, 572: 1137, 579: 1137, 1137, 590: 1137, 592: 1137, 599: 1137, 601: 1137, 1137},
{1138, 1138, 53: 1138, 570: 1138, 572: 1138, 579: 1138, 1138, 590: 1138, 592: 1138, 599: 1138, 601: 1138, 1138},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4101, 1019: 4103, 1045: 4102},
{1579, 1579, 10: 1579, 53: 1579, 184: 1579, 570: 1579, 572: 1579, 579: 1579, 1579, 590: 1579, 592: 1579, 596: 1579, 598: 1579, 1579, 601: 1579, 1579, 604: 1579, 606: 3965, 3963, 3964, 3962, 3960, 612: 1579, 614: 1579, 617: 4108, 627: 1579, 630: 1579, 632: 1579, 644: 4107, 841: 3961, 3959, 1470: 4106},
// 1080
{1582, 1582, 10: 4104, 53: 1582, 184: 1582, 570: 1582, 572: 1582, 579: 1582, 1582, 590: 1582, 592: 1582, 596: 1582, 598: 1582, 1582, 601: 1582, 1582},
{1581, 1581, 10: 1581, 53: 1581, 184: 1581, 570: 1581, 572: 1581, 579: 1581, 1581, 590: 1581, 592: 1581, 596: 1581, 598: 1581, 1581, 601: 1581, 1581, 604: 1581, 612: 1581, 614: 1581, 627: 1581, 630: 1581, 632: 1581},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4101, 1019: 4105},
{1580, 1580, 10: 1580, 53: 1580, 184: 1580, 570: 1580, 572: 1580, 579: 1580, 1580, 590: 1580, 592: 1580, 596: 1580, 598: 1580, 1580, 601: 1580, 1580, 604: 1580, 612: 1580, 614: 1580, 627: 1580, 630: 1580, 632: 1580},
{1578, 1578, 10: 1578, 53: 1578, 184: 1578, 570: 1578, 572: 1578, 579: 1578, 1578, 590: 1578, 592: 1578, 596: 1578, 598: 1578, 1578, 601: 1578, 1578, 604: 1578, 612: 1578, 614: 1578, 627: 1578, 630: 1578, 632: 1578},
// 1085
{1577, 1577, 10: 1577, 53: 1577, 184: 1577, 570: 1577, 572: 1577, 579: 1577, 1577, 590: 1577, 592: 1577, 596: 1577, 598: 1577, 1577, 601: 1577, 1577, 604: 1577, 612: 1577, 614: 1577, 627: 1577, 630: 1577, 632: 1577},
{1576, 1576, 10: 1576, 53: 1576, 184: 1576, 570: 1576, 572: 1576, 579: 1576, 1576, 590: 1576, 592: 1576, 596: 1576, 598: 1576, 1576, 601: 1576, 1576, 604: 1576, 612: 1576, 614: 1576, 627: 1576, 630: 1576, 632: 1576},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 4121, 3217, 3218, 3216, 819: 4210},
{1572, 1572, 10: 4133, 53: 1572, 570: 1572, 572: 1572, 579: 1572, 1572, 590: 1572, 592: 1572, 596: 1572, 598: 1572, 1572, 601: 1572, 1572, 604: 4077, 882: 4131, 953: 4132},
{164, 164, 10: 164, 53: 164, 570: 164, 572: 164, 579: 164, 164, 590: 164, 592: 164, 596: 164, 598: 164, 164, 601: 164, 164, 604: 164},
// 1090
{569: 4113, 989: 4114},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 1610, 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 4119, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4115, 932: 4118, 1556: 4117, 4116},
{162, 162, 10: 162, 53: 162, 570: 162, 572: 162, 579: 162, 162, 590: 162, 592: 162, 596: 162, 598: 162, 162, 601: 162, 162, 604: 162},
{1606, 1606, 10: 1606, 53: 1606, 570: 1606, 572: 1606, 579: 1606, 594: 1606, 598: 1606, 603: 1606, 1606, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
{53: 4130},
// 1095
{10: 4128, 53: 1609},
{10: 1607, 53: 1607},
{1605, 1605, 10: 1605, 53: 1605, 569: 4120, 1605, 572: 1605, 579: 1605, 594: 1605, 598: 1605, 603: 1605, 1605},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 4121, 3217, 3218, 3216, 819: 4122},
{53: 1554, 591: 1554, 754: 4124},
// 1100
{53: 4123},
{1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 570: 1523, 1523, 1523, 1523, 1523, 576: 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 588: 1523, 590: 1523, 1523, 1523, 594: 1523, 596: 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 619: 1523, 1523, 1523, 1523, 1523, 1523, 627: 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 647: 1523, 1523, 1523, 1523, 652: 1523, 1523, 1523, 1523, 1523, 1523, 659: 1523, 1523, 1523, 1523, 1523, 1523, 1523, 669: 1523, 671: 1523, 1523, 1523, 677: 1523, 696: 1523, 746: 1523},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 4125, 3217, 3218, 3216},
{53: 1553, 591: 1553, 754: 4126},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 4127, 3217, 3218, 3216},
// 1105
{1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 570: 1552, 1552, 1552, 1552, 1552, 576: 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 588: 1552, 590: 1552, 1552, 1552, 594: 1552, 596: 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 619: 1552, 1552, 1552, 1552, 1552, 1552, 627: 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 647: 1552, 1552, 1552, 1552, 652: 1552, 1552, 1552, 1552, 1552, 1552, 659: 1552, 1552, 1552, 1552, 1552, 1552, 1552, 669: 1552, 671: 1552, 1552, 1552, 677: 1552, 696: 1552, 746: 1552, 758: 1552, 1552},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 4119, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4115, 932: 4129},
{10: 1608, 53: 1608},
{1611, 1611, 10: 1611, 53: 1611, 123: 1611, 570: 1611, 572: 1611, 579: 1611, 1611, 590: 1611, 592: 1611, 596: 1611, 598: 1611, 1611, 601: 1611, 1611, 604: 1611, 606: 1611},
{1571, 1571, 53: 1571, 184: 1571, 570: 1571, 572: 1571, 579: 1571, 1571, 590: 1571, 592: 1571, 596: 1571, 598: 1571, 1571, 601: 1571, 1571},
// 1110
{1135, 1135, 53: 1135, 570: 1135, 572: 1135, 579: 1135, 1135, 590: 1135, 592: 1135, 596: 4079, 598: 4078, 1135, 601: 1135, 1135, 883: 4136, 971: 4135},
{679: 4112, 1064: 4134},
{163, 163, 10: 163, 53: 163, 570: 163, 572: 163, 579: 163, 163, 590: 163, 592: 163, 596: 163, 598: 163, 163, 601: 163, 163, 604: 163},
{1106, 1106, 53: 1106, 570: 1106, 572: 1106, 579: 1106, 1106, 590: 1106, 592: 1106, 599: 4138, 601: 4139, 1106, 1036: 4137},
{1134, 1134, 53: 1134, 570: 1134, 572: 1134, 579: 1134, 1134, 590: 1134, 592: 1134, 599: 1134, 601: 1134, 1134},
// 1115
{1112, 1112, 53: 1112, 570: 1112, 572: 1112, 579: 1112, 1112, 590: 1112, 592: 1112, 602: 4167, 1037: 4166},
{372: 4144, 751: 4143},
{645: 4140},
{372: 4141},
{291: 4142},
// 1120
{1098, 1098, 53: 1098, 570: 1098, 572: 1098, 579: 1098, 1098, 590: 1098, 592: 1098, 602: 1098},
{1097, 1097, 53: 1097, 228: 1097, 231: 1097, 251: 1097, 570: 1097, 572: 1097, 579: 1097, 1097, 590: 1097, 592: 1097, 602: 1097, 1263: 4146, 4160},
{1097, 1097, 53: 1097, 228: 1097, 231: 1097, 570: 1097, 572: 1097, 579: 1097, 1097, 590: 1097, 592: 1097, 602: 1097, 1263: 4146, 4145},
{1104, 1104, 53: 1104, 228: 4157, 231: 4158, 570: 1104, 572: 1104, 579: 1104, 1104, 590: 1104, 592: 1104, 602: 1104},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 4149, 924: 4150},
// 1125
{1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 619: 1323, 1323, 1323, 1323, 1323, 1323, 627: 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 652: 1323, 1323, 1323, 1323, 1323, 1323, 659: 1323, 1323, 1323, 1323, 1323, 1323, 1323, 669: 1323, 671: 1323, 1323, 1323, 677: 1323, 684: 1323, 687: 1323, 694: 1323, 696: 1323, 741: 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 4155, 1323, 760: 1323, 1323, 1323, 1323, 767: 1323, 769: 1323, 771: 1323, 773: 1323, 776: 1323, 782: 1323, 804: 1323, 1323, 1323, 1323, 1323, 1323, 1323},
{754: 4153},
{1320, 1320, 10: 1320, 53: 1320, 228: 1320, 231: 1320, 251: 1320, 570: 1320, 572: 1320, 579: 1320, 1320, 590: 1320, 592: 1320, 602: 1320, 1320, 752: 1320, 769: 1320, 773: 1320},
{1096, 1096, 10: 4151, 53: 1096, 228: 1096, 231: 1096, 251: 1096, 570: 1096, 572: 1096, 579: 1096, 1096, 590: 1096, 592: 1096, 602: 1096},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 4152},
// 1130
{1319, 1319, 10: 1319, 53: 1319, 228: 1319, 231: 1319, 241: 1319, 251: 1319, 570: 1319, 572: 1319, 579: 1319, 1319, 590: 1319, 592: 1319, 602: 1319, 1319, 752: 1319, 755: 1319, 769: 1319, 773: 1319, 804: 1319, 1319},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 4154, 3217, 3218, 3216},
{1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 619: 1321, 1321, 1321, 1321, 1321, 1321, 627: 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 652: 1321, 1321, 1321, 1321, 1321, 1321, 659: 1321, 1321, 1321, 1321, 1321, 1321, 1321, 669: 1321, 671: 1321, 1321, 1321, 677: 1321, 684: 1321, 687: 1321, 694: 1321, 696: 1321, 741: 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 755: 1321, 760: 1321, 1321, 1321, 1321, 767: 1321, 769: 1321, 771: 1321, 773: 1321, 776: 1321, 782: 1321, 804: 1321, 1321, 1321, 1321, 1321, 1321, 1321},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 4156, 3217, 3218, 3216},
{1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 619: 1322, 1322, 1322, 1322, 1322, 1322, 627: 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 652: 1322, 1322, 1322, 1322, 1322, 1322, 659: 1322, 1322, 1322, 1322, 1322, 1322, 1322, 669: 1322, 671: 1322, 1322, 1322, 677: 1322, 684: 1322, 687: 1322, 694: 1322, 696: 1322, 741: 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 755: 1322, 760: 1322, 1322, 1322, 1322, 767: 1322, 769: 1322, 771: 1322, 773: 1322, 776: 1322, 782: 1322, 804: 1322, 1322, 1322, 1322, 1322, 1322, 1322},
// 1135
{1101, 1101, 53: 1101, 570: 1101, 572: 1101, 579: 1101, 1101, 590: 1101, 592: 1101, 602: 1101},
{349: 4159},
{1099, 1099, 53: 1099, 570: 1099, 572: 1099, 579: 1099, 1099, 590: 1099, 592: 1099, 602: 1099},
{1105, 1105, 53: 1105, 228: 4161, 231: 4163, 251: 4162, 570: 1105, 572: 1105, 579: 1105, 1105, 590: 1105, 592: 1105, 602: 1105},
{1103, 1103, 53: 1103, 570: 1103, 572: 1103, 579: 1103, 1103, 590: 1103, 592: 1103, 602: 1103},
// 1140
{595: 3209, 839: 4165},
{349: 4164},
{1100, 1100, 53: 1100, 570: 1100, 572: 1100, 579: 1100, 1100, 590: 1100, 592: 1100, 602: 1100},
{1102, 1102, 53: 1102, 570: 1102, 572: 1102, 579: 1102, 1102, 590: 1102, 592: 1102, 602: 1102},
{1267, 1267, 53: 1267, 570: 1267, 572: 1267, 579: 1267, 1267, 590: 1267, 592: 1267},
// 1145
{1472: 4168},
{571: 4169},
{289, 289, 53: 289, 147: 4173, 175: 4172, 570: 289, 572: 289, 579: 289, 289, 590: 289, 592: 289, 763: 289, 979: 4171, 1224: 4170},
{274, 274, 53: 274, 570: 274, 572: 274, 579: 274, 274, 590: 274, 592: 274, 763: 4201, 1253: 4200},
{155: 4180, 892: 4176, 896: 4178, 903: 4179, 905: 4177, 1223: 4175, 1417: 4174},
// 1150
{287, 287, 18: 287, 61: 287, 64: 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 155: 287, 569: 287, 287, 603: 287, 645: 287, 753: 287, 892: 287, 896: 287, 903: 287, 905: 287},
{286, 286, 18: 286, 61: 286, 64: 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 155: 286, 569: 286, 286, 603: 286, 645: 286, 753: 286, 892: 286, 896: 286, 903: 286, 905: 286},
{288, 288, 53: 288, 155: 4180, 569: 288, 288, 572: 288, 579: 288, 288, 588: 288, 590: 288, 592: 288, 597: 288, 763: 288, 892: 4176, 896: 4178, 903: 4179, 905: 4177, 1223: 4199},
{284, 284, 53: 284, 155: 284, 569: 284, 284, 572: 284, 579: 284, 284, 588: 284, 590: 284, 592: 284, 597: 284, 763: 284, 892: 284, 896: 284, 903: 284, 905: 284},
{761: 4197},
// 1155
{571: 4191, 676: 4192, 678: 4193, 1006: 4196},
{761: 4194},
{761: 4189},
{586: 4181},
{761: 4182},
// 1160
{571: 4183, 676: 4184, 678: 4185, 1070: 4186},
{484, 484, 10: 484, 53: 484, 155: 484, 569: 484, 484, 572: 484, 579: 484, 484, 588: 484, 590: 484, 592: 484, 597: 484, 763: 484, 892: 484, 896: 484, 903: 484, 905: 484, 1058: 484},
{483, 483, 10: 483, 53: 483, 155: 483, 569: 483, 483, 572: 483, 579: 483, 483, 588: 483, 590: 483, 592: 483, 597: 483, 763: 483, 892: 483, 896: 483, 903: 483, 905: 483, 1058: 483},
{482, 482, 10: 482, 53: 482, 155: 482, 569: 482, 482, 572: 482, 579: 482, 482, 588: 482, 590: 482, 592: 482, 597: 482, 763: 482, 892: 482, 896: 482, 903: 482, 905: 482, 1058: 482},
{279, 279, 53: 279, 155: 279, 569: 279, 279, 572: 279, 579: 279, 279, 588: 279, 590: 279, 592: 279, 597: 279, 763: 279, 892: 279, 896: 279, 903: 279, 905: 279, 1058: 4187},
// 1165
{896: 4188},
{278, 278, 53: 278, 155: 278, 569: 278, 278, 572: 278, 579: 278, 278, 588: 278, 590: 278, 592: 278, 597: 278, 763: 278, 892: 278, 896: 278, 903: 278, 905: 278},
{571: 4191, 676: 4192, 678: 4193, 1006: 4190},
{280, 280, 53: 280, 155: 280, 569: 280, 280, 572: 280, 579: 280, 280, 588: 280, 590: 280, 592: 280, 597: 280, 763: 280, 892: 280, 896: 280, 903: 280, 905: 280},
{277, 277, 53: 277, 155: 277, 569: 277, 277, 572: 277, 579: 277, 277, 588: 277, 590: 277, 592: 277, 597: 277, 763: 277, 892: 277, 896: 277, 903: 277, 905: 277},
// 1170
{276, 276, 53: 276, 155: 276, 569: 276, 276, 572: 276, 579: 276, 276, 588: 276, 590: 276, 592: 276, 597: 276, 763: 276, 892: 276, 896: 276, 903: 276, 905: 276},
{275, 275, 53: 275, 155: 275, 569: 275, 275, 572: 275, 579: 275, 275, 588: 275, 590: 275, 592: 275, 597: 275, 763: 275, 892: 275, 896: 275, 903: 275, 905: 275},
{571: 4191, 676: 4192, 678: 4193, 1006: 4195},
{281, 281, 53: 281, 155: 281, 569: 281, 281, 572: 281, 579: 281, 281, 588: 281, 590: 281, 592: 281, 597: 281, 763: 281, 892: 281, 896: 281, 903: 281, 905: 281},
{282, 282, 53: 282, 155: 282, 569: 282, 282, 572: 282, 579: 282, 282, 588: 282, 590: 282, 592: 282, 597: 282, 763: 282, 892: 282, 896: 282, 903: 282, 905: 282},
// 1175
{571: 4191, 676: 4192, 678: 4193, 1006: 4198},
{283, 283, 53: 283, 155: 283, 569: 283, 283, 572: 283, 579: 283, 283, 588: 283, 590: 283, 592: 283, 597: 283, 763: 283, 892: 283, 896: 283, 903: 283, 905: 283},
{285, 285, 53: 285, 155: 285, 569: 285, 285, 572: 285, 579: 285, 285, 588: 285, 590: 285, 592: 285, 597: 285, 763: 285, 892: 285, 896: 285, 903: 285, 905: 285},
{1111, 1111, 53: 1111, 570: 1111, 572: 1111, 579: 1111, 1111, 590: 1111, 592: 1111},
{272, 272, 53: 272, 569: 272, 272, 572: 272, 579: 272, 272, 588: 272, 590: 272, 592: 272, 597: 272, 892: 272, 1528: 4202, 4203},
// 1180
{270, 270, 53: 270, 569: 270, 270, 572: 270, 579: 270, 270, 588: 270, 590: 270, 592: 270, 597: 270, 892: 4207, 1444: 4206},
{761: 4204},
{571: 4191, 676: 4192, 678: 4193, 1006: 4205},
{271, 271, 53: 271, 569: 271, 271, 572: 271, 579: 271, 271, 588: 271, 590: 271, 592: 271, 597: 271, 892: 271},
{273, 273, 53: 273, 569: 273, 273, 572: 273, 579: 273, 273, 588: 273, 590: 273, 592: 273, 597: 273},
// 1185
{761: 4208},
{571: 4191, 676: 4192, 678: 4193, 1006: 4209},
{269, 269, 53: 269, 569: 269, 269, 572: 269, 579: 269, 269, 588: 269, 590: 269, 592: 269, 597: 269},
{53: 4211},
{1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 570: 1522, 1522, 1522, 1522, 1522, 576: 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 588: 1522, 590: 1522, 1522, 1522, 594: 1522, 596: 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 619: 1522, 1522, 1522, 1522, 1522, 1522, 627: 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 647: 1522, 1522, 1522, 1522, 652: 1522, 1522, 1522, 1522, 1522, 1522, 659: 1522, 1522, 1522, 1522, 1522, 1522, 1522, 669: 1522, 671: 1522, 1522, 1522, 677: 1522, 696: 1522, 746: 1522},
// 1190
{1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 576: 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 587: 1107, 1107, 590: 1107, 1107, 1107, 594: 1107, 596: 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 619: 1107, 1107, 1107, 1107, 1107, 1107, 627: 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 652: 1107, 1107, 1107, 1107, 1107, 1107, 659: 1107, 1107, 1107, 1107, 1107, 1107, 1107, 669: 1107, 671: 1107, 1107, 1107, 677: 1107, 694: 1107, 696: 1107, 746: 1107, 751: 1107, 843: 1107},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4215},
{2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 570: 2272, 2272, 2272, 2272, 577: 2272, 579: 2272, 2272, 2272, 2272, 588: 2272, 590: 2272, 2272, 2272, 594: 2272, 596: 2272, 2272, 2272, 2272, 601: 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 620: 2272, 2272, 2272, 2272, 2272, 627: 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 647: 2272, 2272, 2272, 652: 2272, 2272, 2272, 2272, 2272, 2272},
{2310, 2310, 10: 2310, 53: 2310, 184: 2310, 579: 2310, 604: 2310, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
{2: 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 11: 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 54: 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 571: 2286, 574: 2286, 2286, 581: 2286, 2286, 2286, 2286, 2286, 2286, 2286, 589: 2286, 593: 2286, 595: 2286, 618: 2286, 625: 2286, 2286, 651: 2286, 658: 2286, 666: 2286, 2286, 2286, 670: 2286, 674: 2286, 2286, 2286, 678: 2286, 2286, 2286, 2286, 2286, 2286, 685: 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 695: 2286, 697: 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286},
// 1195
{569: 2282},
{2: 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 11: 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 54: 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 571: 2280, 574: 2280, 2280, 581: 2280, 2280, 2280, 2280, 2280, 2280, 2280, 589: 2280, 593: 2280, 595: 2280, 618: 2280, 625: 2280, 2280, 651: 2280, 658: 2280, 666: 2280, 2280, 2280, 670: 2280, 674: 2280, 2280, 2280, 678: 2280, 2280, 2280, 2280, 2280, 2280, 685: 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 695: 2280, 697: 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280},
{2: 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 11: 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 54: 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 571: 2278, 574: 2278, 2278, 581: 2278, 2278, 2278, 2278, 2278, 2278, 2278, 589: 2278, 593: 2278, 595: 2278, 618: 2278, 625: 2278, 2278, 651: 2278, 658: 2278, 666: 2278, 2278, 2278, 670: 2278, 674: 2278, 2278, 2278, 678: 2278, 2278, 2278, 2278, 2278, 2278, 685: 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 695: 2278, 697: 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278},
{2: 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 11: 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 54: 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 571: 2276, 574: 2276, 2276, 581: 2276, 2276, 2276, 2276, 2276, 2276, 2276, 589: 2276, 593: 2276, 595: 2276, 618: 2276, 625: 2276, 2276, 651: 2276, 658: 2276, 666: 2276, 2276, 2276, 670: 2276, 674: 2276, 2276, 2276, 678: 2276, 2276, 2276, 2276, 2276, 2276, 685: 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 695: 2276, 697: 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276},
{250: 4244, 586: 4245, 666: 4243, 4242},
// 1200
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 4236, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 4237, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 4235, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 755: 4238, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 4233, 1375: 4234},
{2: 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 11: 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 54: 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 571: 2295, 574: 2295, 2295, 581: 2295, 2295, 2295, 2295, 2295, 2295, 2295, 589: 2295, 593: 2295, 595: 2295, 618: 2295, 625: 2295, 2295, 651: 2295, 658: 2295, 666: 2295, 2295, 2295, 670: 2295, 674: 2295, 2295, 2295, 678: 2295, 2295, 2295, 2295, 2295, 2295, 685: 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 695: 2295, 697: 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 755: 2295},
{2: 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 11: 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 54: 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 571: 2294, 574: 2294, 2294, 581: 2294, 2294, 2294, 2294, 2294, 2294, 2294, 589: 2294, 593: 2294, 595: 2294, 618: 2294, 625: 2294, 2294, 651: 2294, 658: 2294, 666: 2294, 2294, 2294, 670: 2294, 674: 2294, 2294, 2294, 678: 2294, 2294, 2294, 2294, 2294, 2294, 685: 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 695: 2294, 697: 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 755: 2294},
{2: 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 11: 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 54: 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 571: 2293, 574: 2293, 2293, 581: 2293, 2293, 2293, 2293, 2293, 2293, 2293, 589: 2293, 593: 2293, 595: 2293, 618: 2293, 625: 2293, 2293, 651: 2293, 658: 2293, 666: 2293, 2293, 2293, 670: 2293, 674: 2293, 2293, 2293, 678: 2293, 2293, 2293, 2293, 2293, 2293, 685: 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 695: 2293, 697: 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 755: 2293},
{2: 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 11: 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 54: 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 571: 2292, 574: 2292, 2292, 581: 2292, 2292, 2292, 2292, 2292, 2292, 2292, 589: 2292, 593: 2292, 595: 2292, 618: 2292, 625: 2292, 2292, 651: 2292, 658: 2292, 666: 2292, 2292, 2292, 670: 2292, 674: 2292, 2292, 2292, 678: 2292, 2292, 2292, 2292, 2292, 2292, 685: 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 695: 2292, 697: 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 755: 2292},
// 1205
{2: 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 11: 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 54: 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 571: 2291, 574: 2291, 2291, 581: 2291, 2291, 2291, 2291, 2291, 2291, 2291, 589: 2291, 593: 2291, 595: 2291, 618: 2291, 625: 2291, 2291, 651: 2291, 658: 2291, 666: 2291, 2291, 2291, 670: 2291, 674: 2291, 2291, 2291, 678: 2291, 2291, 2291, 2291, 2291, 2291, 685: 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 695: 2291, 697: 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 755: 2291},
{2: 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 11: 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 54: 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 571: 2290, 574: 2290, 2290, 581: 2290, 2290, 2290, 2290, 2290, 2290, 2290, 589: 2290, 593: 2290, 595: 2290, 618: 2290, 625: 2290, 2290, 651: 2290, 658: 2290, 666: 2290, 2290, 2290, 670: 2290, 674: 2290, 2290, 2290, 678: 2290, 2290, 2290, 2290, 2290, 2290, 685: 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 695: 2290, 697: 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 755: 2290},
{2: 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 11: 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 54: 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 571: 2289, 574: 2289, 2289, 581: 2289, 2289, 2289, 2289, 2289, 2289, 2289, 589: 2289, 593: 2289, 595: 2289, 618: 2289, 625: 2289, 2289, 651: 2289, 658: 2289, 666: 2289, 2289, 2289, 670: 2289, 674: 2289, 2289, 2289, 678: 2289, 2289, 2289, 2289, 2289, 2289, 685: 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 695: 2289, 697: 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 755: 2289},
{2: 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 11: 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 54: 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 571: 2288, 574: 2288, 2288, 581: 2288, 2288, 2288, 2288, 2288, 2288, 2288, 589: 2288, 593: 2288, 595: 2288, 618: 2288, 625: 2288, 2288, 651: 2288, 658: 2288, 666: 2288, 2288, 2288, 670: 2288, 674: 2288, 2288, 2288, 678: 2288, 2288, 2288, 2288, 2288, 2288, 685: 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 695: 2288, 697: 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 755: 2288},
{250: 2285, 574: 4032, 576: 4031, 586: 2285, 666: 2285, 2285, 961: 4232},
// 1210
{250: 2284, 586: 2284, 666: 2284, 2284},
{2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 570: 2299, 2299, 2299, 2299, 577: 2299, 579: 2299, 2299, 2299, 2299, 588: 2299, 590: 2299, 2299, 2299, 594: 2299, 596: 2299, 2299, 2299, 2299, 601: 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 620: 2299, 2299, 2299, 2299, 2299, 627: 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 647: 2299, 2299, 2299, 652: 2299, 2299, 2299, 2299, 2299, 2299},
{569: 3076, 815: 4241},
{1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 570: 1014, 1014, 1014, 1014, 1014, 576: 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 588: 1014, 590: 1014, 1014, 1014, 594: 1014, 596: 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 619: 1014, 1014, 1014, 1014, 1014, 1014, 627: 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 647: 1014, 1014, 1014, 1014, 652: 1014, 1014, 1014, 1014, 1014, 1014, 659: 1014, 1014, 1014, 1014, 1014, 1014, 1014, 669: 1014, 671: 1014, 1014, 1014, 677: 1014, 746: 1014, 757: 4239},
{2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2275, 2067, 2067, 2067, 2067, 2067, 576: 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 588: 2067, 590: 2067, 2067, 2067, 594: 2067, 596: 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 619: 2067, 2067, 2067, 2067, 2067, 2067, 627: 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 647: 2067, 2067, 2067, 2067, 652: 2067, 2067, 2067, 2067, 2067, 2067, 659: 2067, 2067, 2067, 2067, 2067, 2067, 2067, 669: 2067, 671: 2067, 2067, 2067, 677: 2067, 746: 2067, 754: 2067, 758: 2067, 2067},
// 1215
{2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2274, 2066, 2066, 2066, 2066, 2066, 576: 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 588: 2066, 590: 2066, 2066, 2066, 594: 2066, 596: 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 619: 2066, 2066, 2066, 2066, 2066, 2066, 627: 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 647: 2066, 2066, 2066, 2066, 652: 2066, 2066, 2066, 2066, 2066, 2066, 659: 2066, 2066, 2066, 2066, 2066, 2066, 2066, 669: 2066, 671: 2066, 2066, 2066, 677: 2066, 746: 2066, 754: 2066, 758: 2066, 2066},
{569: 2273},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3783, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 4240},
{2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 570: 2297, 2297, 2297, 2297, 577: 2297, 579: 2297, 2297, 2297, 2297, 588: 2297, 590: 2297, 2297, 2297, 594: 2297, 596: 2297, 2297, 2297, 2297, 601: 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 620: 2297, 2297, 2297, 2297, 2297, 627: 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 647: 2297, 2297, 2297, 652: 2297, 2297, 2297, 2297, 2297, 2297},
{2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 570: 2298, 2298, 2298, 2298, 577: 2298, 579: 2298, 2298, 2298, 2298, 588: 2298, 590: 2298, 2298, 2298, 594: 2298, 596: 2298, 2298, 2298, 2298, 601: 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 620: 2298, 2298, 2298, 2298, 2298, 627: 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 647: 2298, 2298, 2298, 652: 2298, 2298, 2298, 2298, 2298, 2298},
// 1220
{2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 570: 2328, 2328, 2328, 2328, 577: 2328, 579: 2328, 2328, 2328, 2328, 588: 2328, 590: 2328, 592: 2328, 594: 2328, 596: 2328, 2328, 2328, 2328, 601: 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 620: 2328, 2328, 2328, 2328, 2328, 627: 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 647: 2328},
{2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 570: 2327, 2327, 2327, 2327, 577: 2327, 579: 2327, 2327, 2327, 2327, 588: 2327, 590: 2327, 592: 2327, 594: 2327, 596: 2327, 2327, 2327, 2327, 601: 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 620: 2327, 2327, 2327, 2327, 2327, 627: 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 647: 2327},
{2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 570: 2326, 2326, 2326, 2326, 577: 2326, 579: 2326, 2326, 2326, 2326, 588: 2326, 590: 2326, 592: 2326, 594: 2326, 596: 2326, 2326, 2326, 2326, 601: 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 620: 2326, 2326, 2326, 2326, 2326, 627: 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 647: 2326},
{2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 570: 2300, 2300, 2300, 2300, 577: 2300, 579: 2300, 2300, 2300, 2300, 588: 2300, 590: 2300, 2300, 2300, 594: 2300, 596: 2300, 2300, 2300, 2300, 601: 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 620: 2300, 2300, 2300, 2300, 2300, 627: 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 647: 2300, 2300, 2300, 652: 2300, 2300, 2300, 2300, 2300, 2300},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 4247, 3217, 3218, 3216, 861: 4248, 943: 4249},
// 1225
{2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 573: 2769, 591: 2769, 593: 2769, 597: 2769, 2769, 617: 2769, 625: 2769, 644: 2769, 748: 2769, 754: 4270, 757: 2769, 766: 2769, 2769, 2769, 2769, 2769, 772: 2769, 2769, 2769, 2769, 777: 2769, 2769, 2769, 2769, 2769, 783: 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769},
{10: 2766, 53: 2766},
{10: 4250, 53: 4251},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 4247, 3217, 3218, 3216, 861: 4269},
{397: 4252},
// 1230
{569: 4253},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3783, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 4254},
{53: 2320, 572: 4257, 583: 4002, 4003, 4008, 600: 4004, 645: 4256, 650: 4005, 659: 4006, 3999, 4009, 3998, 4007, 4000, 4001, 1423: 4255},
{53: 4268},
{205: 4261, 620: 4260},
// 1235
{183: 4258},
{334: 4259},
{53: 2316},
{434: 4263},
{291: 4262},
// 1240
{53: 2317},
{291: 4264},
{53: 2319, 572: 4265},
{183: 4266},
{334: 4267},
// 1245
{53: 2318},
{2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 570: 2329, 2329, 2329, 2329, 577: 2329, 579: 2329, 2329, 2329, 2329, 588: 2329, 590: 2329, 592: 2329, 594: 2329, 596: 2329, 2329, 2329, 2329, 601: 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 620: 2329, 2329, 2329, 2329, 2329, 627: 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 647: 2329},
{10: 2765, 53: 2765},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 4271, 3217, 3218, 3216},
{2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 573: 2768, 591: 2768, 593: 2768, 597: 2768, 2768, 617: 2768, 625: 2768, 644: 2768, 748: 2768, 754: 4272, 757: 2768, 766: 2768, 2768, 2768, 2768, 2768, 772: 2768, 2768, 2768, 2768, 777: 2768, 2768, 2768, 2768, 2768, 783: 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768},
// 1250
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 4273, 3217, 3218, 3216},
{2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 573: 2767, 591: 2767, 593: 2767, 597: 2767, 2767, 617: 2767, 625: 2767, 644: 2767, 748: 2767, 757: 2767, 766: 2767, 2767, 2767, 2767, 2767, 772: 2767, 2767, 2767, 2767, 777: 2767, 2767, 2767, 2767, 2767, 783: 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767},
{2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 570: 2330, 2330, 2330, 2330, 577: 2330, 579: 2330, 2330, 2330, 2330, 588: 2330, 590: 2330, 592: 2330, 594: 2330, 596: 2330, 2330, 2330, 2330, 601: 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 620: 2330, 2330, 2330, 2330, 2330, 627: 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 647: 2330, 841: 3961, 3959},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3783, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3874, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 4276, 3855, 3937, 3854, 3851},
{53: 4277, 578: 3950, 746: 3951},
// 1255
{220: 1202, 588: 1202, 603: 4279, 860: 1202, 1461: 4278},
{220: 4283, 588: 4284, 860: 1205, 1033: 4282},
{11: 4280, 261: 4281},
{220: 1201, 588: 1201, 860: 1201},
{220: 1200, 588: 1200, 860: 1200},
// 1260
{860: 4287, 873: 4288},
{356: 4286},
{356: 4285},
{860: 1203},
{860: 1204},
// 1265
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 4290, 811: 4289, 3217, 3218, 3216, 1075: 4292, 1361: 4293, 1573: 4291},
{1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 570: 1211, 1211, 1211, 1211, 1211, 576: 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 588: 1211, 590: 1211, 1211, 1211, 594: 1211, 596: 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 619: 1211, 1211, 1211, 1211, 1211, 1211, 627: 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 647: 1211, 1211, 1211, 1211, 652: 1211, 1211, 1211, 1211, 1211, 1211, 659: 1211, 1211, 1211, 1211, 1211, 1211, 1211, 669: 1211, 671: 1211, 1211, 1211, 677: 1211, 696: 1211, 746: 1211},
{1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 570: 1253, 1253, 1253, 1253, 1253, 576: 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 588: 1253, 590: 1253, 1253, 1253, 594: 1253, 596: 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 619: 1253, 1253, 1253, 1253, 1253, 1253, 627: 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 647: 1253, 1253, 1253, 1253, 652: 1253, 1253, 1253, 1253, 1253, 1253, 659: 1253, 1253, 1253, 1253, 1253, 1253, 1253, 669: 1253, 671: 1253, 1253, 1253, 677: 1253, 696: 1253, 746: 1253},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 1250, 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 573: 1250, 604: 1250, 627: 1250, 630: 1250, 632: 1250, 811: 4289, 3217, 3218, 3216, 1075: 4296, 1460: 4295, 1574: 4294},
{1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 570: 1224, 1224, 1224, 1224, 1224, 576: 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 588: 1224, 590: 1224, 1224, 1224, 594: 1224, 596: 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 619: 1224, 1224, 1224, 1224, 1224, 1224, 627: 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 647: 1224, 1224, 1224, 1224, 652: 1224, 1224, 1224, 1224, 1224, 1224, 659: 1224, 1224, 1224, 1224, 1224, 1224, 1224, 669: 1224, 671: 1224, 1224, 1224, 677: 1224, 696: 1224, 746: 1224},
// 1270
{1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 570: 1223, 1223, 1223, 1223, 1223, 576: 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 588: 1223, 590: 1223, 1223, 1223, 594: 1223, 596: 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 619: 1223, 1223, 1223, 1223, 1223, 1223, 627: 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 647: 1223, 1223, 1223, 1223, 652: 1223, 1223, 1223, 1223, 1223, 1223, 659: 1223, 1223, 1223, 1223, 1223, 1223, 1223, 669: 1223, 671: 1223, 1223, 1223, 677: 1223, 696: 1223, 746: 1223},
{1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 570: 1222, 1222, 1222, 1222, 1222, 576: 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 588: 1222, 590: 1222, 1222, 1222, 594: 1222, 596: 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 619: 1222, 1222, 1222, 1222, 1222, 1222, 627: 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 647: 1222, 1222, 1222, 1222, 652: 1222, 1222, 1222, 1222, 1222, 1222, 659: 1222, 1222, 1222, 1222, 1222, 1222, 1222, 669: 1222, 671: 1222, 1222, 1222, 677: 1222, 696: 1222, 746: 1222},
{53: 4343},
{53: 1248, 573: 4298, 604: 1248, 627: 1248, 630: 1248, 632: 1248, 1464: 4297},
{53: 1249, 573: 1249, 604: 1249, 627: 1249, 630: 1249, 632: 1249},
// 1275
{53: 1246, 604: 4302, 627: 1246, 630: 1246, 632: 1246, 1469: 4301},
{761: 4299},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4101, 1019: 4103, 1045: 4300},
{10: 4104, 53: 1247, 604: 1247, 627: 1247, 630: 1247, 632: 1247},
{53: 1244, 627: 4307, 630: 4308, 632: 4309, 1468: 4305, 1572: 4306},
// 1280
{761: 4303},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4101, 1019: 4103, 1045: 4304},
{10: 4104, 53: 1245, 627: 1245, 630: 1245, 632: 1245},
{53: 1251},
{211: 4320, 234: 4316, 595: 4310, 669: 4321, 674: 4312, 4311, 680: 4319, 4318, 952: 4317, 1148: 4314, 1570: 4315, 4313},
// 1285
{211: 1242, 234: 1242, 595: 1242, 669: 1242, 674: 1242, 1242, 680: 1242, 1242},
{211: 1241, 234: 1241, 595: 1241, 669: 1241, 674: 1241, 1241, 680: 1241, 1241},
{211: 1240, 234: 1240, 595: 1240, 669: 1240, 674: 1240, 1240, 680: 1240, 1240},
{2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 152: 2642, 176: 2642, 2642, 195: 2642, 225: 2642, 569: 2642, 2642, 572: 2642, 2642, 2642, 2642, 2642, 2642, 2642, 580: 2642, 586: 2642, 2642, 2642, 2642, 593: 2642, 605: 2642, 646: 2642, 684: 2642, 694: 2642, 741: 2642, 2642, 2642, 2642, 2642, 747: 2642, 2642, 2642},
{2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 152: 2641, 176: 2641, 2641, 195: 2641, 225: 2641, 268: 2641, 569: 2641, 2641, 572: 2641, 2641, 2641, 2641, 2641, 2641, 2641, 580: 2641, 586: 2641, 2641, 2641, 2641, 593: 2641, 605: 2641, 646: 2641, 684: 2641, 694: 2641, 741: 2641, 2641, 2641, 2641, 2641, 747: 2641, 2641, 2641},
// 1290
{2640, 2640, 2640, 2640, 2640, 2640, 2640, 2640, 2640, 2640, 2640, 2640, 2640, 2640, 2640, 2640, 2640, 2640, 2640, 2640, 2640, 2640, 2640, 2640, 2640, 2640, 2640, 2640, 2640, 2640, 2640, 2640, 2640, 2640, 2640, 2640, 2640, 2640, 2640, 2640, 2640, 2640, 2640, 2640, 2640, 2640, 2640, 2640, 2640, 2640, 2640, 2640, 2640, 2640, 152: 2640, 176: 2640, 2640, 195: 2640, 225: 2640, 268: 2640, 569: 2640, 2640, 572: 2640, 2640, 2640, 2640, 2640, 2640, 2640, 580: 2640, 586: 2640, 2640, 2640, 2640, 593: 2640, 605: 2640, 646: 2640, 684: 2640, 694: 2640, 741: 2640, 2640, 2640, 2640, 2640, 747: 2640, 2640, 2640},
{53: 1243},
{53: 1239},
{53: 1238},
{195: 4338},
// 1295
{195: 4336},
{195: 4334},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4341},
{679: 4340},
{211: 4320, 234: 4322, 595: 4310, 674: 4312, 4311, 680: 4325, 4324, 952: 4323, 1148: 4327, 1360: 4326},
// 1300
{195: 4338, 225: 4339},
{195: 4336, 225: 4337},
{195: 4334, 225: 4335},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4330},
{606: 4328},
// 1305
{53: 1231, 606: 1231},
{211: 4320, 234: 4322, 595: 4310, 674: 4312, 4311, 680: 4325, 4324, 952: 4323, 1148: 4327, 1360: 4329},
{53: 1232},
{129: 3987, 133: 3995, 154: 3983, 156: 3980, 3982, 3979, 3981, 3985, 3986, 3991, 3990, 3989, 3993, 3994, 3988, 3992, 3984, 606: 3965, 3963, 3964, 3962, 3960, 633: 3977, 3974, 3976, 3975, 3971, 3973, 3972, 3969, 3970, 3968, 3978, 841: 3961, 3959, 927: 3967, 941: 4331},
{195: 4332, 225: 4333},
// 1310
{53: 1234, 606: 1234},
{53: 1227, 606: 1227},
{53: 1235, 606: 1235},
{53: 1228, 606: 1228},
{53: 1236, 606: 1236},
// 1315
{53: 1229, 606: 1229},
{53: 1237, 606: 1237},
{53: 1230, 606: 1230},
{53: 1233, 606: 1233},
{129: 3987, 133: 3995, 154: 3983, 156: 3980, 3982, 3979, 3981, 3985, 3986, 3991, 3990, 3989, 3993, 3994, 3988, 3992, 3984, 606: 3965, 3963, 3964, 3962, 3960, 633: 3977, 3974, 3976, 3975, 3971, 3973, 3972, 3969, 3970, 3968, 3978, 841: 3961, 3959, 927: 3967, 941: 4342},
// 1320
{195: 4332},
{1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 570: 1252, 1252, 1252, 1252, 1252, 576: 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 588: 1252, 590: 1252, 1252, 1252, 594: 1252, 596: 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 619: 1252, 1252, 1252, 1252, 1252, 1252, 627: 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 647: 1252, 1252, 1252, 1252, 652: 1252, 1252, 1252, 1252, 1252, 1252, 659: 1252, 1252, 1252, 1252, 1252, 1252, 1252, 669: 1252, 671: 1252, 1252, 1252, 677: 1252, 696: 1252, 746: 1252},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4345},
{2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 570: 2334, 2334, 2334, 2334, 577: 2334, 579: 2334, 2334, 2334, 2334, 588: 2334, 590: 2334, 592: 2334, 594: 2334, 596: 2334, 2334, 2334, 2334, 601: 2334, 2334, 2334, 2334, 2334, 3965, 3963, 3964, 3962, 3960, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 620: 2334, 2334, 2334, 2334, 2334, 627: 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 647: 2334, 841: 3961, 3959},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4347},
// 1325
{53: 4348, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
{220: 4283, 588: 4284, 860: 1205, 1033: 4349},
{860: 4287, 873: 4350},
{1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 570: 1212, 1212, 1212, 1212, 1212, 576: 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 588: 1212, 590: 1212, 1212, 1212, 594: 1212, 596: 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 619: 1212, 1212, 1212, 1212, 1212, 1212, 627: 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 647: 1212, 1212, 1212, 1212, 652: 1212, 1212, 1212, 1212, 1212, 1212, 659: 1212, 1212, 1212, 1212, 1212, 1212, 1212, 669: 1212, 671: 1212, 1212, 1212, 677: 1212, 696: 1212, 746: 1212},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4352},
// 1330
{53: 4353, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
{220: 4283, 588: 4284, 860: 1205, 1033: 4354},
{860: 4287, 873: 4355},
{1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 570: 1213, 1213, 1213, 1213, 1213, 576: 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 588: 1213, 590: 1213, 1213, 1213, 594: 1213, 596: 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 619: 1213, 1213, 1213, 1213, 1213, 1213, 627: 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 647: 1213, 1213, 1213, 1213, 652: 1213, 1213, 1213, 1213, 1213, 1213, 659: 1213, 1213, 1213, 1213, 1213, 1213, 1213, 669: 1213, 671: 1213, 1213, 1213, 677: 1213, 696: 1213, 746: 1213},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4357},
// 1335
{10: 4359, 53: 1210, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959, 1274: 4358},
{53: 4366},
{595: 4310, 674: 4312, 4311, 681: 4361, 952: 4360},
{10: 4363, 53: 1207, 1275: 4365},
{10: 4363, 53: 1207, 1275: 4362},
// 1340
{53: 1208},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4364},
{53: 1206, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
{53: 1209},
{220: 4283, 588: 4284, 860: 1205, 1033: 4367},
// 1345
{860: 4287, 873: 4368},
{1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 570: 1214, 1214, 1214, 1214, 1214, 576: 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 588: 1214, 590: 1214, 1214, 1214, 594: 1214, 596: 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 619: 1214, 1214, 1214, 1214, 1214, 1214, 627: 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 647: 1214, 1214, 1214, 1214, 652: 1214, 1214, 1214, 1214, 1214, 1214, 659: 1214, 1214, 1214, 1214, 1214, 1214, 1214, 669: 1214, 671: 1214, 1214, 1214, 677: 1214, 696: 1214, 746: 1214},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4370},
{10: 4359, 53: 1210, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959, 1274: 4371},
{53: 4372},
// 1350
{220: 4283, 588: 4284, 860: 1205, 1033: 4373},
{860: 4287, 873: 4374},
{1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 570: 1215, 1215, 1215, 1215, 1215, 576: 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 588: 1215, 590: 1215, 1215, 1215, 594: 1215, 596: 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 619: 1215, 1215, 1215, 1215, 1215, 1215, 627: 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 647: 1215, 1215, 1215, 1215, 652: 1215, 1215, 1215, 1215, 1215, 1215, 659: 1215, 1215, 1215, 1215, 1215, 1215, 1215, 669: 1215, 671: 1215, 1215, 1215, 677: 1215, 696: 1215, 746: 1215},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3783, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3874, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 4376, 3855, 3937, 3854, 3851},
{53: 4377, 578: 3950, 746: 3951},
// 1355
{860: 4287, 873: 4378},
{1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 570: 1216, 1216, 1216, 1216, 1216, 576: 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 588: 1216, 590: 1216, 1216, 1216, 594: 1216, 596: 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 619: 1216, 1216, 1216, 1216, 1216, 1216, 627: 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 647: 1216, 1216, 1216, 1216, 652: 1216, 1216, 1216, 1216, 1216, 1216, 659: 1216, 1216, 1216, 1216, 1216, 1216, 1216, 669: 1216, 671: 1216, 1216, 1216, 677: 1216, 696: 1216, 746: 1216},
{53: 4380},
{860: 4287, 873: 4381},
{1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 570: 1217, 1217, 1217, 1217, 1217, 576: 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 588: 1217, 590: 1217, 1217, 1217, 594: 1217, 596: 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 619: 1217, 1217, 1217, 1217, 1217, 1217, 627: 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 647: 1217, 1217, 1217, 1217, 652: 1217, 1217, 1217, 1217, 1217, 1217, 659: 1217, 1217, 1217, 1217, 1217, 1217, 1217, 669: 1217, 671: 1217, 1217, 1217, 677: 1217, 696: 1217, 746: 1217},
// 1360
{53: 4383},
{860: 4287, 873: 4384},
{1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 570: 1218, 1218, 1218, 1218, 1218, 576: 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 588: 1218, 590: 1218, 1218, 1218, 594: 1218, 596: 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 619: 1218, 1218, 1218, 1218, 1218, 1218, 627: 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 647: 1218, 1218, 1218, 1218, 652: 1218, 1218, 1218, 1218, 1218, 1218, 659: 1218, 1218, 1218, 1218, 1218, 1218, 1218, 669: 1218, 671: 1218, 1218, 1218, 677: 1218, 696: 1218, 746: 1218},
{53: 4386},
{860: 4287, 873: 4387},
// 1365
{1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 570: 1219, 1219, 1219, 1219, 1219, 576: 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 588: 1219, 590: 1219, 1219, 1219, 594: 1219, 596: 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 619: 1219, 1219, 1219, 1219, 1219, 1219, 627: 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 647: 1219, 1219, 1219, 1219, 652: 1219, 1219, 1219, 1219, 1219, 1219, 659: 1219, 1219, 1219, 1219, 1219, 1219, 1219, 669: 1219, 671: 1219, 1219, 1219, 677: 1219, 696: 1219, 746: 1219},
{53: 4389},
{860: 4287, 873: 4390},
{1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 570: 1220, 1220, 1220, 1220, 1220, 576: 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 588: 1220, 590: 1220, 1220, 1220, 594: 1220, 596: 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 619: 1220, 1220, 1220, 1220, 1220, 1220, 627: 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 647: 1220, 1220, 1220, 1220, 652: 1220, 1220, 1220, 1220, 1220, 1220, 659: 1220, 1220, 1220, 1220, 1220, 1220, 1220, 669: 1220, 671: 1220, 1220, 1220, 677: 1220, 696: 1220, 746: 1220},
{53: 4392},
// 1370
{860: 4287, 873: 4393},
{1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 570: 1221, 1221, 1221, 1221, 1221, 576: 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 588: 1221, 590: 1221, 1221, 1221, 594: 1221, 596: 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 619: 1221, 1221, 1221, 1221, 1221, 1221, 627: 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 647: 1221, 1221, 1221, 1221, 652: 1221, 1221, 1221, 1221, 1221, 1221, 659: 1221, 1221, 1221, 1221, 1221, 1221, 1221, 669: 1221, 671: 1221, 1221, 1221, 677: 1221, 696: 1221, 746: 1221},
{2: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 11: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 54: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 571: 1513, 574: 1513, 1513, 1513, 581: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 589: 1513, 593: 1513, 595: 1513, 618: 1513, 625: 1513, 1513, 651: 1513, 658: 1513, 666: 1513, 1513, 1513, 670: 1513, 674: 1513, 1513, 1513, 678: 1513, 1513, 1513, 1513, 1513, 1513, 685: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 695: 1513, 697: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 750: 1513, 755: 4397, 869: 4395, 4396, 926: 4398, 930: 4399, 956: 4401, 4400},
{2: 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 11: 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 54: 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 571: 1517, 574: 1517, 1517, 1517, 581: 1517, 1517, 1517, 1517, 1517, 1517, 1517, 589: 1517, 593: 1517, 595: 1517, 600: 1517, 613: 1517, 618: 1517, 625: 1517, 1517, 646: 1517, 651: 1517, 658: 1517, 666: 1517, 1517, 1517, 670: 1517, 674: 1517, 1517, 1517, 678: 1517, 1517, 1517, 1517, 1517, 1517, 685: 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 697: 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 750: 1517, 755: 1517, 869: 1517, 1517, 872: 1517, 874: 1517, 876: 1517, 880: 1517, 889: 1517, 1517, 1517},
{2: 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 11: 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 54: 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 571: 1516, 574: 1516, 1516, 1516, 581: 1516, 1516, 1516, 1516, 1516, 1516, 1516, 589: 1516, 593: 1516, 595: 1516, 600: 1516, 613: 1516, 618: 1516, 625: 1516, 1516, 646: 1516, 651: 1516, 658: 1516, 666: 1516, 1516, 1516, 670: 1516, 674: 1516, 1516, 1516, 678: 1516, 1516, 1516, 1516, 1516, 1516, 685: 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 697: 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 750: 1516, 755: 1516, 869: 1516, 1516, 872: 1516, 874: 1516, 876: 1516, 880: 1516, 889: 1516, 1516, 1516},
// 1375
{2: 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 11: 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 54: 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 571: 1515, 574: 1515, 1515, 1515, 581: 1515, 1515, 1515, 1515, 1515, 1515, 1515, 589: 1515, 593: 1515, 595: 1515, 600: 1515, 613: 1515, 618: 1515, 625: 1515, 1515, 646: 1515, 651: 1515, 658: 1515, 666: 1515, 1515, 1515, 670: 1515, 674: 1515, 1515, 1515, 678: 1515, 1515, 1515, 1515, 1515, 1515, 685: 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 697: 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, 750: 1515, 755: 1515, 869: 1515, 1515, 872: 1515, 874: 1515, 876: 1515, 880: 1515, 889: 1515, 1515, 1515},
{2: 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 11: 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 54: 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 571: 1514, 574: 1514, 1514, 1514, 581: 1514, 1514, 1514, 1514, 1514, 1514, 1514, 589: 1514, 593: 1514, 595: 1514, 618: 1514, 625: 1514, 1514, 651: 1514, 658: 1514, 666: 1514, 1514, 1514, 670: 1514, 674: 1514, 1514, 1514, 678: 1514, 1514, 1514, 1514, 1514, 1514, 685: 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 695: 1514, 697: 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 750: 1514, 755: 4406},
{2: 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 11: 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 54: 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 571: 1512, 574: 1512, 1512, 1512, 581: 1512, 1512, 1512, 1512, 1512, 1512, 1512, 589: 1512, 593: 1512, 595: 1512, 618: 1512, 625: 1512, 1512, 651: 1512, 658: 1512, 666: 1512, 1512, 1512, 670: 1512, 674: 1512, 1512, 1512, 678: 1512, 1512, 1512, 1512, 1512, 1512, 685: 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 695: 1512, 697: 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 750: 1512},
{2: 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 11: 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 54: 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 571: 1509, 574: 1509, 1509, 1509, 581: 1509, 1509, 1509, 1509, 1509, 1509, 1509, 589: 1509, 593: 1509, 595: 1509, 618: 1509, 625: 1509, 1509, 651: 1509, 658: 1509, 666: 1509, 1509, 1509, 670: 1509, 674: 1509, 1509, 1509, 678: 1509, 1509, 1509, 1509, 1509, 1509, 685: 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 695: 1509, 697: 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 750: 1509},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4402},
// 1380
{53: 4403, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
{1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 570: 1226, 1226, 1226, 1226, 1226, 576: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 588: 1226, 590: 1226, 1226, 1226, 594: 1226, 596: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 619: 1226, 1226, 1226, 1226, 1226, 1226, 627: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 647: 1226, 1226, 1226, 1226, 652: 1226, 1226, 1226, 1226, 1226, 1226, 659: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 669: 1226, 671: 1226, 1226, 1226, 677: 1226, 696: 1226, 746: 1226, 860: 4287, 873: 4405, 884: 4404},
{1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 570: 1392, 1392, 1392, 1392, 1392, 576: 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 588: 1392, 590: 1392, 1392, 1392, 594: 1392, 596: 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 619: 1392, 1392, 1392, 1392, 1392, 1392, 627: 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 647: 1392, 1392, 1392, 1392, 652: 1392, 1392, 1392, 1392, 1392, 1392, 659: 1392, 1392, 1392, 1392, 1392, 1392, 1392, 669: 1392, 671: 1392, 1392, 1392, 677: 1392, 696: 1392, 746: 1392},
{1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 570: 1225, 1225, 1225, 1225, 1225, 576: 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 588: 1225, 590: 1225, 1225, 1225, 594: 1225, 596: 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 619: 1225, 1225, 1225, 1225, 1225, 1225, 627: 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 647: 1225, 1225, 1225, 1225, 652: 1225, 1225, 1225, 1225, 1225, 1225, 659: 1225, 1225, 1225, 1225, 1225, 1225, 1225, 669: 1225, 671: 1225, 1225, 1225, 677: 1225, 696: 1225, 746: 1225},
{2: 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 11: 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 54: 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 571: 1508, 574: 1508, 1508, 1508, 581: 1508, 1508, 1508, 1508, 1508, 1508, 1508, 589: 1508, 593: 1508, 595: 1508, 618: 1508, 625: 1508, 1508, 651: 1508, 658: 1508, 666: 1508, 1508, 1508, 670: 1508, 674: 1508, 1508, 1508, 678: 1508, 1508, 1508, 1508, 1508, 1508, 685: 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 695: 1508, 697: 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 750: 1508},
// 1385
{2: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 11: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 54: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 571: 1513, 574: 1513, 1513, 1513, 581: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 589: 1513, 593: 1513, 595: 1513, 618: 1513, 625: 1513, 1513, 651: 1513, 658: 1513, 666: 1513, 1513, 1513, 670: 1513, 674: 1513, 1513, 1513, 678: 1513, 1513, 1513, 1513, 1513, 1513, 685: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 695: 1513, 697: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 750: 1513, 755: 4397, 869: 4395, 4396, 926: 4398, 930: 4399, 956: 4408, 4400},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4409},
{53: 4410, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
{1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 570: 1226, 1226, 1226, 1226, 1226, 576: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 588: 1226, 590: 1226, 1226, 1226, 594: 1226, 596: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 619: 1226, 1226, 1226, 1226, 1226, 1226, 627: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 647: 1226, 1226, 1226, 1226, 652: 1226, 1226, 1226, 1226, 1226, 1226, 659: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 669: 1226, 671: 1226, 1226, 1226, 677: 1226, 696: 1226, 746: 1226, 860: 4287, 873: 4405, 884: 4411},
{1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 570: 1393, 1393, 1393, 1393, 1393, 576: 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 588: 1393, 590: 1393, 1393, 1393, 594: 1393, 596: 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 619: 1393, 1393, 1393, 1393, 1393, 1393, 627: 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 647: 1393, 1393, 1393, 1393, 652: 1393, 1393, 1393, 1393, 1393, 1393, 659: 1393, 1393, 1393, 1393, 1393, 1393, 1393, 669: 1393, 671: 1393, 1393, 1393, 677: 1393, 696: 1393, 746: 1393},
// 1390
{2: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 11: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 54: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 571: 1513, 574: 1513, 1513, 1513, 581: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 589: 1513, 593: 1513, 595: 1513, 618: 1513, 625: 1513, 1513, 651: 1513, 658: 1513, 666: 1513, 1513, 1513, 670: 1513, 674: 1513, 1513, 1513, 678: 1513, 1513, 1513, 1513, 1513, 1513, 685: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 695: 1513, 697: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 750: 1513, 755: 4397, 869: 4395, 4396, 926: 4398, 930: 4399, 956: 4413, 4400},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4414},
{53: 4415, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
{1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 570: 1226, 1226, 1226, 1226, 1226, 576: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 588: 1226, 590: 1226, 1226, 1226, 594: 1226, 596: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 619: 1226, 1226, 1226, 1226, 1226, 1226, 627: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 647: 1226, 1226, 1226, 1226, 652: 1226, 1226, 1226, 1226, 1226, 1226, 659: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 669: 1226, 671: 1226, 1226, 1226, 677: 1226, 696: 1226, 746: 1226, 860: 4287, 873: 4405, 884: 4416},
{1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 570: 1394, 1394, 1394, 1394, 1394, 576: 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 588: 1394, 590: 1394, 1394, 1394, 594: 1394, 596: 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 619: 1394, 1394, 1394, 1394, 1394, 1394, 627: 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 647: 1394, 1394, 1394, 1394, 652: 1394, 1394, 1394, 1394, 1394, 1394, 659: 1394, 1394, 1394, 1394, 1394, 1394, 1394, 669: 1394, 671: 1394, 1394, 1394, 677: 1394, 696: 1394, 746: 1394},
// 1395
{2: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 11: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 54: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 571: 1513, 574: 1513, 1513, 1513, 581: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 589: 1513, 593: 1513, 595: 1513, 618: 1513, 625: 1513, 1513, 651: 1513, 658: 1513, 666: 1513, 1513, 1513, 670: 1513, 674: 1513, 1513, 1513, 678: 1513, 1513, 1513, 1513, 1513, 1513, 685: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 695: 1513, 697: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 750: 1513, 755: 4397, 869: 4395, 4396, 926: 4398, 930: 4399, 956: 4418, 4400},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4419},
{53: 4420, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
{1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 570: 1226, 1226, 1226, 1226, 1226, 576: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 588: 1226, 590: 1226, 1226, 1226, 594: 1226, 596: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 619: 1226, 1226, 1226, 1226, 1226, 1226, 627: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 647: 1226, 1226, 1226, 1226, 652: 1226, 1226, 1226, 1226, 1226, 1226, 659: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 669: 1226, 671: 1226, 1226, 1226, 677: 1226, 696: 1226, 746: 1226, 860: 4287, 873: 4405, 884: 4421},
{1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 570: 1395, 1395, 1395, 1395, 1395, 576: 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 588: 1395, 590: 1395, 1395, 1395, 594: 1395, 596: 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 619: 1395, 1395, 1395, 1395, 1395, 1395, 627: 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 647: 1395, 1395, 1395, 1395, 652: 1395, 1395, 1395, 1395, 1395, 1395, 659: 1395, 1395, 1395, 1395, 1395, 1395, 1395, 669: 1395, 671: 1395, 1395, 1395, 677: 1395, 696: 1395, 746: 1395},
// 1400
{2: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 11: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 54: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 571: 1513, 574: 1513, 1513, 1513, 581: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 589: 1513, 593: 1513, 595: 1513, 618: 1513, 625: 1513, 1513, 651: 1513, 658: 1513, 666: 1513, 1513, 1513, 670: 1513, 674: 1513, 1513, 1513, 678: 1513, 1513, 1513, 1513, 1513, 1513, 685: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 695: 1513, 697: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 750: 1513, 755: 4397, 869: 4395, 4396, 926: 4398, 930: 4399, 956: 4423, 4400},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4424},
{53: 4425, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
{1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 570: 1226, 1226, 1226, 1226, 1226, 576: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 588: 1226, 590: 1226, 1226, 1226, 594: 1226, 596: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 619: 1226, 1226, 1226, 1226, 1226, 1226, 627: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 647: 1226, 1226, 1226, 1226, 652: 1226, 1226, 1226, 1226, 1226, 1226, 659: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 669: 1226, 671: 1226, 1226, 1226, 677: 1226, 696: 1226, 746: 1226, 860: 4287, 873: 4405, 884: 4426},
{1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 570: 1396, 1396, 1396, 1396, 1396, 576: 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 588: 1396, 590: 1396, 1396, 1396, 594: 1396, 596: 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 619: 1396, 1396, 1396, 1396, 1396, 1396, 627: 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 647: 1396, 1396, 1396, 1396, 652: 1396, 1396, 1396, 1396, 1396, 1396, 659: 1396, 1396, 1396, 1396, 1396, 1396, 1396, 669: 1396, 671: 1396, 1396, 1396, 677: 1396, 696: 1396, 746: 1396},
// 1405
{2: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 11: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 54: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 571: 1513, 574: 1513, 1513, 1513, 581: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 589: 1513, 593: 1513, 595: 1513, 618: 1513, 625: 1513, 1513, 651: 1513, 658: 1513, 666: 1513, 1513, 1513, 670: 1513, 674: 1513, 1513, 1513, 678: 1513, 1513, 1513, 1513, 1513, 1513, 685: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 695: 1513, 697: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 750: 1513, 755: 4397, 869: 4395, 4396, 926: 4398, 930: 4399, 956: 4428, 4400},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4429},
{53: 4430, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
{1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 570: 1226, 1226, 1226, 1226, 1226, 576: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 588: 1226, 590: 1226, 1226, 1226, 594: 1226, 596: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 619: 1226, 1226, 1226, 1226, 1226, 1226, 627: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 647: 1226, 1226, 1226, 1226, 652: 1226, 1226, 1226, 1226, 1226, 1226, 659: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 669: 1226, 671: 1226, 1226, 1226, 677: 1226, 696: 1226, 746: 1226, 860: 4287, 873: 4405, 884: 4431},
{1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 570: 1397, 1397, 1397, 1397, 1397, 576: 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 588: 1397, 590: 1397, 1397, 1397, 594: 1397, 596: 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 619: 1397, 1397, 1397, 1397, 1397, 1397, 627: 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 1397, 647: 1397, 1397, 1397, 1397, 652: 1397, 1397, 1397, 1397, 1397, 1397, 659: 1397, 1397, 1397, 1397, 1397, 1397, 1397, 669: 1397, 671: 1397, 1397, 1397, 677: 1397, 696: 1397, 746: 1397},
// 1410
{2: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 11: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 54: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 571: 1513, 574: 1513, 1513, 1513, 581: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 589: 1513, 593: 1513, 595: 1513, 618: 1513, 625: 1513, 1513, 651: 1513, 658: 1513, 666: 1513, 1513, 1513, 670: 1513, 674: 1513, 1513, 1513, 678: 1513, 1513, 1513, 1513, 1513, 1513, 685: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 695: 1513, 697: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 750: 1513, 755: 4397, 869: 4395, 4396, 926: 4398, 930: 4399, 956: 4433, 4400},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4434},
{53: 4435, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
{1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 570: 1226, 1226, 1226, 1226, 1226, 576: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 588: 1226, 590: 1226, 1226, 1226, 594: 1226, 596: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 619: 1226, 1226, 1226, 1226, 1226, 1226, 627: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 647: 1226, 1226, 1226, 1226, 652: 1226, 1226, 1226, 1226, 1226, 1226, 659: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 669: 1226, 671: 1226, 1226, 1226, 677: 1226, 696: 1226, 746: 1226, 860: 4287, 873: 4405, 884: 4436},
{1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 570: 1398, 1398, 1398, 1398, 1398, 576: 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 588: 1398, 590: 1398, 1398, 1398, 594: 1398, 596: 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 619: 1398, 1398, 1398, 1398, 1398, 1398, 627: 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 647: 1398, 1398, 1398, 1398, 652: 1398, 1398, 1398, 1398, 1398, 1398, 659: 1398, 1398, 1398, 1398, 1398, 1398, 1398, 669: 1398, 671: 1398, 1398, 1398, 677: 1398, 696: 1398, 746: 1398},
// 1415
{2: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 11: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 54: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 571: 1513, 574: 1513, 1513, 1513, 581: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 589: 1513, 593: 1513, 595: 1513, 618: 1513, 625: 1513, 1513, 651: 1513, 658: 1513, 666: 1513, 1513, 1513, 670: 1513, 674: 1513, 1513, 1513, 678: 1513, 1513, 1513, 1513, 1513, 1513, 685: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 695: 1513, 697: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 750: 1513, 755: 4397, 869: 4395, 4396, 926: 4398, 930: 4399, 956: 4438, 4400},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4062, 894: 4439},
{10: 4213, 53: 1572, 184: 1572, 604: 4077, 882: 4131, 953: 4440},
{53: 1385, 184: 4442, 1462: 4441},
{53: 4444},
// 1420
{571: 4443},
{53: 1384},
{1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 570: 1226, 1226, 1226, 1226, 1226, 576: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 588: 1226, 590: 1226, 1226, 1226, 594: 1226, 596: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 619: 1226, 1226, 1226, 1226, 1226, 1226, 627: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 647: 1226, 1226, 1226, 1226, 652: 1226, 1226, 1226, 1226, 1226, 1226, 659: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 669: 1226, 671: 1226, 1226, 1226, 677: 1226, 696: 1226, 746: 1226, 860: 4287, 873: 4405, 884: 4445},
{1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 570: 1399, 1399, 1399, 1399, 1399, 576: 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 588: 1399, 590: 1399, 1399, 1399, 594: 1399, 596: 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 619: 1399, 1399, 1399, 1399, 1399, 1399, 627: 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 647: 1399, 1399, 1399, 1399, 652: 1399, 1399, 1399, 1399, 1399, 1399, 659: 1399, 1399, 1399, 1399, 1399, 1399, 1399, 669: 1399, 671: 1399, 1399, 1399, 677: 1399, 696: 1399, 746: 1399},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 600: 4450, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 755: 4449, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4447, 869: 4395, 4396, 926: 4448},
// 1425
{53: 4458, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4062, 894: 4456},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4453},
{53: 4451},
{1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 570: 1226, 1226, 1226, 1226, 1226, 576: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 588: 1226, 590: 1226, 1226, 1226, 594: 1226, 596: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 619: 1226, 1226, 1226, 1226, 1226, 1226, 627: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 647: 1226, 1226, 1226, 1226, 652: 1226, 1226, 1226, 1226, 1226, 1226, 659: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 669: 1226, 671: 1226, 1226, 1226, 677: 1226, 696: 1226, 746: 1226, 860: 4287, 873: 4405, 884: 4452},
// 1430
{1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 570: 1400, 1400, 1400, 1400, 1400, 576: 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 588: 1400, 590: 1400, 1400, 1400, 594: 1400, 596: 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 619: 1400, 1400, 1400, 1400, 1400, 1400, 627: 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 647: 1400, 1400, 1400, 1400, 652: 1400, 1400, 1400, 1400, 1400, 1400, 659: 1400, 1400, 1400, 1400, 1400, 1400, 1400, 669: 1400, 671: 1400, 1400, 1400, 677: 1400, 696: 1400, 746: 1400},
{53: 4454, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
{1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 570: 1226, 1226, 1226, 1226, 1226, 576: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 588: 1226, 590: 1226, 1226, 1226, 594: 1226, 596: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 619: 1226, 1226, 1226, 1226, 1226, 1226, 627: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 647: 1226, 1226, 1226, 1226, 652: 1226, 1226, 1226, 1226, 1226, 1226, 659: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 669: 1226, 671: 1226, 1226, 1226, 677: 1226, 696: 1226, 746: 1226, 860: 4287, 873: 4405, 884: 4455},
{1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 570: 1402, 1402, 1402, 1402, 1402, 576: 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 588: 1402, 590: 1402, 1402, 1402, 594: 1402, 596: 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 619: 1402, 1402, 1402, 1402, 1402, 1402, 627: 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 647: 1402, 1402, 1402, 1402, 652: 1402, 1402, 1402, 1402, 1402, 1402, 659: 1402, 1402, 1402, 1402, 1402, 1402, 1402, 669: 1402, 671: 1402, 1402, 1402, 677: 1402, 696: 1402, 746: 1402},
{10: 4213, 53: 4457},
// 1435
{1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 570: 1403, 1403, 1403, 1403, 1403, 576: 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 588: 1403, 590: 1403, 1403, 1403, 594: 1403, 596: 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 619: 1403, 1403, 1403, 1403, 1403, 1403, 627: 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 647: 1403, 1403, 1403, 1403, 652: 1403, 1403, 1403, 1403, 1403, 1403, 659: 1403, 1403, 1403, 1403, 1403, 1403, 1403, 669: 1403, 671: 1403, 1403, 1403, 677: 1403, 696: 1403, 746: 1403},
{1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 570: 1226, 1226, 1226, 1226, 1226, 576: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 588: 1226, 590: 1226, 1226, 1226, 594: 1226, 596: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 619: 1226, 1226, 1226, 1226, 1226, 1226, 627: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 647: 1226, 1226, 1226, 1226, 652: 1226, 1226, 1226, 1226, 1226, 1226, 659: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 669: 1226, 671: 1226, 1226, 1226, 677: 1226, 696: 1226, 746: 1226, 860: 4287, 873: 4405, 884: 4459},
{1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 570: 1401, 1401, 1401, 1401, 1401, 576: 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 588: 1401, 590: 1401, 1401, 1401, 594: 1401, 596: 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 619: 1401, 1401, 1401, 1401, 1401, 1401, 627: 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 647: 1401, 1401, 1401, 1401, 652: 1401, 1401, 1401, 1401, 1401, 1401, 659: 1401, 1401, 1401, 1401, 1401, 1401, 1401, 669: 1401, 671: 1401, 1401, 1401, 677: 1401, 696: 1401, 746: 1401},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 755: 4462, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4461},
{53: 4466, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
// 1440
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4463},
{53: 4464, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
{1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 570: 1226, 1226, 1226, 1226, 1226, 576: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 588: 1226, 590: 1226, 1226, 1226, 594: 1226, 596: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 619: 1226, 1226, 1226, 1226, 1226, 1226, 627: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 647: 1226, 1226, 1226, 1226, 652: 1226, 1226, 1226, 1226, 1226, 1226, 659: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 669: 1226, 671: 1226, 1226, 1226, 677: 1226, 696: 1226, 746: 1226, 860: 4287, 873: 4405, 884: 4465},
{1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 570: 1404, 1404, 1404, 1404, 1404, 576: 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 588: 1404, 590: 1404, 1404, 1404, 594: 1404, 596: 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 619: 1404, 1404, 1404, 1404, 1404, 1404, 627: 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 647: 1404, 1404, 1404, 1404, 652: 1404, 1404, 1404, 1404, 1404, 1404, 659: 1404, 1404, 1404, 1404, 1404, 1404, 1404, 669: 1404, 671: 1404, 1404, 1404, 677: 1404, 696: 1404, 746: 1404},
{1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 570: 1226, 1226, 1226, 1226, 1226, 576: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 588: 1226, 590: 1226, 1226, 1226, 594: 1226, 596: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 619: 1226, 1226, 1226, 1226, 1226, 1226, 627: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 647: 1226, 1226, 1226, 1226, 652: 1226, 1226, 1226, 1226, 1226, 1226, 659: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 669: 1226, 671: 1226, 1226, 1226, 677: 1226, 696: 1226, 746: 1226, 860: 4287, 873: 4405, 884: 4467},
// 1445
{1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 570: 1405, 1405, 1405, 1405, 1405, 576: 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 588: 1405, 590: 1405, 1405, 1405, 594: 1405, 596: 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 619: 1405, 1405, 1405, 1405, 1405, 1405, 627: 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 647: 1405, 1405, 1405, 1405, 652: 1405, 1405, 1405, 1405, 1405, 1405, 659: 1405, 1405, 1405, 1405, 1405, 1405, 1405, 669: 1405, 671: 1405, 1405, 1405, 677: 1405, 696: 1405, 746: 1405},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 755: 4470, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4469},
{53: 4474, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4471},
{53: 4472, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
// 1450
{1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 570: 1226, 1226, 1226, 1226, 1226, 576: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 588: 1226, 590: 1226, 1226, 1226, 594: 1226, 596: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 619: 1226, 1226, 1226, 1226, 1226, 1226, 627: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 647: 1226, 1226, 1226, 1226, 652: 1226, 1226, 1226, 1226, 1226, 1226, 659: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 669: 1226, 671: 1226, 1226, 1226, 677: 1226, 696: 1226, 746: 1226, 860: 4287, 873: 4405, 884: 4473},
{1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 570: 1406, 1406, 1406, 1406, 1406, 576: 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 588: 1406, 590: 1406, 1406, 1406, 594: 1406, 596: 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 619: 1406, 1406, 1406, 1406, 1406, 1406, 627: 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 647: 1406, 1406, 1406, 1406, 652: 1406, 1406, 1406, 1406, 1406, 1406, 659: 1406, 1406, 1406, 1406, 1406, 1406, 1406, 669: 1406, 671: 1406, 1406, 1406, 677: 1406, 696: 1406, 746: 1406},
{1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 570: 1226, 1226, 1226, 1226, 1226, 576: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 588: 1226, 590: 1226, 1226, 1226, 594: 1226, 596: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 619: 1226, 1226, 1226, 1226, 1226, 1226, 627: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 647: 1226, 1226, 1226, 1226, 652: 1226, 1226, 1226, 1226, 1226, 1226, 659: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 669: 1226, 671: 1226, 1226, 1226, 677: 1226, 696: 1226, 746: 1226, 860: 4287, 873: 4405, 884: 4475},
{1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 570: 1407, 1407, 1407, 1407, 1407, 576: 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 588: 1407, 590: 1407, 1407, 1407, 594: 1407, 596: 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 619: 1407, 1407, 1407, 1407, 1407, 1407, 627: 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 647: 1407, 1407, 1407, 1407, 652: 1407, 1407, 1407, 1407, 1407, 1407, 659: 1407, 1407, 1407, 1407, 1407, 1407, 1407, 669: 1407, 671: 1407, 1407, 1407, 677: 1407, 696: 1407, 746: 1407},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 755: 4478, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4477},
// 1455
{53: 4482, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4479},
{53: 4480, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
{1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 570: 1226, 1226, 1226, 1226, 1226, 576: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 588: 1226, 590: 1226, 1226, 1226, 594: 1226, 596: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 619: 1226, 1226, 1226, 1226, 1226, 1226, 627: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 647: 1226, 1226, 1226, 1226, 652: 1226, 1226, 1226, 1226, 1226, 1226, 659: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 669: 1226, 671: 1226, 1226, 1226, 677: 1226, 696: 1226, 746: 1226, 860: 4287, 873: 4405, 884: 4481},
{1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 570: 1408, 1408, 1408, 1408, 1408, 576: 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 588: 1408, 590: 1408, 1408, 1408, 594: 1408, 596: 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 619: 1408, 1408, 1408, 1408, 1408, 1408, 627: 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 647: 1408, 1408, 1408, 1408, 652: 1408, 1408, 1408, 1408, 1408, 1408, 659: 1408, 1408, 1408, 1408, 1408, 1408, 1408, 669: 1408, 671: 1408, 1408, 1408, 677: 1408, 696: 1408, 746: 1408},
// 1460
{1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 570: 1226, 1226, 1226, 1226, 1226, 576: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 588: 1226, 590: 1226, 1226, 1226, 594: 1226, 596: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 619: 1226, 1226, 1226, 1226, 1226, 1226, 627: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 647: 1226, 1226, 1226, 1226, 652: 1226, 1226, 1226, 1226, 1226, 1226, 659: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 669: 1226, 671: 1226, 1226, 1226, 677: 1226, 696: 1226, 746: 1226, 860: 4287, 873: 4405, 884: 4483},
{1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 570: 1409, 1409, 1409, 1409, 1409, 576: 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 588: 1409, 590: 1409, 1409, 1409, 594: 1409, 596: 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 619: 1409, 1409, 1409, 1409, 1409, 1409, 627: 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 647: 1409, 1409, 1409, 1409, 652: 1409, 1409, 1409, 1409, 1409, 1409, 659: 1409, 1409, 1409, 1409, 1409, 1409, 1409, 669: 1409, 671: 1409, 1409, 1409, 677: 1409, 696: 1409, 746: 1409},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4062, 894: 4485},
{10: 4213, 53: 4486},
{1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 570: 1410, 1410, 1410, 1410, 1410, 576: 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 588: 1410, 590: 1410, 1410, 1410, 594: 1410, 596: 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 619: 1410, 1410, 1410, 1410, 1410, 1410, 627: 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 647: 1410, 1410, 1410, 1410, 652: 1410, 1410, 1410, 1410, 1410, 1410, 659: 1410, 1410, 1410, 1410, 1410, 1410, 1410, 669: 1410, 671: 1410, 1410, 1410, 677: 1410, 696: 1410, 746: 1410},
// 1465
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4062, 894: 4488},
{10: 4213, 53: 4489},
{1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 570: 1411, 1411, 1411, 1411, 1411, 576: 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 588: 1411, 590: 1411, 1411, 1411, 594: 1411, 596: 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 619: 1411, 1411, 1411, 1411, 1411, 1411, 627: 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 647: 1411, 1411, 1411, 1411, 652: 1411, 1411, 1411, 1411, 1411, 1411, 659: 1411, 1411, 1411, 1411, 1411, 1411, 1411, 669: 1411, 671: 1411, 1411, 1411, 677: 1411, 696: 1411, 746: 1411},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4491},
{10: 4492, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
// 1470
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4493},
{10: 4494, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4495},
{53: 4496, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
{1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 570: 1428, 1428, 1428, 1428, 1428, 576: 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 588: 1428, 590: 1428, 1428, 1428, 594: 1428, 596: 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 619: 1428, 1428, 1428, 1428, 1428, 1428, 627: 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 647: 1428, 1428, 1428, 1428, 652: 1428, 1428, 1428, 1428, 1428, 1428, 659: 1428, 1428, 1428, 1428, 1428, 1428, 1428, 669: 1428, 671: 1428, 1428, 1428, 677: 1428, 696: 1428, 746: 1428},
// 1475
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4498, 1385: 4500, 1441: 4501, 1549: 4502, 4499},
{53: 4510, 603: 4511, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 603: 4504, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4503},
{2: 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 11: 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 54: 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 571: 1418, 574: 1418, 1418, 1418, 581: 1418, 1418, 1418, 1418, 1418, 1418, 1418, 589: 1418, 593: 1418, 595: 1418, 603: 1418, 618: 1418, 625: 1418, 1418, 651: 1418, 658: 1418, 666: 1418, 1418, 1418, 670: 1418, 674: 1418, 1418, 1418, 678: 1418, 1418, 1418, 1418, 1418, 1418, 685: 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 695: 1418, 697: 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 750: 1418},
{2: 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 11: 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 54: 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 571: 1417, 574: 1417, 1417, 1417, 581: 1417, 1417, 1417, 1417, 1417, 1417, 1417, 589: 1417, 593: 1417, 595: 1417, 603: 1417, 618: 1417, 625: 1417, 1417, 651: 1417, 658: 1417, 666: 1417, 1417, 1417, 670: 1417, 674: 1417, 1417, 1417, 678: 1417, 1417, 1417, 1417, 1417, 1417, 685: 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 695: 1417, 697: 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 1417, 750: 1417},
// 1480
{2: 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 11: 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 54: 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 571: 1416, 574: 1416, 1416, 1416, 581: 1416, 1416, 1416, 1416, 1416, 1416, 1416, 589: 1416, 593: 1416, 595: 1416, 603: 1416, 618: 1416, 625: 1416, 1416, 651: 1416, 658: 1416, 666: 1416, 1416, 1416, 670: 1416, 674: 1416, 1416, 1416, 678: 1416, 1416, 1416, 1416, 1416, 1416, 685: 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 695: 1416, 697: 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 750: 1416},
{603: 4507, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4505},
{53: 4506, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
{1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 570: 1434, 1434, 1434, 1434, 1434, 576: 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 588: 1434, 590: 1434, 1434, 1434, 594: 1434, 596: 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 619: 1434, 1434, 1434, 1434, 1434, 1434, 627: 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 647: 1434, 1434, 1434, 1434, 652: 1434, 1434, 1434, 1434, 1434, 1434, 659: 1434, 1434, 1434, 1434, 1434, 1434, 1434, 669: 1434, 671: 1434, 1434, 1434, 677: 1434, 696: 1434, 746: 1434},
// 1485
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4508},
{53: 4509, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
{1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 570: 1433, 1433, 1433, 1433, 1433, 576: 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 588: 1433, 590: 1433, 1433, 1433, 594: 1433, 596: 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 619: 1433, 1433, 1433, 1433, 1433, 1433, 627: 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 647: 1433, 1433, 1433, 1433, 652: 1433, 1433, 1433, 1433, 1433, 1433, 659: 1433, 1433, 1433, 1433, 1433, 1433, 1433, 669: 1433, 671: 1433, 1433, 1433, 677: 1433, 696: 1433, 746: 1433},
{1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 570: 1436, 1436, 1436, 1436, 1436, 576: 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 588: 1436, 590: 1436, 1436, 1436, 594: 1436, 596: 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 619: 1436, 1436, 1436, 1436, 1436, 1436, 627: 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 647: 1436, 1436, 1436, 1436, 652: 1436, 1436, 1436, 1436, 1436, 1436, 659: 1436, 1436, 1436, 1436, 1436, 1436, 1436, 669: 1436, 671: 1436, 1436, 1436, 677: 1436, 696: 1436, 746: 1436},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4512},
// 1490
{53: 4513, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
{1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 570: 1435, 1435, 1435, 1435, 1435, 576: 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 588: 1435, 590: 1435, 1435, 1435, 594: 1435, 596: 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 619: 1435, 1435, 1435, 1435, 1435, 1435, 627: 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 647: 1435, 1435, 1435, 1435, 652: 1435, 1435, 1435, 1435, 1435, 1435, 659: 1435, 1435, 1435, 1435, 1435, 1435, 1435, 669: 1435, 671: 1435, 1435, 1435, 677: 1435, 696: 1435, 746: 1435},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4515},
{10: 4516, 603: 4517, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4523},
// 1495
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4518},
{53: 4519, 599: 4520, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
{1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 570: 1441, 1441, 1441, 1441, 1441, 576: 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 588: 1441, 590: 1441, 1441, 1441, 594: 1441, 596: 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 619: 1441, 1441, 1441, 1441, 1441, 1441, 627: 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 647: 1441, 1441, 1441, 1441, 652: 1441, 1441, 1441, 1441, 1441, 1441, 659: 1441, 1441, 1441, 1441, 1441, 1441, 1441, 669: 1441, 671: 1441, 1441, 1441, 677: 1441, 696: 1441, 746: 1441},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4521},
{53: 4522, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
// 1500
{1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 570: 1439, 1439, 1439, 1439, 1439, 576: 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 588: 1439, 590: 1439, 1439, 1439, 594: 1439, 596: 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 619: 1439, 1439, 1439, 1439, 1439, 1439, 627: 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 647: 1439, 1439, 1439, 1439, 652: 1439, 1439, 1439, 1439, 1439, 1439, 659: 1439, 1439, 1439, 1439, 1439, 1439, 1439, 669: 1439, 671: 1439, 1439, 1439, 677: 1439, 696: 1439, 746: 1439},
{10: 4525, 53: 4524, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
{1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 570: 1442, 1442, 1442, 1442, 1442, 576: 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 588: 1442, 590: 1442, 1442, 1442, 594: 1442, 596: 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 619: 1442, 1442, 1442, 1442, 1442, 1442, 627: 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 647: 1442, 1442, 1442, 1442, 652: 1442, 1442, 1442, 1442, 1442, 1442, 659: 1442, 1442, 1442, 1442, 1442, 1442, 1442, 669: 1442, 671: 1442, 1442, 1442, 677: 1442, 696: 1442, 746: 1442},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4526},
{53: 4527, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
// 1505
{1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 570: 1440, 1440, 1440, 1440, 1440, 576: 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 588: 1440, 590: 1440, 1440, 1440, 594: 1440, 596: 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 619: 1440, 1440, 1440, 1440, 1440, 1440, 627: 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 647: 1440, 1440, 1440, 1440, 652: 1440, 1440, 1440, 1440, 1440, 1440, 659: 1440, 1440, 1440, 1440, 1440, 1440, 1440, 669: 1440, 671: 1440, 1440, 1440, 677: 1440, 696: 1440, 746: 1440},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3783, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 4529},
{583: 4002, 4003, 4008, 600: 4004, 645: 4530, 650: 4005, 659: 4006, 3999, 4009, 3998, 4007, 4000, 4001},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4531},
{53: 4532, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
// 1510
{1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 570: 1443, 1443, 1443, 1443, 1443, 576: 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 588: 1443, 590: 1443, 1443, 1443, 594: 1443, 596: 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 619: 1443, 1443, 1443, 1443, 1443, 1443, 627: 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 647: 1443, 1443, 1443, 1443, 652: 1443, 1443, 1443, 1443, 1443, 1443, 659: 1443, 1443, 1443, 1443, 1443, 1443, 1443, 669: 1443, 671: 1443, 1443, 1443, 677: 1443, 696: 1443, 746: 1443},
{129: 3987, 133: 3995, 154: 3983, 156: 3980, 3982, 3979, 3981, 3985, 3986, 3991, 3990, 3989, 3993, 3994, 3988, 3992, 3984, 633: 3977, 3974, 3976, 3975, 3971, 3973, 3972, 3969, 3970, 3968, 3978, 927: 3967, 941: 4534},
{603: 4535},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4536},
{53: 4537, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
// 1515
{1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 570: 1445, 1445, 1445, 1445, 1445, 576: 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 588: 1445, 590: 1445, 1445, 1445, 594: 1445, 596: 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 619: 1445, 1445, 1445, 1445, 1445, 1445, 627: 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 647: 1445, 1445, 1445, 1445, 652: 1445, 1445, 1445, 1445, 1445, 1445, 659: 1445, 1445, 1445, 1445, 1445, 1445, 1445, 669: 1445, 671: 1445, 1445, 1445, 677: 1445, 696: 1445, 746: 1445},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4539},
{10: 4540, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
{680: 4541},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4542},
// 1520
{129: 3987, 133: 3995, 154: 3983, 156: 3980, 3982, 3979, 3981, 3985, 3986, 3991, 3990, 3989, 3993, 3994, 3988, 3992, 3984, 606: 3965, 3963, 3964, 3962, 3960, 633: 3977, 3974, 3976, 3975, 3971, 3973, 3972, 3969, 3970, 3968, 3978, 841: 3961, 3959, 927: 3967, 941: 4543},
{53: 4544},
{1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 570: 1446, 1446, 1446, 1446, 1446, 576: 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 588: 1446, 590: 1446, 1446, 1446, 594: 1446, 596: 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 619: 1446, 1446, 1446, 1446, 1446, 1446, 627: 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 647: 1446, 1446, 1446, 1446, 652: 1446, 1446, 1446, 1446, 1446, 1446, 659: 1446, 1446, 1446, 1446, 1446, 1446, 1446, 669: 1446, 671: 1446, 1446, 1446, 677: 1446, 696: 1446, 746: 1446},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4546},
{10: 4547, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
// 1525
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 4549, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4548},
{53: 4553, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 1498, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4550},
{129: 3987, 133: 3995, 154: 3983, 156: 3980, 3982, 3979, 3981, 3985, 3986, 3991, 3990, 3989, 3993, 3994, 3988, 3992, 3984, 606: 3965, 3963, 3964, 3962, 3960, 633: 3977, 3974, 3976, 3975, 3971, 3973, 3972, 3969, 3970, 3968, 3978, 841: 3961, 3959, 927: 3967, 941: 4551},
{53: 4552, 583: 3996},
// 1530
{1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 570: 1447, 1447, 1447, 1447, 1447, 576: 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 588: 1447, 590: 1447, 1447, 1447, 594: 1447, 596: 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 619: 1447, 1447, 1447, 1447, 1447, 1447, 627: 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 647: 1447, 1447, 1447, 1447, 652: 1447, 1447, 1447, 1447, 1447, 1447, 659: 1447, 1447, 1447, 1447, 1447, 1447, 1447, 669: 1447, 671: 1447, 1447, 1447, 677: 1447, 696: 1447, 746: 1447},
{1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 570: 1448, 1448, 1448, 1448, 1448, 576: 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 588: 1448, 590: 1448, 1448, 1448, 594: 1448, 596: 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 619: 1448, 1448, 1448, 1448, 1448, 1448, 627: 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 647: 1448, 1448, 1448, 1448, 652: 1448, 1448, 1448, 1448, 1448, 1448, 659: 1448, 1448, 1448, 1448, 1448, 1448, 1448, 669: 1448, 671: 1448, 1448, 1448, 677: 1448, 696: 1448, 746: 1448},
{53: 2303, 595: 4556, 1231: 4555, 4557},
{53: 2302},
{53: 2301},
// 1535
{53: 4558},
{1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 570: 1449, 1449, 1449, 1449, 1449, 576: 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 588: 1449, 590: 1449, 1449, 1449, 594: 1449, 596: 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 619: 1449, 1449, 1449, 1449, 1449, 1449, 627: 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 647: 1449, 1449, 1449, 1449, 652: 1449, 1449, 1449, 1449, 1449, 1449, 659: 1449, 1449, 1449, 1449, 1449, 1449, 1449, 669: 1449, 671: 1449, 1449, 1449, 677: 1449, 696: 1449, 746: 1449},
{53: 2303, 595: 4556, 1231: 4555, 4560},
{53: 4561},
{1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 570: 1450, 1450, 1450, 1450, 1450, 576: 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 588: 1450, 590: 1450, 1450, 1450, 594: 1450, 596: 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 619: 1450, 1450, 1450, 1450, 1450, 1450, 627: 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, 647: 1450, 1450, 1450, 1450, 652: 1450, 1450, 1450, 1450, 1450, 1450, 659: 1450, 1450, 1450, 1450, 1450, 1450, 1450, 669: 1450, 671: 1450, 1450, 1450, 677: 1450, 696: 1450, 746: 1450},
// 1540
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4563},
{10: 4564, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4565},
{53: 4566, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
{1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 570: 1452, 1452, 1452, 1452, 1452, 576: 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 588: 1452, 590: 1452, 1452, 1452, 594: 1452, 596: 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 619: 1452, 1452, 1452, 1452, 1452, 1452, 627: 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 647: 1452, 1452, 1452, 1452, 652: 1452, 1452, 1452, 1452, 1452, 1452, 659: 1452, 1452, 1452, 1452, 1452, 1452, 1452, 669: 1452, 671: 1452, 1452, 1452, 677: 1452, 696: 1452, 746: 1452},
// 1545
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 2305, 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4062, 894: 4568, 958: 4569},
{10: 4213, 53: 2304},
{53: 4570},
{1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 570: 1453, 1453, 1453, 1453, 1453, 576: 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 588: 1453, 590: 1453, 1453, 1453, 594: 1453, 596: 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 619: 1453, 1453, 1453, 1453, 1453, 1453, 627: 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 647: 1453, 1453, 1453, 1453, 652: 1453, 1453, 1453, 1453, 1453, 1453, 659: 1453, 1453, 1453, 1453, 1453, 1453, 1453, 669: 1453, 671: 1453, 1453, 1453, 677: 1453, 696: 1453, 746: 1453},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4062, 894: 4572},
// 1550
{10: 4213, 53: 4573, 579: 4574},
{1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 570: 1458, 1458, 1458, 1458, 1458, 576: 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 588: 1458, 590: 1458, 1458, 1458, 594: 1458, 596: 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 619: 1458, 1458, 1458, 1458, 1458, 1458, 627: 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 647: 1458, 1458, 1458, 1458, 652: 1458, 1458, 1458, 1458, 1458, 1458, 659: 1458, 1458, 1458, 1458, 1458, 1458, 1458, 669: 1458, 671: 1458, 1458, 1458, 677: 1458, 696: 1458, 746: 1458},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 571: 3956, 625: 4577, 811: 3957, 3217, 3218, 3216, 845: 4576, 946: 4575},
{53: 4578},
{1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 147: 1023, 175: 1023, 569: 1023, 1023, 572: 1023, 1023, 1023, 1023, 1023, 1023, 1023, 580: 1023, 586: 1023, 1023, 1023, 1023, 593: 1023, 597: 1023, 605: 1023, 625: 1023, 646: 1023, 684: 1023, 694: 1023, 741: 1023, 1023, 1023, 1023, 1023, 747: 1023, 1023, 1023, 756: 1023, 763: 1023},
// 1555
{1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 147: 1022, 175: 1022, 569: 1022, 1022, 572: 1022, 1022, 1022, 1022, 1022, 1022, 1022, 580: 1022, 586: 1022, 1022, 1022, 1022, 593: 1022, 597: 1022, 605: 1022, 625: 1022, 646: 1022, 684: 1022, 694: 1022, 741: 1022, 1022, 1022, 1022, 1022, 747: 1022, 1022, 1022, 756: 1022, 763: 1022},
{1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 570: 1457, 1457, 1457, 1457, 1457, 576: 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 588: 1457, 590: 1457, 1457, 1457, 594: 1457, 596: 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 619: 1457, 1457, 1457, 1457, 1457, 1457, 627: 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 647: 1457, 1457, 1457, 1457, 652: 1457, 1457, 1457, 1457, 1457, 1457, 659: 1457, 1457, 1457, 1457, 1457, 1457, 1457, 669: 1457, 671: 1457, 1457, 1457, 677: 1457, 696: 1457, 746: 1457},
{1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 570: 1459, 1459, 1459, 1459, 1459, 576: 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 588: 1459, 590: 1459, 1459, 1459, 594: 1459, 596: 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 619: 1459, 1459, 1459, 1459, 1459, 1459, 627: 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 647: 1459, 1459, 1459, 1459, 652: 1459, 1459, 1459, 1459, 1459, 1459, 659: 1459, 1459, 1459, 1459, 1459, 1459, 1459, 669: 1459, 671: 1459, 1459, 1459, 677: 1459, 696: 1459, 746: 1459},
{53: 4581, 595: 4582},
{1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 570: 1380, 1380, 1380, 1380, 1380, 576: 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 588: 1380, 590: 1380, 1380, 1380, 594: 1380, 596: 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 619: 1380, 1380, 1380, 1380, 1380, 1380, 627: 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 647: 1380, 1380, 1380, 1380, 652: 1380, 1380, 1380, 1380, 1380, 1380, 659: 1380, 1380, 1380, 1380, 1380, 1380, 1380, 669: 1380, 671: 1380, 1380, 1380, 677: 1380, 696: 1380, 746: 1380},
// 1560
{53: 4583},
{1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 570: 1379, 1379, 1379, 1379, 1379, 576: 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 588: 1379, 590: 1379, 1379, 1379, 594: 1379, 596: 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 619: 1379, 1379, 1379, 1379, 1379, 1379, 627: 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 647: 1379, 1379, 1379, 1379, 652: 1379, 1379, 1379, 1379, 1379, 1379, 659: 1379, 1379, 1379, 1379, 1379, 1379, 1379, 669: 1379, 671: 1379, 1379, 1379, 677: 1379, 696: 1379, 746: 1379},
{53: 4585},
{1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 570: 1460, 1460, 1460, 1460, 1460, 576: 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 588: 1460, 590: 1460, 1460, 1460, 594: 1460, 596: 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 619: 1460, 1460, 1460, 1460, 1460, 1460, 627: 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 647: 1460, 1460, 1460, 1460, 652: 1460, 1460, 1460, 1460, 1460, 1460, 659: 1460, 1460, 1460, 1460, 1460, 1460, 1460, 669: 1460, 671: 1460, 1460, 1460, 677: 1460, 696: 1460, 746: 1460},
{53: 4588},
// 1565
{1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 570: 1461, 1461, 1461, 1461, 1461, 576: 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 588: 1461, 590: 1461, 1461, 1461, 594: 1461, 596: 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 619: 1461, 1461, 1461, 1461, 1461, 1461, 627: 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 647: 1461, 1461, 1461, 1461, 652: 1461, 1461, 1461, 1461, 1461, 1461, 659: 1461, 1461, 1461, 1461, 1461, 1461, 1461, 669: 1461, 671: 1461, 1461, 1461, 677: 1461, 696: 1461, 746: 1461},
{1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 570: 1475, 1475, 1475, 1475, 1475, 576: 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 588: 1475, 590: 1475, 1475, 1475, 594: 1475, 596: 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 619: 1475, 1475, 1475, 1475, 1475, 1475, 627: 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 647: 1475, 1475, 1475, 1475, 652: 1475, 1475, 1475, 1475, 1475, 1475, 659: 1475, 1475, 1475, 1475, 1475, 1475, 1475, 669: 1475, 671: 1475, 1475, 1475, 677: 1475, 696: 1475, 746: 1475, 752: 1475, 757: 1475, 764: 1475},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 2305, 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4062, 894: 4568, 958: 4590},
{53: 4591},
{1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 570: 1462, 1462, 1462, 1462, 1462, 576: 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 588: 1462, 590: 1462, 1462, 1462, 594: 1462, 596: 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 619: 1462, 1462, 1462, 1462, 1462, 1462, 627: 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 647: 1462, 1462, 1462, 1462, 652: 1462, 1462, 1462, 1462, 1462, 1462, 659: 1462, 1462, 1462, 1462, 1462, 1462, 1462, 669: 1462, 671: 1462, 1462, 1462, 677: 1462, 696: 1462, 746: 1462},
// 1570
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 2305, 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4062, 894: 4568, 958: 4593},
{53: 4594},
{1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 570: 1463, 1463, 1463, 1463, 1463, 576: 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 588: 1463, 590: 1463, 1463, 1463, 594: 1463, 596: 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 619: 1463, 1463, 1463, 1463, 1463, 1463, 627: 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 647: 1463, 1463, 1463, 1463, 652: 1463, 1463, 1463, 1463, 1463, 1463, 659: 1463, 1463, 1463, 1463, 1463, 1463, 1463, 669: 1463, 671: 1463, 1463, 1463, 677: 1463, 696: 1463, 746: 1463},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4596},
{10: 4597, 579: 4598, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
// 1575
{63: 4609, 129: 4605, 179: 4611, 181: 4606, 4604, 185: 4608, 4615, 593: 4617, 625: 4602, 748: 4616, 766: 4612, 768: 4613, 770: 4607, 772: 4614, 855: 4610, 976: 4603, 1081: 4601},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 571: 3956, 625: 4577, 811: 3957, 3217, 3218, 3216, 845: 4576, 946: 4599},
{53: 4600},
{1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 570: 1524, 1524, 1524, 1524, 1524, 576: 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 588: 1524, 590: 1524, 1524, 1524, 594: 1524, 596: 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 619: 1524, 1524, 1524, 1524, 1524, 1524, 627: 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 647: 1524, 1524, 1524, 1524, 652: 1524, 1524, 1524, 1524, 1524, 1524, 659: 1524, 1524, 1524, 1524, 1524, 1524, 1524, 669: 1524, 671: 1524, 1524, 1524, 677: 1524, 696: 1524, 746: 1524},
{53: 4660},
// 1580
{53: 512, 569: 4625, 756: 512, 881: 4626, 925: 4659},
{17: 512, 53: 512, 569: 4625, 593: 512, 625: 512, 748: 512, 756: 512, 881: 4626, 925: 4644},
{53: 1340, 756: 1340},
{53: 1339, 756: 1339},
{53: 512, 569: 4625, 756: 512, 881: 4626, 925: 4643},
// 1585
{53: 505, 569: 4630, 756: 505, 881: 4631, 1052: 4642, 1061: 4632},
{53: 512, 569: 4625, 756: 512, 881: 4626, 925: 4641},
{53: 579, 756: 579, 777: 4638, 4639, 1271: 4640},
{53: 579, 756: 579, 777: 4638, 4639, 1271: 4637},
{53: 1333, 756: 1333},
// 1590
{53: 1332, 756: 1332},
{53: 505, 569: 4630, 756: 505, 881: 4631, 1052: 4629, 1061: 4632},
{53: 1330, 756: 1330},
{53: 499, 569: 499, 648: 4619, 756: 499, 1276: 4618},
{17: 550, 53: 550, 569: 550, 593: 550, 625: 550, 748: 550, 756: 550},
// 1595
{17: 549, 53: 549, 569: 549, 593: 549, 625: 549, 748: 549, 756: 549},
{53: 512, 569: 4625, 756: 512, 881: 4626, 925: 4624},
{766: 4621, 768: 4620},
{649: 4623},
{649: 4622},
// 1600
{497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 53: 497, 569: 497, 497, 573: 497, 497, 497, 497, 497, 497, 586: 497, 684: 497, 741: 497, 497, 497, 497, 497, 747: 497, 756: 497},
{498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 53: 498, 569: 498, 498, 573: 498, 498, 498, 498, 498, 498, 586: 498, 684: 498, 741: 498, 498, 498, 498, 498, 747: 498, 756: 498},
{53: 1329, 756: 1329},
{595: 3209, 839: 4086, 854: 4627},
{511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 17: 511, 53: 511, 63: 511, 170: 511, 511, 174: 511, 570: 511, 573: 511, 511, 511, 511, 511, 511, 586: 511, 593: 511, 617: 511, 625: 511, 644: 511, 684: 511, 741: 511, 511, 511, 511, 511, 747: 511, 511, 756: 511, 855: 511, 859: 511},
// 1605
{53: 4628},
{513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 17: 513, 53: 513, 63: 513, 170: 513, 513, 174: 513, 570: 513, 573: 513, 513, 513, 513, 513, 513, 586: 513, 593: 513, 617: 513, 625: 513, 644: 513, 684: 513, 741: 513, 513, 513, 513, 513, 747: 513, 513, 756: 513, 855: 513, 859: 513},
{53: 1331, 756: 1331},
{595: 3209, 839: 4086, 854: 4633},
{504, 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, 53: 504, 63: 504, 570: 504, 573: 504, 504, 504, 504, 504, 504, 586: 504, 684: 504, 741: 504, 504, 504, 504, 504, 747: 504, 756: 504, 855: 504, 859: 504},
// 1610
{503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 53: 503, 63: 503, 570: 503, 573: 503, 503, 503, 503, 503, 503, 586: 503, 684: 503, 741: 503, 503, 503, 503, 503, 747: 503, 756: 503, 855: 503, 859: 503},
{10: 4634, 53: 4628},
{595: 3209, 839: 4086, 854: 4635},
{53: 4636},
{502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 53: 502, 63: 502, 570: 502, 573: 502, 502, 502, 502, 502, 502, 586: 502, 684: 502, 741: 502, 502, 502, 502, 502, 747: 502, 756: 502, 855: 502, 859: 502},
// 1615
{53: 1334, 756: 1334},
{53: 578, 756: 578},
{53: 577, 756: 577},
{53: 1335, 756: 1335},
{53: 1336, 756: 1336},
// 1620
{53: 1337, 756: 1337},
{53: 1338, 756: 1338},
{17: 4649, 53: 496, 593: 4650, 625: 4646, 748: 4648, 756: 496, 893: 4647, 936: 4645},
{53: 1341, 756: 1341},
{493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 17: 4649, 53: 493, 570: 493, 573: 493, 493, 493, 493, 493, 493, 586: 493, 593: 4650, 684: 493, 741: 493, 493, 493, 493, 493, 747: 493, 4648, 756: 493, 893: 4657, 1459: 4656},
// 1625
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 571: 3956, 625: 4577, 811: 3957, 3217, 3218, 3216, 845: 4576, 946: 4653},
{597: 4652},
{490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 11: 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 54: 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 571: 490, 575: 490, 591: 490, 594: 490, 619: 490, 625: 490},
{597: 4651},
{489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 11: 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 54: 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 571: 489, 575: 489, 591: 489, 594: 489, 619: 489, 625: 489},
// 1630
{491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 11: 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 54: 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 571: 491, 575: 491, 591: 491, 594: 491, 619: 491, 625: 491},
{501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 53: 501, 570: 501, 573: 501, 501, 501, 501, 501, 501, 586: 501, 625: 4654, 684: 501, 741: 501, 501, 501, 501, 501, 747: 501, 756: 501, 1458: 4655},
{500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 53: 500, 570: 500, 573: 500, 500, 500, 500, 500, 500, 586: 500, 684: 500, 741: 500, 500, 500, 500, 500, 747: 500, 756: 500},
{494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 53: 494, 570: 494, 573: 494, 494, 494, 494, 494, 494, 586: 494, 684: 494, 741: 494, 494, 494, 494, 494, 747: 494, 756: 494},
{495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 53: 495, 570: 495, 573: 495, 495, 495, 495, 495, 495, 586: 495, 684: 495, 741: 495, 495, 495, 495, 495, 747: 495, 756: 495},
// 1635
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 571: 3956, 625: 4577, 811: 3957, 3217, 3218, 3216, 845: 4576, 946: 4658},
{492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 53: 492, 570: 492, 573: 492, 492, 492, 492, 492, 492, 586: 492, 684: 492, 741: 492, 492, 492, 492, 492, 747: 492, 756: 492},
{53: 1342, 756: 1342},
{1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 570: 1525, 1525, 1525, 1525, 1525, 576: 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 588: 1525, 590: 1525, 1525, 1525, 594: 1525, 596: 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 619: 1525, 1525, 1525, 1525, 1525, 1525, 627: 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 647: 1525, 1525, 1525, 1525, 652: 1525, 1525, 1525, 1525, 1525, 1525, 659: 1525, 1525, 1525, 1525, 1525, 1525, 1525, 669: 1525, 671: 1525, 1525, 1525, 677: 1525, 696: 1525, 746: 1525},
{606: 3965, 3963, 3964, 3962, 3960, 628: 1348, 841: 3961, 3959},
// 1640
{628: 4665, 1358: 4664, 1567: 4663},
{117: 1344, 628: 4665, 4671, 1358: 4670, 1410: 4669},
{117: 1347, 628: 1347, 1347},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4666},
{606: 3965, 3963, 3964, 3962, 3960, 647: 4667, 841: 3961, 3959},
// 1645
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4668},
{117: 1345, 606: 3965, 3963, 3964, 3962, 3960, 628: 1345, 1345, 841: 3961, 3959},
{117: 4673},
{117: 1346, 628: 1346, 1346},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4672},
// 1650
{117: 1343, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
{1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 570: 1526, 1526, 1526, 1526, 1526, 576: 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 588: 1526, 590: 1526, 1526, 1526, 594: 1526, 596: 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 619: 1526, 1526, 1526, 1526, 1526, 1526, 627: 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 647: 1526, 1526, 1526, 1526, 652: 1526, 1526, 1526, 1526, 1526, 1526, 659: 1526, 1526, 1526, 1526, 1526, 1526, 1526, 669: 1526, 671: 1526, 1526, 1526, 677: 1526, 696: 1526, 746: 1526},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4675},
{577: 4676, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
{63: 4609, 129: 4605, 179: 4611, 181: 4606, 4604, 185: 4608, 4615, 593: 4617, 625: 4602, 748: 4616, 766: 4612, 768: 4613, 770: 4607, 772: 4614, 855: 4610, 976: 4603, 1081: 4677},
// 1655
{53: 1519, 756: 4679, 1376: 4678},
{53: 4680},
{53: 1518},
{1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 570: 1528, 1528, 1528, 1528, 1528, 576: 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 588: 1528, 590: 1528, 1528, 1528, 594: 1528, 596: 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 619: 1528, 1528, 1528, 1528, 1528, 1528, 627: 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 647: 1528, 1528, 1528, 1528, 652: 1528, 1528, 1528, 1528, 1528, 1528, 659: 1528, 1528, 1528, 1528, 1528, 1528, 1528, 669: 1528, 671: 1528, 1528, 1528, 677: 1528, 696: 1528, 746: 1528},
{1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 570: 1529, 1529, 1529, 1529, 1529, 576: 1529, 1529, 3950, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 588: 1529, 590: 1529, 1529, 1529, 594: 1529, 596: 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 619: 1529, 1529, 1529, 1529, 1529, 1529, 627: 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 647: 1529, 1529, 1529, 1529, 652: 1529, 1529, 1529, 1529, 1529, 1529, 659: 1529, 1529, 1529, 1529, 1529, 1529, 1529, 669: 1529, 671: 1529, 1529, 1529, 677: 1529, 696: 1529, 746: 1529},
// 1660
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4683},
{606: 3965, 3963, 3964, 3962, 3960, 624: 4684, 841: 3961, 3959},
{1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 570: 1530, 1530, 1530, 1530, 1530, 576: 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 588: 1530, 590: 1530, 1530, 1530, 594: 1530, 596: 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 619: 1530, 1530, 1530, 1530, 1530, 1530, 627: 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 647: 1530, 1530, 1530, 1530, 652: 1530, 1530, 1530, 1530, 1530, 1530, 659: 1530, 1530, 1530, 1530, 1530, 1530, 1530, 669: 1530, 671: 1530, 1530, 1530, 677: 1530, 696: 1530, 746: 1530},
{1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 570: 1531, 1531, 1531, 1531, 1531, 576: 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 588: 1531, 590: 1531, 1531, 1531, 594: 1531, 596: 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 619: 1531, 1531, 1531, 1531, 1531, 1531, 627: 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 647: 1531, 1531, 1531, 1531, 652: 1531, 1531, 1531, 1531, 1531, 1531, 659: 1531, 1531, 1531, 1531, 1531, 1531, 1531, 669: 1531, 671: 1531, 1531, 1531, 677: 1531, 696: 1531, 746: 1531},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4062, 894: 4687},
// 1665
{10: 4688},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4689},
{10: 2310, 53: 4690, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
{1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 570: 1532, 1532, 1532, 1532, 1532, 576: 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 588: 1532, 590: 1532, 1532, 1532, 594: 1532, 596: 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 619: 1532, 1532, 1532, 1532, 1532, 1532, 627: 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 647: 1532, 1532, 1532, 1532, 652: 1532, 1532, 1532, 1532, 1532, 1532, 659: 1532, 1532, 1532, 1532, 1532, 1532, 1532, 669: 1532, 671: 1532, 1532, 1532, 677: 1532, 696: 1532, 746: 1532},
{10: 2311, 53: 4696, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
// 1670
{10: 4693},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4694},
{10: 2310, 53: 4695, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
{1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 570: 1533, 1533, 1533, 1533, 1533, 576: 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 588: 1533, 590: 1533, 1533, 1533, 594: 1533, 596: 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 619: 1533, 1533, 1533, 1533, 1533, 1533, 627: 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 647: 1533, 1533, 1533, 1533, 652: 1533, 1533, 1533, 1533, 1533, 1533, 659: 1533, 1533, 1533, 1533, 1533, 1533, 1533, 669: 1533, 671: 1533, 1533, 1533, 677: 1533, 696: 1533, 746: 1533},
{1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 570: 1534, 1534, 1534, 1534, 1534, 576: 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 588: 1534, 590: 1534, 1534, 1534, 594: 1534, 596: 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 619: 1534, 1534, 1534, 1534, 1534, 1534, 627: 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 647: 1534, 1534, 1534, 1534, 652: 1534, 1534, 1534, 1534, 1534, 1534, 659: 1534, 1534, 1534, 1534, 1534, 1534, 1534, 669: 1534, 671: 1534, 1534, 1534, 677: 1534, 696: 1534, 746: 1534},
// 1675
{1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 570: 1536, 1536, 1536, 1536, 1536, 576: 1536, 1536, 3950, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 588: 1536, 590: 1536, 1536, 1536, 594: 1536, 596: 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 619: 1536, 1536, 1536, 1536, 1536, 1536, 627: 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 647: 1536, 1536, 1536, 1536, 652: 1536, 1536, 1536, 1536, 1536, 1536, 659: 1536, 1536, 1536, 1536, 1536, 1536, 1536, 669: 1536, 671: 1536, 1536, 1536, 677: 1536, 696: 1536, 746: 1536},
{1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 570: 1538, 1538, 1538, 1538, 1538, 576: 1538, 1538, 3950, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 588: 1538, 590: 1538, 1538, 1538, 594: 1538, 596: 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 619: 1538, 1538, 1538, 1538, 1538, 1538, 627: 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 647: 1538, 1538, 1538, 1538, 652: 1538, 1538, 1538, 1538, 1538, 1538, 659: 1538, 1538, 1538, 1538, 1538, 1538, 1538, 669: 1538, 671: 1538, 1538, 1538, 677: 1538, 696: 1538, 746: 1538},
{1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 570: 1539, 1539, 1539, 1539, 1539, 576: 1539, 1539, 3950, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 588: 1539, 590: 1539, 1539, 1539, 594: 1539, 596: 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 619: 1539, 1539, 1539, 1539, 1539, 1539, 627: 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 647: 1539, 1539, 1539, 1539, 652: 1539, 1539, 1539, 1539, 1539, 1539, 659: 1539, 1539, 1539, 1539, 1539, 1539, 1539, 669: 1539, 671: 1539, 1539, 1539, 677: 1539, 696: 1539, 746: 1539},
{1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 570: 1540, 1540, 1540, 1540, 1540, 576: 1540, 1540, 3950, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 588: 1540, 590: 1540, 1540, 1540, 594: 1540, 596: 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 619: 1540, 1540, 1540, 1540, 1540, 1540, 627: 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 647: 1540, 1540, 1540, 1540, 652: 1540, 1540, 1540, 1540, 1540, 1540, 659: 1540, 1540, 1540, 1540, 1540, 1540, 1540, 669: 1540, 671: 1540, 1540, 1540, 677: 1540, 696: 1540, 746: 1540},
{1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 570: 1541, 1541, 1541, 1541, 1541, 576: 1541, 1541, 3950, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 588: 1541, 590: 1541, 1541, 1541, 594: 1541, 596: 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 619: 1541, 1541, 1541, 1541, 1541, 1541, 627: 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 647: 1541, 1541, 1541, 1541, 652: 1541, 1541, 1541, 1541, 1541, 1541, 659: 1541, 1541, 1541, 1541, 1541, 1541, 1541, 669: 1541, 671: 1541, 1541, 1541, 677: 1541, 696: 1541, 746: 1541},
// 1680
{571: 4705},
{571: 4704},
{1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 570: 1520, 1520, 1520, 1520, 1520, 576: 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 588: 1520, 590: 1520, 1520, 1520, 594: 1520, 596: 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 619: 1520, 1520, 1520, 1520, 1520, 1520, 627: 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 647: 1520, 1520, 1520, 1520, 652: 1520, 1520, 1520, 1520, 1520, 1520, 659: 1520, 1520, 1520, 1520, 1520, 1520, 1520, 669: 1520, 671: 1520, 1520, 1520, 677: 1520, 696: 1520, 746: 1520},
{1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 570: 1521, 1521, 1521, 1521, 1521, 576: 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 588: 1521, 590: 1521, 1521, 1521, 594: 1521, 596: 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 619: 1521, 1521, 1521, 1521, 1521, 1521, 627: 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 647: 1521, 1521, 1521, 1521, 652: 1521, 1521, 1521, 1521, 1521, 1521, 659: 1521, 1521, 1521, 1521, 1521, 1521, 1521, 669: 1521, 671: 1521, 1521, 1521, 677: 1521, 696: 1521, 746: 1521},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 4707, 3217, 3218, 3216},
// 1685
{1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 4708, 1553, 1553, 1553, 1553, 1553, 576: 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 588: 1553, 590: 1553, 1553, 1553, 594: 1553, 596: 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 619: 1553, 1553, 1553, 1553, 1553, 1553, 627: 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 647: 1553, 1553, 1553, 1553, 652: 1553, 1553, 1553, 1553, 1553, 1553, 659: 1553, 1553, 1553, 1553, 1553, 1553, 1553, 669: 1553, 671: 1553, 1553, 1553, 677: 1553, 696: 1553, 746: 1553, 754: 4126, 758: 1553, 1553},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 2305, 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4062, 894: 4568, 958: 4709},
{53: 4710},
{1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 570: 1382, 1382, 1382, 1382, 1382, 576: 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 588: 1382, 590: 1382, 1382, 1382, 594: 1382, 596: 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 619: 1382, 1382, 1382, 1382, 1382, 1382, 627: 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 647: 1382, 1382, 1382, 1382, 652: 1382, 1382, 1382, 1382, 1382, 1382, 659: 1382, 1382, 1382, 1382, 1382, 1382, 1382, 669: 1382, 671: 1382, 1382, 1382, 677: 1382, 696: 1382, 746: 1382},
{1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 570: 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 588: 1592, 590: 1592, 1592, 1592, 594: 1592, 596: 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 619: 1592, 1592, 1592, 1592, 1592, 1592, 627: 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 647: 1592, 1592, 1592, 1592, 652: 1592, 1592, 1592, 1592, 1592, 1592, 659: 1592, 1592, 1592, 1592, 1592, 1592, 1592, 669: 1592, 671: 1592, 1592, 1592, 677: 1592, 684: 1592, 696: 1592, 741: 1592, 1592, 1592, 1592, 1592, 1592, 1592},
// 1690
{1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 570: 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 588: 1589, 590: 1589, 1589, 1589, 594: 1589, 596: 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 619: 1589, 1589, 1589, 1589, 1589, 1589, 627: 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 647: 1589, 1589, 1589, 1589, 652: 1589, 1589, 1589, 1589, 1589, 1589, 659: 1589, 1589, 1589, 1589, 1589, 1589, 1589, 669: 1589, 671: 1589, 1589, 1589, 677: 1589, 684: 1589, 696: 1589, 741: 1589, 1589, 1589, 1589, 1589, 1589, 1589},
{1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 570: 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 588: 1588, 590: 1588, 1588, 1588, 594: 1588, 596: 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 619: 1588, 1588, 1588, 1588, 1588, 1588, 627: 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 647: 1588, 1588, 1588, 1588, 652: 1588, 1588, 1588, 1588, 1588, 1588, 659: 1588, 1588, 1588, 1588, 1588, 1588, 1588, 669: 1588, 671: 1588, 1588, 1588, 677: 1588, 684: 1588, 696: 1588, 741: 1588, 1588, 1588, 1588, 1588, 1588, 1588},
{1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 570: 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 588: 1586, 590: 1586, 1586, 1586, 594: 1586, 596: 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 619: 1586, 1586, 1586, 1586, 1586, 1586, 627: 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 647: 1586, 1586, 1586, 1586, 652: 1586, 1586, 1586, 1586, 1586, 1586, 659: 1586, 1586, 1586, 1586, 1586, 1586, 1586, 669: 1586, 671: 1586, 1586, 1586, 677: 1586, 684: 1586, 696: 1586, 741: 1586, 1586, 1586, 1586, 1586, 1586, 1586},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4716},
{577: 4717, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
// 1695
{63: 4609, 129: 4605, 179: 4611, 181: 4606, 4604, 185: 4608, 4615, 593: 4617, 625: 4602, 748: 4616, 766: 4612, 768: 4613, 770: 4607, 772: 4614, 855: 4610, 976: 4603, 1081: 4718},
{756: 4719},
{53: 4720},
{1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 570: 1527, 1527, 1527, 1527, 1527, 576: 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 588: 1527, 590: 1527, 1527, 1527, 594: 1527, 596: 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 619: 1527, 1527, 1527, 1527, 1527, 1527, 627: 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, 647: 1527, 1527, 1527, 1527, 652: 1527, 1527, 1527, 1527, 1527, 1527, 659: 1527, 1527, 1527, 1527, 1527, 1527, 1527, 669: 1527, 671: 1527, 1527, 1527, 677: 1527, 696: 1527, 746: 1527},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 755: 4723, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4722},
// 1700
{53: 4727, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4724},
{53: 4725, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
{1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 570: 1226, 1226, 1226, 1226, 1226, 576: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 588: 1226, 590: 1226, 1226, 1226, 594: 1226, 596: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 619: 1226, 1226, 1226, 1226, 1226, 1226, 627: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 647: 1226, 1226, 1226, 1226, 652: 1226, 1226, 1226, 1226, 1226, 1226, 659: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 669: 1226, 671: 1226, 1226, 1226, 677: 1226, 696: 1226, 746: 1226, 860: 4287, 873: 4405, 884: 4726},
{1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 570: 1390, 1390, 1390, 1390, 1390, 576: 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 588: 1390, 590: 1390, 1390, 1390, 594: 1390, 596: 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 619: 1390, 1390, 1390, 1390, 1390, 1390, 627: 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 647: 1390, 1390, 1390, 1390, 652: 1390, 1390, 1390, 1390, 1390, 1390, 659: 1390, 1390, 1390, 1390, 1390, 1390, 1390, 669: 1390, 671: 1390, 1390, 1390, 677: 1390, 696: 1390, 746: 1390},
// 1705
{1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 570: 1226, 1226, 1226, 1226, 1226, 576: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 588: 1226, 590: 1226, 1226, 1226, 594: 1226, 596: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 619: 1226, 1226, 1226, 1226, 1226, 1226, 627: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 647: 1226, 1226, 1226, 1226, 652: 1226, 1226, 1226, 1226, 1226, 1226, 659: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 669: 1226, 671: 1226, 1226, 1226, 677: 1226, 696: 1226, 746: 1226, 860: 4287, 873: 4405, 884: 4728},
{1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 570: 1391, 1391, 1391, 1391, 1391, 576: 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 588: 1391, 590: 1391, 1391, 1391, 594: 1391, 596: 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 619: 1391, 1391, 1391, 1391, 1391, 1391, 627: 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 647: 1391, 1391, 1391, 1391, 652: 1391, 1391, 1391, 1391, 1391, 1391, 659: 1391, 1391, 1391, 1391, 1391, 1391, 1391, 669: 1391, 671: 1391, 1391, 1391, 677: 1391, 696: 1391, 746: 1391},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 755: 4731, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4730},
{10: 4741, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4732},
// 1710
{10: 4733, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 755: 4735, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4734},
{53: 4739, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4736},
{53: 4737, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
// 1715
{1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 570: 1226, 1226, 1226, 1226, 1226, 576: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 588: 1226, 590: 1226, 1226, 1226, 594: 1226, 596: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 619: 1226, 1226, 1226, 1226, 1226, 1226, 627: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 647: 1226, 1226, 1226, 1226, 652: 1226, 1226, 1226, 1226, 1226, 1226, 659: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 669: 1226, 671: 1226, 1226, 1226, 677: 1226, 696: 1226, 746: 1226, 860: 4287, 873: 4405, 884: 4738},
{1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 570: 1386, 1386, 1386, 1386, 1386, 576: 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 588: 1386, 590: 1386, 1386, 1386, 594: 1386, 596: 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 619: 1386, 1386, 1386, 1386, 1386, 1386, 627: 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, 647: 1386, 1386, 1386, 1386, 652: 1386, 1386, 1386, 1386, 1386, 1386, 659: 1386, 1386, 1386, 1386, 1386, 1386, 1386, 669: 1386, 671: 1386, 1386, 1386, 677: 1386, 696: 1386, 746: 1386},
{1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 570: 1226, 1226, 1226, 1226, 1226, 576: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 588: 1226, 590: 1226, 1226, 1226, 594: 1226, 596: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 619: 1226, 1226, 1226, 1226, 1226, 1226, 627: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 647: 1226, 1226, 1226, 1226, 652: 1226, 1226, 1226, 1226, 1226, 1226, 659: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 669: 1226, 671: 1226, 1226, 1226, 677: 1226, 696: 1226, 746: 1226, 860: 4287, 873: 4405, 884: 4740},
{1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 570: 1388, 1388, 1388, 1388, 1388, 576: 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 588: 1388, 590: 1388, 1388, 1388, 594: 1388, 596: 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 619: 1388, 1388, 1388, 1388, 1388, 1388, 627: 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 647: 1388, 1388, 1388, 1388, 652: 1388, 1388, 1388, 1388, 1388, 1388, 659: 1388, 1388, 1388, 1388, 1388, 1388, 1388, 669: 1388, 671: 1388, 1388, 1388, 677: 1388, 696: 1388, 746: 1388},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 755: 4743, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4742},
// 1720
{53: 4747, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4744},
{53: 4745, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
{1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 570: 1226, 1226, 1226, 1226, 1226, 576: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 588: 1226, 590: 1226, 1226, 1226, 594: 1226, 596: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 619: 1226, 1226, 1226, 1226, 1226, 1226, 627: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 647: 1226, 1226, 1226, 1226, 652: 1226, 1226, 1226, 1226, 1226, 1226, 659: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 669: 1226, 671: 1226, 1226, 1226, 677: 1226, 696: 1226, 746: 1226, 860: 4287, 873: 4405, 884: 4746},
{1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 570: 1387, 1387, 1387, 1387, 1387, 576: 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 588: 1387, 590: 1387, 1387, 1387, 594: 1387, 596: 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 619: 1387, 1387, 1387, 1387, 1387, 1387, 627: 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 647: 1387, 1387, 1387, 1387, 652: 1387, 1387, 1387, 1387, 1387, 1387, 659: 1387, 1387, 1387, 1387, 1387, 1387, 1387, 669: 1387, 671: 1387, 1387, 1387, 677: 1387, 696: 1387, 746: 1387},
// 1725
{1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 570: 1226, 1226, 1226, 1226, 1226, 576: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 588: 1226, 590: 1226, 1226, 1226, 594: 1226, 596: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 619: 1226, 1226, 1226, 1226, 1226, 1226, 627: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 647: 1226, 1226, 1226, 1226, 652: 1226, 1226, 1226, 1226, 1226, 1226, 659: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 669: 1226, 671: 1226, 1226, 1226, 677: 1226, 696: 1226, 746: 1226, 860: 4287, 873: 4405, 884: 4748},
{1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 570: 1389, 1389, 1389, 1389, 1389, 576: 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 588: 1389, 590: 1389, 1389, 1389, 594: 1389, 596: 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 619: 1389, 1389, 1389, 1389, 1389, 1389, 627: 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 647: 1389, 1389, 1389, 1389, 652: 1389, 1389, 1389, 1389, 1389, 1389, 659: 1389, 1389, 1389, 1389, 1389, 1389, 1389, 669: 1389, 671: 1389, 1389, 1389, 677: 1389, 696: 1389, 746: 1389},
{129: 3987, 133: 3995, 154: 3983, 156: 3980, 3982, 3979, 3981, 3985, 3986, 3991, 3990, 3989, 3993, 3994, 3988, 3992, 3984, 927: 4750},
{10: 4751},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4752},
// 1730
{10: 4753, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4754},
{53: 4755, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
{1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 570: 1437, 1437, 1437, 1437, 1437, 576: 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 588: 1437, 590: 1437, 1437, 1437, 594: 1437, 596: 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 619: 1437, 1437, 1437, 1437, 1437, 1437, 627: 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 647: 1437, 1437, 1437, 1437, 652: 1437, 1437, 1437, 1437, 1437, 1437, 659: 1437, 1437, 1437, 1437, 1437, 1437, 1437, 669: 1437, 671: 1437, 1437, 1437, 677: 1437, 696: 1437, 746: 1437},
{129: 3987, 133: 3995, 154: 3983, 156: 3980, 3982, 3979, 3981, 3985, 3986, 3991, 3990, 3989, 3993, 3994, 3988, 3992, 3984, 927: 4757},
// 1735
{10: 4758},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4759},
{10: 4760, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4761},
{53: 4762, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
// 1740
{1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 570: 1438, 1438, 1438, 1438, 1438, 576: 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 588: 1438, 590: 1438, 1438, 1438, 594: 1438, 596: 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 619: 1438, 1438, 1438, 1438, 1438, 1438, 627: 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 647: 1438, 1438, 1438, 1438, 652: 1438, 1438, 1438, 1438, 1438, 1438, 659: 1438, 1438, 1438, 1438, 1438, 1438, 1438, 669: 1438, 671: 1438, 1438, 1438, 677: 1438, 696: 1438, 746: 1438},
{181: 4766, 4765, 185: 4767, 203: 4768, 1425: 4764},
{10: 4769},
{10: 1426},
{10: 1425},
// 1745
{10: 1424},
{10: 1423},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4770},
{53: 4771, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
{1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 570: 1444, 1444, 1444, 1444, 1444, 576: 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 588: 1444, 590: 1444, 1444, 1444, 594: 1444, 596: 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 619: 1444, 1444, 1444, 1444, 1444, 1444, 627: 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 647: 1444, 1444, 1444, 1444, 652: 1444, 1444, 1444, 1444, 1444, 1444, 659: 1444, 1444, 1444, 1444, 1444, 1444, 1444, 669: 1444, 671: 1444, 1444, 1444, 677: 1444, 696: 1444, 746: 1444},
// 1750
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 2305, 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4062, 894: 4568, 958: 4773},
{53: 4774},
{1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 570: 1427, 1427, 1427, 1427, 1427, 576: 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 588: 1427, 590: 1427, 1427, 1427, 594: 1427, 596: 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 619: 1427, 1427, 1427, 1427, 1427, 1427, 627: 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 647: 1427, 1427, 1427, 1427, 652: 1427, 1427, 1427, 1427, 1427, 1427, 659: 1427, 1427, 1427, 1427, 1427, 1427, 1427, 669: 1427, 671: 1427, 1427, 1427, 677: 1427, 696: 1427, 746: 1427},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 4776},
{10: 4777},
// 1755
{583: 4781, 4782, 595: 3209, 839: 4778, 865: 4780, 955: 4779},
{2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 16: 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 62: 2343, 97: 2343, 2343, 2343, 2343, 2343, 2343, 2343, 106: 2343, 108: 2343, 111: 2343, 2343, 115: 2343, 2343, 118: 2343, 2343, 2343, 2343, 2343, 154: 2343, 191: 2343, 2343, 2343, 2343, 572: 2343, 2343, 575: 2343, 578: 2343, 2343, 2343, 593: 2343, 2343, 596: 2343, 598: 2343, 601: 2343, 605: 2343, 748: 2343, 2343, 760: 2343},
{53: 4785},
{176, 176, 6: 176, 176, 176, 176, 16: 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 106: 176, 108: 176, 111: 176, 176, 115: 176, 176, 118: 176, 176, 176, 176, 176, 575: 176, 578: 176, 580: 176, 593: 176, 605: 176, 748: 176, 176, 760: 176},
{595: 3209, 839: 4778, 865: 4784},
// 1760
{595: 3209, 839: 4783},
{174, 174, 6: 174, 174, 174, 174, 16: 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 106: 174, 108: 174, 111: 174, 174, 115: 174, 174, 118: 174, 174, 174, 174, 174, 575: 174, 578: 174, 580: 174, 593: 174, 605: 174, 748: 174, 174, 760: 174},
{175, 175, 6: 175, 175, 175, 175, 16: 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 106: 175, 108: 175, 111: 175, 175, 115: 175, 175, 118: 175, 175, 175, 175, 175, 575: 175, 578: 175, 580: 175, 593: 175, 605: 175, 748: 175, 175, 760: 175},
{1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 570: 1414, 1414, 1414, 1414, 1414, 576: 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 588: 1414, 590: 1414, 1414, 1414, 594: 1414, 596: 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 619: 1414, 1414, 1414, 1414, 1414, 1414, 627: 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 647: 1414, 1414, 1414, 1414, 652: 1414, 1414, 1414, 1414, 1414, 1414, 659: 1414, 1414, 1414, 1414, 1414, 1414, 1414, 669: 1414, 671: 1414, 1414, 1414, 677: 1414, 696: 1414, 746: 1414},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 4787},
// 1765
{53: 4788},
{1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 570: 1415, 1415, 1415, 1415, 1415, 576: 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 588: 1415, 590: 1415, 1415, 1415, 594: 1415, 596: 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 619: 1415, 1415, 1415, 1415, 1415, 1415, 627: 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 647: 1415, 1415, 1415, 1415, 652: 1415, 1415, 1415, 1415, 1415, 1415, 659: 1415, 1415, 1415, 1415, 1415, 1415, 1415, 669: 1415, 671: 1415, 1415, 1415, 677: 1415, 696: 1415, 746: 1415},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4790},
{53: 4791, 577: 4792, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
{1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 570: 1432, 1432, 1432, 1432, 1432, 576: 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 588: 1432, 590: 1432, 1432, 1432, 594: 1432, 596: 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 619: 1432, 1432, 1432, 1432, 1432, 1432, 627: 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 647: 1432, 1432, 1432, 1432, 652: 1432, 1432, 1432, 1432, 1432, 1432, 659: 1432, 1432, 1432, 1432, 1432, 1432, 1432, 669: 1432, 671: 1432, 1432, 1432, 677: 1432, 696: 1432, 746: 1432},
// 1770
{593: 4617, 625: 4794, 748: 4616, 976: 4793},
{569: 4625, 881: 4797},
{569: 4625, 881: 4795},
{53: 4796},
{1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 570: 1430, 1430, 1430, 1430, 1430, 576: 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 588: 1430, 590: 1430, 1430, 1430, 594: 1430, 596: 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 619: 1430, 1430, 1430, 1430, 1430, 1430, 627: 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 647: 1430, 1430, 1430, 1430, 652: 1430, 1430, 1430, 1430, 1430, 1430, 659: 1430, 1430, 1430, 1430, 1430, 1430, 1430, 669: 1430, 671: 1430, 1430, 1430, 677: 1430, 696: 1430, 746: 1430},
// 1775
{53: 4798},
{1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 570: 1431, 1431, 1431, 1431, 1431, 576: 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 588: 1431, 590: 1431, 1431, 1431, 594: 1431, 596: 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 619: 1431, 1431, 1431, 1431, 1431, 1431, 627: 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 647: 1431, 1431, 1431, 1431, 652: 1431, 1431, 1431, 1431, 1431, 1431, 659: 1431, 1431, 1431, 1431, 1431, 1431, 1431, 669: 1431, 671: 1431, 1431, 1431, 677: 1431, 696: 1431, 746: 1431},
{1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 570: 1454, 1454, 1454, 1454, 1454, 576: 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 588: 1454, 590: 1454, 1454, 1454, 594: 1454, 596: 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 619: 1454, 1454, 1454, 1454, 1454, 1454, 627: 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 647: 1454, 1454, 1454, 1454, 652: 1454, 1454, 1454, 1454, 1454, 1454, 659: 1454, 1454, 1454, 1454, 1454, 1454, 1454, 669: 1454, 671: 1454, 1454, 1454, 677: 1454, 696: 1454, 746: 1454},
{1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 570: 1455, 1455, 1455, 1455, 1455, 576: 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 588: 1455, 590: 1455, 1455, 1455, 594: 1455, 596: 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 619: 1455, 1455, 1455, 1455, 1455, 1455, 627: 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 647: 1455, 1455, 1455, 1455, 652: 1455, 1455, 1455, 1455, 1455, 1455, 659: 1455, 1455, 1455, 1455, 1455, 1455, 1455, 669: 1455, 671: 1455, 1455, 1455, 677: 1455, 696: 1455, 746: 1455},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 2305, 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4062, 894: 4568, 958: 4802},
// 1780
{53: 4803},
{1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 570: 1451, 1451, 1451, 1451, 1451, 576: 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 588: 1451, 590: 1451, 1451, 1451, 594: 1451, 596: 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 619: 1451, 1451, 1451, 1451, 1451, 1451, 627: 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 647: 1451, 1451, 1451, 1451, 652: 1451, 1451, 1451, 1451, 1451, 1451, 659: 1451, 1451, 1451, 1451, 1451, 1451, 1451, 669: 1451, 671: 1451, 1451, 1451, 677: 1451, 696: 1451, 746: 1451},
{1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 570: 1456, 1456, 1456, 1456, 1456, 576: 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 588: 1456, 590: 1456, 1456, 1456, 594: 1456, 596: 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 619: 1456, 1456, 1456, 1456, 1456, 1456, 627: 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 647: 1456, 1456, 1456, 1456, 652: 1456, 1456, 1456, 1456, 1456, 1456, 659: 1456, 1456, 1456, 1456, 1456, 1456, 1456, 669: 1456, 671: 1456, 1456, 1456, 677: 1456, 696: 1456, 746: 1456},
{2: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 11: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 54: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 571: 1513, 574: 1513, 1513, 1513, 581: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 589: 1513, 593: 1513, 595: 1513, 618: 1513, 625: 1513, 1513, 651: 1513, 658: 1513, 666: 1513, 1513, 1513, 670: 1513, 674: 1513, 1513, 1513, 678: 1513, 1513, 1513, 1513, 1513, 1513, 685: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 695: 1513, 697: 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 750: 1513, 755: 4397, 869: 4395, 4396, 926: 4398, 930: 4399, 956: 4806, 4400},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4807},
// 1785
{53: 4808, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
{1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 570: 1226, 1226, 1226, 1226, 1226, 576: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 588: 1226, 590: 1226, 1226, 1226, 594: 1226, 596: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 619: 1226, 1226, 1226, 1226, 1226, 1226, 627: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 647: 1226, 1226, 1226, 1226, 652: 1226, 1226, 1226, 1226, 1226, 1226, 659: 1226, 1226, 1226, 1226, 1226, 1226, 1226, 669: 1226, 671: 1226, 1226, 1226, 677: 1226, 696: 1226, 746: 1226, 860: 4287, 873: 4405, 884: 4809},
{1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 570: 1412, 1412, 1412, 1412, 1412, 576: 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 588: 1412, 590: 1412, 1412, 1412, 594: 1412, 596: 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 619: 1412, 1412, 1412, 1412, 1412, 1412, 627: 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 647: 1412, 1412, 1412, 1412, 652: 1412, 1412, 1412, 1412, 1412, 1412, 659: 1412, 1412, 1412, 1412, 1412, 1412, 1412, 669: 1412, 671: 1412, 1412, 1412, 677: 1412, 696: 1412, 746: 1412},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 2305, 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4062, 894: 4568, 958: 4811},
{53: 4812},
// 1790
{1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 570: 1383, 1383, 1383, 1383, 1383, 576: 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 588: 1383, 590: 1383, 1383, 1383, 594: 1383, 596: 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 619: 1383, 1383, 1383, 1383, 1383, 1383, 627: 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 647: 1383, 1383, 1383, 1383, 652: 1383, 1383, 1383, 1383, 1383, 1383, 659: 1383, 1383, 1383, 1383, 1383, 1383, 1383, 669: 1383, 671: 1383, 1383, 1383, 677: 1383, 696: 1383, 746: 1383},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 4814},
{53: 4815},
{2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 570: 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 588: 2655, 590: 2655, 2655, 2655, 594: 2655, 596: 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 619: 2655, 2655, 2655, 2655, 2655, 2655, 627: 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 647: 2655, 2655, 2655, 2655, 652: 2655, 2655, 2655, 2655, 2655, 2655, 659: 2655, 2655, 2655, 2655, 2655, 2655, 2655, 669: 2655, 671: 2655, 2655, 2655, 677: 2655, 684: 2655, 696: 2655, 741: 2655, 2655, 2655, 2655, 2655, 2655, 2655},
{599: 4817},
// 1795
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 4818},
{2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 570: 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 588: 2656, 590: 2656, 2656, 2656, 594: 2656, 596: 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 619: 2656, 2656, 2656, 2656, 2656, 2656, 627: 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 647: 2656, 2656, 2656, 2656, 652: 2656, 2656, 2656, 2656, 2656, 2656, 659: 2656, 2656, 2656, 2656, 2656, 2656, 2656, 669: 2656, 671: 2656, 2656, 2656, 677: 2656, 684: 2656, 696: 2656, 741: 2656, 2656, 2656, 2656, 2656, 2656, 2656},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3783, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3874, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 4827, 3855, 3937, 3854, 3851},
{130: 4823, 286: 4821, 298: 4822, 1310: 4824},
{10: 3004, 53: 3004, 110: 3004, 134: 3004, 146: 3004, 148: 3004, 150: 3004, 3004, 752: 3004},
// 1800
{10: 3003, 53: 3003, 110: 3003, 134: 3003, 146: 3003, 148: 3003, 150: 3003, 3003, 752: 3003},
{10: 3002, 53: 3002, 110: 3002, 134: 3002, 146: 3002, 148: 3002, 150: 3002, 3002, 752: 3002},
{752: 4825},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3783, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3874, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 4826, 3855, 3937, 3854, 3851},
{4, 4, 10: 4, 54: 4, 110: 4, 130: 4, 578: 3950, 696: 4, 746: 3951},
// 1805
{6, 6, 10: 6, 54: 6, 110: 6, 130: 6, 578: 3950, 696: 6, 746: 3951},
{2: 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 11: 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 54: 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 571: 2452, 574: 2452, 2452, 2452, 581: 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 593: 2452, 595: 2452, 600: 2452, 618: 2452, 625: 2452, 2452, 651: 2452, 658: 2452, 666: 2452, 2452, 2452, 670: 2452, 674: 2452, 2452, 2452, 678: 2452, 2452, 2452, 2452, 2452, 2452, 685: 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 695: 2452, 697: 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, 750: 2452, 984: 2452},
{253: 4831, 256: 4830, 272: 4833, 984: 4832, 1309: 4834},
{3001, 3001, 10: 3001, 53: 3001, 3001, 110: 3001, 130: 3001, 146: 3001, 148: 3001, 150: 3001, 3001, 696: 3001},
{3000, 3000, 10: 3000, 53: 3000, 3000, 110: 3000, 130: 3000, 146: 3000, 148: 3000, 150: 3000, 3000, 696: 3000},
// 1810
{2999, 2999, 10: 2999, 53: 2999, 2999, 110: 2999, 130: 2999, 146: 2999, 148: 2999, 150: 2999, 2999, 696: 2999},
{569: 4835},
{8, 8, 10: 8, 54: 8, 110: 8, 130: 8, 696: 8},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 575: 3214, 811: 3213, 3217, 3218, 3216, 962: 4836},
{53: 4837},
// 1815
{2998, 2998, 10: 2998, 53: 2998, 2998, 110: 2998, 130: 2998, 146: 2998, 148: 2998, 150: 2998, 2998, 696: 2998},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 575: 3214, 668: 3783, 811: 3213, 3217, 3218, 3216, 816: 4840, 962: 4839},
{10, 10, 10: 10, 54: 10, 110: 10, 130: 10, 696: 10},
{9, 9, 10: 9, 54: 9, 110: 9, 130: 9, 696: 9},
{12, 12, 10: 12, 54: 12, 110: 12, 130: 12, 696: 12},
// 1820
{54: 3788, 110: 3789, 130: 3792, 696: 3791, 1121: 4843, 3790},
{11, 11, 10: 11, 54: 11, 110: 11, 130: 11, 696: 11},
{29, 29, 134: 4851, 199: 4850, 201: 4849, 396: 4852, 1091: 4848, 1386: 4845, 4847, 1409: 4846},
{30, 30},
{28, 28, 10: 4868, 134: 4851, 199: 4850, 201: 4849, 1091: 4867},
// 1825
{27, 27},
{26, 26, 10: 26, 134: 26, 199: 26, 201: 26},
{2: 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 11: 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 54: 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 571: 2453, 574: 2453, 2453, 2453, 581: 2453, 2453, 2453, 2453, 2453, 2453, 2453, 589: 2453, 591: 4828, 593: 2453, 595: 2453, 618: 2453, 625: 2453, 2453, 651: 2453, 658: 2453, 666: 2453, 2453, 2453, 670: 2453, 674: 2453, 2453, 2453, 678: 2453, 2453, 2453, 2453, 2453, 2453, 685: 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 695: 2453, 697: 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 750: 2453, 840: 4865},
{2: 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 11: 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 54: 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 571: 2453, 574: 2453, 2453, 2453, 581: 2453, 2453, 2453, 2453, 2453, 2453, 2453, 589: 2453, 591: 4828, 593: 2453, 595: 2453, 618: 2453, 625: 2453, 2453, 651: 2453, 658: 2453, 666: 2453, 2453, 2453, 670: 2453, 674: 2453, 2453, 2453, 678: 2453, 2453, 2453, 2453, 2453, 2453, 685: 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 695: 2453, 697: 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 750: 2453, 840: 4863},
{571: 2453, 591: 4828, 680: 2453, 840: 4858},
// 1830
{441: 4855, 4854, 4856, 480: 4853, 4857},
{19, 19},
{18, 18},
{17, 17},
{16, 16},
// 1835
{15, 15},
{571: 4859, 680: 4860},
{21, 21, 10: 21, 134: 21, 199: 21, 201: 21},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4861},
{129: 3987, 133: 3995, 154: 3983, 156: 3980, 3982, 3979, 3981, 3985, 3986, 3991, 3990, 3989, 3993, 3994, 3988, 3992, 3984, 606: 3965, 3963, 3964, 3962, 3960, 633: 3977, 3974, 3976, 3975, 3971, 3973, 3972, 3969, 3970, 3968, 3978, 841: 3961, 3959, 927: 3967, 941: 4862},
// 1840
{20, 20, 10: 20, 134: 20, 199: 20, 201: 20},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4864},
{22, 22, 10: 22, 134: 22, 199: 22, 201: 22, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4866},
{23, 23, 10: 23, 134: 23, 199: 23, 201: 23, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
// 1845
{25, 25, 10: 25, 134: 25, 199: 25, 201: 25},
{134: 4851, 199: 4850, 201: 4849, 1091: 4869},
{24, 24, 10: 24, 134: 24, 199: 24, 201: 24},
{752: 4892},
{603: 4872},
// 1850
{571: 4873},
{16: 4877, 152: 4876, 176: 4879, 4878, 1351: 4875, 1548: 4874},
{149, 149, 16: 4877, 152: 4876, 176: 4879, 4878, 1351: 4891},
{141, 141, 16: 141, 152: 141, 176: 141, 141},
{571: 2453, 591: 4828, 840: 4889},
// 1855
{571: 2453, 591: 4828, 840: 4887},
{591: 4828, 595: 2453, 674: 2453, 2453, 840: 4885},
{591: 4828, 595: 2453, 666: 2453, 2453, 840: 4880},
{595: 3209, 666: 4882, 4883, 839: 4881, 1017: 4884},
{2341, 2341, 16: 2341, 18: 2341, 61: 2341, 64: 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 134: 2341, 152: 2341, 176: 2341, 2341, 188: 2341, 570: 2341, 753: 2341},
// 1860
{2340, 2340, 16: 2340, 18: 2340, 61: 2340, 64: 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 134: 2340, 152: 2340, 176: 2340, 2340, 188: 2340, 570: 2340, 753: 2340},
{2339, 2339, 16: 2339, 18: 2339, 61: 2339, 64: 2339, 2339, 2339, 2339, 2339, 2339, 2339, 2339, 2339, 2339, 2339, 2339, 2339, 2339, 2339, 2339, 2339, 2339, 2339, 2339, 2339, 2339, 2339, 2339, 2339, 2339, 2339, 2339, 2339, 2339, 2339, 2339, 2339, 134: 2339, 152: 2339, 176: 2339, 2339, 188: 2339, 570: 2339, 753: 2339},
{136, 136, 16: 136, 152: 136, 176: 136, 136},
{595: 4310, 674: 4312, 4311, 952: 4886},
{137, 137, 16: 137, 152: 137, 176: 137, 137},
// 1865
{571: 4888},
{138, 138, 16: 138, 152: 138, 176: 138, 138},
{571: 4890},
{139, 139, 16: 139, 152: 139, 176: 139, 139},
{140, 140, 16: 140, 152: 140, 176: 140, 140},
// 1870
{571: 4893},
{61: 4897, 134: 4896, 188: 4898, 1350: 4895, 1547: 4894},
{150, 150, 61: 4897, 134: 4896, 188: 4898, 1350: 4905},
{146, 146, 61: 146, 134: 146, 188: 146},
{571: 2453, 591: 4828, 840: 4903},
// 1875
{571: 2453, 591: 4828, 840: 4901},
{591: 4828, 595: 2453, 666: 2453, 2453, 840: 4899},
{595: 3209, 666: 4882, 4883, 839: 4881, 1017: 4900},
{142, 142, 61: 142, 134: 142, 188: 142},
{571: 4902},
// 1880
{143, 143, 61: 143, 134: 143, 188: 143},
{571: 4904},
{144, 144, 61: 144, 134: 144, 188: 144},
{145, 145, 61: 145, 134: 145, 188: 145},
{278: 4909, 418: 4907, 950: 4908},
// 1885
{572: 4917, 623: 152, 1477: 4916},
{571: 4915},
{2: 4911, 571: 4910},
{571: 4914},
{571: 4912},
// 1890
{571: 4913},
{153, 153},
{154, 154},
{155, 155},
{623: 4923},
// 1895
{243: 4918},
{776: 4919, 1042: 4920},
{203: 4921},
{623: 151},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4922},
// 1900
{2241, 2241, 10: 2241, 53: 2241, 570: 2241, 572: 2241, 579: 2241, 2241, 2241, 2241, 588: 2241, 590: 2241, 592: 2241, 594: 2241, 596: 2241, 2241, 2241, 2241, 601: 2241, 2241, 604: 2241, 2241, 3965, 3963, 3964, 3962, 3960, 2241, 2241, 2241, 2241, 2241, 2241, 620: 2241, 2241, 2241, 2241, 2241, 631: 2241, 841: 3961, 3959},
{149: 3194, 271: 4937, 569: 3076, 571: 4938, 3075, 587: 3074, 589: 3060, 626: 3059, 646: 3073, 694: 3069, 751: 3188, 753: 4936, 762: 4924, 815: 4925, 843: 3040, 846: 4926, 3070, 3071, 3072, 3081, 3079, 3078, 3077, 856: 3043, 4932, 4931, 862: 3187, 3041, 4929, 866: 4930, 4928, 875: 3042, 879: 4927, 945: 4933, 948: 4934, 967: 4935},
{588: 4954, 646: 2236, 1008: 4953},
{684, 684, 580: 1080, 590: 1080, 592: 1080, 596: 4079, 598: 4078, 604: 4077, 882: 4080, 4081},
{686, 686, 580: 1081, 590: 1081, 592: 1081},
// 1905
{691, 691},
{690, 690},
{689, 689},
{688, 688},
{687, 687},
// 1910
{685, 685},
{683, 683},
{682, 682},
{161, 161},
{149: 3194, 271: 4947, 569: 3076, 571: 4948, 3075, 587: 3074, 589: 3060, 626: 3059, 646: 3073, 694: 3069, 751: 3188, 762: 4924, 815: 4925, 843: 3040, 846: 4926, 3070, 3071, 3072, 3081, 3079, 3078, 3077, 856: 3043, 4932, 4931, 862: 3187, 3041, 4929, 866: 4930, 4928, 875: 3042, 879: 4927, 945: 4933, 948: 4934, 967: 4946},
// 1915
{183: 4939},
{157, 157},
{468, 468, 594: 4940, 596: 468, 598: 468, 604: 468, 928: 4941, 4942},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4945},
{467, 467, 53: 467, 570: 467, 572: 467, 579: 467, 467, 590: 467, 592: 467, 596: 467, 598: 467, 467, 601: 467, 467, 604: 467, 611: 467, 467, 614: 467},
// 1920
{1572, 1572, 596: 1572, 598: 1572, 604: 4077, 882: 4131, 953: 4943},
{1135, 1135, 596: 4079, 598: 4078, 883: 4136, 971: 4944},
{159, 159},
{469, 469, 53: 469, 570: 469, 572: 469, 579: 469, 469, 590: 469, 592: 469, 596: 469, 598: 469, 469, 601: 469, 469, 604: 469, 606: 3965, 3963, 3964, 3962, 3960, 469, 469, 614: 469, 841: 3961, 3959},
{160, 160},
// 1925
{183: 4949},
{156, 156},
{468, 468, 594: 4940, 596: 468, 598: 468, 604: 468, 928: 4941, 4950},
{1572, 1572, 596: 1572, 598: 1572, 604: 4077, 882: 4131, 953: 4951},
{1135, 1135, 596: 4079, 598: 4078, 883: 4136, 971: 4952},
// 1930
{158, 158},
{646: 4955},
{2: 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 11: 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 54: 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 600: 2235, 602: 2235, 2235, 646: 2235, 682: 2235},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 4956},
{2849, 2849, 2849, 2849, 2849, 2849, 5004, 5008, 5006, 628, 11: 4973, 16: 5025, 2592, 5023, 4960, 5027, 5039, 5014, 5043, 5005, 5010, 5007, 5009, 5012, 5013, 5015, 5022, 628, 5033, 5034, 5044, 5020, 5021, 5026, 5028, 5040, 5048, 5041, 5038, 5031, 5036, 5037, 5030, 5032, 5035, 5024, 5045, 5046, 103: 4998, 109: 4975, 111: 4996, 4997, 149: 4978, 261: 4967, 276: 4961, 279: 4959, 4982, 284: 4983, 296: 4977, 302: 4993, 316: 4971, 325: 4979, 332: 4974, 354: 4984, 359: 4980, 370: 4994, 4995, 377: 4962, 572: 4992, 2849, 575: 5003, 578: 2592, 580: 5042, 593: 2592, 597: 4964, 601: 4999, 604: 4981, 4991, 687: 4965, 742: 4970, 748: 2592, 5011, 753: 4958, 762: 4986, 767: 4972, 771: 5000, 806: 4976, 4987, 809: 4966, 4985, 906: 5016, 933: 5018, 954: 5017, 980: 5019, 988: 5029, 993: 5047, 1016: 4990, 1030: 4988, 1069: 4963, 1077: 4968, 1162: 5002, 1336: 4969, 1364: 4989, 1371: 5001, 4957},
// 1935
{2590, 2590, 5909, 5911, 5912, 5910, 573: 5913, 1282: 5908, 1373: 5907},
{573: 5881},
{3017, 3017, 233: 5875, 573: 5876},
{240: 5867},
{571: 2453, 575: 2453, 591: 4828, 840: 5864},
// 1940
{571: 2453, 575: 2453, 591: 4828, 840: 5861},
{2938, 2938, 2938, 2938, 2938, 2938, 5004, 5008, 5006, 628, 2938, 16: 5025, 2592, 5023, 4960, 5027, 5039, 5014, 5043, 5005, 5010, 5007, 5009, 5012, 5013, 5015, 5022, 628, 5033, 5034, 5044, 5020, 5021, 5026, 5028, 5040, 5048, 5041, 5038, 5031, 5036, 5037, 5030, 5032, 5035, 5024, 5045, 5046, 573: 2938, 575: 5003, 578: 2592, 580: 5042, 593: 2592, 605: 5857, 748: 2592, 5011, 906: 5016, 933: 5018, 954: 5017, 980: 5019, 988: 5029, 993: 5858},
{233: 5842, 236: 5843},
{752: 5834},
{2: 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 11: 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 54: 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 5642, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 5640, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 5643, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 573: 5639, 618: 2854, 684: 2843, 741: 2843, 2843, 2843, 5373, 749: 2843, 802: 2843, 2843, 977: 5641, 1002: 5205, 1021: 5637, 1047: 5644, 5646, 5645, 5638},
// 1945
{573: 5630},
{2926, 2926, 2926, 2926, 2926, 2926, 10: 2926, 573: 2926},
{2925, 2925, 2925, 2925, 2925, 2925, 10: 2925, 573: 2925},
{573: 5628},
{573: 5625},
// 1950
{2: 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 11: 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 54: 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 5606, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 573: 5605, 618: 2854, 684: 5191, 741: 5604, 5206, 744: 5207, 749: 5192, 802: 5608, 970: 5607, 1002: 5205, 1021: 5603, 1173: 5609},
{573: 5596},
{573: 5585},
{573: 5583},
{573: 5580},
// 1955
{573: 5577},
{22: 5574, 573: 5573},
{22: 5570, 573: 5569},
{573: 5559},
{761: 5552},
// 1960
{1104: 5551},
{1104: 5550},
{2: 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 11: 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 54: 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 618: 2854, 1002: 5205, 1021: 5546},
{2: 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 11: 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 54: 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 618: 2854, 1002: 5205, 1021: 5231},
{2: 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 11: 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 54: 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, 742: 5206, 744: 5207, 749: 5204, 1002: 5205, 1021: 5202, 1173: 5203},
// 1965
{2: 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 11: 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 54: 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 577: 5189, 591: 4828, 600: 2453, 684: 5191, 749: 5192, 752: 5187, 840: 5188, 970: 5190, 1002: 5186},
{2893, 2893, 2893, 2893, 2893, 2893, 10: 2893, 573: 2893},
{2892, 2892, 2892, 2892, 2892, 2892, 10: 2892, 573: 2892},
{2891, 2891, 2891, 2891, 2891, 2891, 10: 2891, 573: 2891},
{2890, 2890, 2890, 2890, 2890, 2890, 9: 627, 2890, 32: 627, 573: 2890},
// 1970
{274: 5185},
{274: 5184},
{2887, 2887, 2887, 2887, 2887, 2887, 10: 2887, 573: 2887},
{2886, 2886, 2886, 2886, 2886, 2886, 10: 2886, 573: 2886},
{2882, 2882, 2882, 2882, 2882, 2882, 10: 2882, 573: 2882},
// 1975
{2881, 2881, 2881, 2881, 2881, 2881, 10: 2881, 573: 2881},
{56: 2453, 319: 2453, 344: 2453, 346: 2453, 575: 2453, 591: 4828, 840: 5178},
{2: 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 11: 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 54: 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 575: 2453, 591: 4828, 840: 5175},
{229: 5174, 808: 5173},
{2848, 2848, 2848, 2848, 2848, 2848, 10: 5171, 573: 2848},
// 1980
{2847, 2847, 2847, 2847, 2847, 2847, 10: 2847, 573: 2847},
{17: 2591, 19: 2591, 23: 2591, 578: 2591, 593: 2591, 748: 2591},
{571: 2453, 591: 4828, 840: 5169},
{2: 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 11: 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 54: 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 571: 2453, 591: 4828, 840: 5167},
{24: 5162, 262: 5163, 326: 5164},
// 1985
{2: 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 11: 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 54: 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 571: 2453, 591: 4828, 840: 5160},
{571: 2453, 591: 4828, 840: 5158},
{2: 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 11: 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 54: 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 571: 2453, 591: 4828, 840: 5156},
{324: 5153},
{324: 5150},
// 1990
{591: 4828, 595: 2453, 840: 5148},
{591: 4828, 595: 2453, 840: 5146},
{2: 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 11: 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 54: 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 591: 4828, 840: 5144},
{591: 4828, 595: 2453, 840: 5142},
{2527, 2527, 2527, 2527, 2527, 2527, 2527, 2527, 2527, 2527, 2527, 16: 2527, 2527, 2527, 2527, 2527, 2527, 2527, 2527, 2527, 2527, 2527, 2527, 2527, 2527, 2527, 2527, 2527, 2527, 2527, 2527, 2527, 2527, 2527, 2527, 2527, 2527, 2527, 2527, 2527, 2527, 2527, 2527, 2527, 2527, 2527, 2527, 2527, 2527, 569: 2527, 2527, 572: 2527, 2527, 575: 2527, 577: 2527, 2527, 580: 2527, 587: 2527, 2527, 2527, 593: 2527, 605: 2527, 646: 2527, 694: 2527, 748: 2527, 2527},
// 1995
{665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 16: 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, 569: 665, 665, 572: 665, 665, 575: 665, 577: 665, 665, 580: 665, 587: 665, 665, 665, 593: 665, 605: 665, 646: 665, 694: 665, 748: 665, 665},
{17: 4649, 578: 5137, 593: 4650, 748: 4648, 893: 5136},
{9: 5130, 32: 5131},
{591: 4828, 595: 2453, 840: 5128},
{591: 4828, 595: 2453, 840: 5126},
// 2000
{571: 2453, 591: 4828, 840: 5124},
{591: 4828, 595: 2453, 840: 5122},
{591: 4828, 595: 2453, 840: 5120},
{571: 2453, 591: 4828, 840: 5118},
{571: 2453, 591: 4828, 840: 5116},
// 2005
{591: 4828, 595: 2453, 840: 5114},
{591: 4828, 595: 2453, 840: 5112},
{651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 16: 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 569: 651, 651, 572: 651, 651, 575: 651, 577: 651, 651, 580: 651, 587: 651, 651, 651, 593: 651, 605: 651, 646: 651, 694: 651, 748: 651, 651},
{575: 2453, 591: 4828, 595: 2453, 840: 5110},
{575: 2453, 591: 4828, 595: 2453, 840: 5107},
// 2010
{575: 2453, 591: 4828, 595: 2453, 840: 5104},
{591: 4828, 595: 2453, 840: 5102},
{591: 4828, 595: 2453, 840: 5100},
{591: 4828, 595: 2453, 674: 2453, 2453, 840: 5098},
{571: 2453, 591: 4828, 840: 5096},
// 2015
{571: 2453, 591: 4828, 840: 5094},
{591: 4828, 595: 2453, 840: 5092},
{591: 4828, 595: 2453, 840: 5090},
{575: 2453, 591: 4828, 595: 2453, 840: 5086},
{2: 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 11: 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 54: 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 571: 2453, 586: 2453, 591: 4828, 840: 5083},
// 2020
{569: 2453, 591: 4828, 840: 5078},
{571: 2453, 591: 4828, 840: 5075},
{2: 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 11: 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 54: 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 591: 4828, 840: 5069},
{571: 2453, 591: 4828, 840: 5067},
{571: 2453, 591: 4828, 840: 5065},
// 2025
{622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 16: 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 569: 622, 622, 572: 622, 622, 575: 622, 577: 622, 622, 580: 622, 587: 622, 622, 622, 593: 622, 605: 622, 646: 622, 694: 622, 748: 622, 622},
{189: 2453, 279: 2453, 283: 2453, 317: 2453, 361: 2453, 381: 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 575: 2453, 591: 4828, 840: 5049},
{189: 5052, 279: 5055, 283: 5051, 317: 5053, 361: 5054, 381: 5056, 5057, 5062, 5061, 5058, 5063, 5064, 5059, 5060, 575: 5050},
{616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 16: 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 569: 616, 616, 572: 616, 616, 575: 616, 577: 616, 616, 580: 616, 587: 616, 616, 616, 593: 616, 605: 616, 646: 616, 694: 616, 748: 616, 616},
{615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 16: 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 569: 615, 615, 572: 615, 615, 575: 615, 577: 615, 615, 580: 615, 587: 615, 615, 615, 593: 615, 605: 615, 646: 615, 694: 615, 748: 615, 615},
// 2030
{614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 16: 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 569: 614, 614, 572: 614, 614, 575: 614, 577: 614, 614, 580: 614, 587: 614, 614, 614, 593: 614, 605: 614, 646: 614, 694: 614, 748: 614, 614},
{613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 16: 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 569: 613, 613, 572: 613, 613, 575: 613, 577: 613, 613, 580: 613, 587: 613, 613, 613, 593: 613, 605: 613, 646: 613, 694: 613, 748: 613, 613},
{612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 16: 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 569: 612, 612, 572: 612, 612, 575: 612, 577: 612, 612, 580: 612, 587: 612, 612, 612, 593: 612, 605: 612, 646: 612, 694: 612, 748: 612, 612},
{611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 16: 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, 569: 611, 611, 572: 611, 611, 575: 611, 577: 611, 611, 580: 611, 587: 611, 611, 611, 593: 611, 605: 611, 646: 611, 694: 611, 748: 611, 611},
{610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 16: 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 569: 610, 610, 572: 610, 610, 575: 610, 577: 610, 610, 580: 610, 587: 610, 610, 610, 593: 610, 605: 610, 646: 610, 694: 610, 748: 610, 610},
// 2035
{609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 16: 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 569: 609, 609, 572: 609, 609, 575: 609, 577: 609, 609, 580: 609, 587: 609, 609, 609, 593: 609, 605: 609, 646: 609, 694: 609, 748: 609, 609},
{608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 16: 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 569: 608, 608, 572: 608, 608, 575: 608, 577: 608, 608, 580: 608, 587: 608, 608, 608, 593: 608, 605: 608, 646: 608, 694: 608, 748: 608, 608},
{607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 16: 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 569: 607, 607, 572: 607, 607, 575: 607, 577: 607, 607, 580: 607, 587: 607, 607, 607, 593: 607, 605: 607, 646: 607, 694: 607, 748: 607, 607},
{606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 16: 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 569: 606, 606, 572: 606, 606, 575: 606, 577: 606, 606, 580: 606, 587: 606, 606, 606, 593: 606, 605: 606, 646: 606, 694: 606, 748: 606, 606},
{605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 16: 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 569: 605, 605, 572: 605, 605, 575: 605, 577: 605, 605, 580: 605, 587: 605, 605, 605, 593: 605, 605: 605, 646: 605, 694: 605, 748: 605, 605},
// 2040
{604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 16: 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 569: 604, 604, 572: 604, 604, 575: 604, 577: 604, 604, 580: 604, 587: 604, 604, 604, 593: 604, 605: 604, 646: 604, 694: 604, 748: 604, 604},
{603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 16: 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 569: 603, 603, 572: 603, 603, 575: 603, 577: 603, 603, 580: 603, 587: 603, 603, 603, 593: 603, 605: 603, 646: 603, 694: 603, 748: 603, 603},
{602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 16: 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 569: 602, 602, 572: 602, 602, 575: 602, 577: 602, 602, 580: 602, 587: 602, 602, 602, 593: 602, 605: 602, 646: 602, 694: 602, 748: 602, 602},
{571: 5066},
{629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 16: 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 569: 629, 629, 572: 629, 629, 575: 629, 577: 629, 629, 580: 629, 587: 629, 629, 629, 593: 629, 605: 629, 646: 629, 694: 629, 748: 629, 629},
// 2045
{571: 5068},
{630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 16: 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 569: 630, 630, 572: 630, 630, 575: 630, 577: 630, 630, 580: 630, 587: 630, 630, 630, 593: 630, 605: 630, 646: 630, 694: 630, 748: 630, 630},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 5070, 3217, 3218, 3216},
{583: 5071},
{680: 5072},
// 2050
{571: 3844, 586: 3835, 595: 3839, 666: 3834, 3836, 674: 3838, 3837, 3842, 678: 3843, 686: 3841, 817: 5073, 3840},
{129: 3987, 133: 3995, 154: 3983, 156: 3980, 3982, 3979, 3981, 3985, 3986, 3991, 3990, 3989, 3993, 3994, 3988, 3992, 3984, 633: 3977, 3974, 3976, 3975, 3971, 3973, 3972, 3969, 3970, 3968, 3978, 927: 3967, 941: 5074},
{631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 16: 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 569: 631, 631, 572: 631, 631, 575: 631, 577: 631, 631, 580: 631, 587: 631, 631, 631, 593: 631, 605: 631, 646: 631, 694: 631, 748: 631, 631},
{571: 5077, 1218: 5076},
{632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 16: 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, 569: 632, 632, 572: 632, 632, 575: 632, 577: 632, 632, 580: 632, 587: 632, 632, 632, 593: 632, 605: 632, 646: 632, 694: 632, 748: 632, 632},
// 2055
{165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 16: 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 569: 165, 165, 572: 165, 165, 575: 165, 577: 165, 165, 580: 165, 587: 165, 165, 165, 593: 165, 597: 165, 605: 165, 646: 165, 694: 165, 748: 165, 165},
{569: 5079},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 812, 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 4149, 924: 5080, 1345: 5081},
{811, 811, 10: 4151, 53: 811, 572: 811},
{53: 5082},
// 2060
{633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 16: 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, 569: 633, 633, 572: 633, 633, 575: 633, 577: 633, 633, 580: 633, 587: 633, 633, 633, 593: 633, 605: 633, 646: 633, 694: 633, 748: 633, 633},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 571: 3956, 586: 5084, 811: 3957, 3217, 3218, 3216, 845: 5085},
{635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 16: 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 569: 635, 635, 572: 635, 635, 575: 635, 577: 635, 635, 580: 635, 587: 635, 635, 635, 593: 635, 605: 635, 646: 635, 694: 635, 748: 635, 635},
{634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 16: 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 569: 634, 634, 572: 634, 634, 575: 634, 577: 634, 634, 580: 634, 587: 634, 634, 634, 593: 634, 605: 634, 646: 634, 694: 634, 748: 634, 634},
{575: 5088, 595: 3209, 839: 4086, 854: 5089, 1337: 5087},
// 2065
{638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 16: 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 569: 638, 638, 572: 638, 638, 575: 638, 577: 638, 638, 580: 638, 587: 638, 638, 638, 593: 638, 605: 638, 646: 638, 694: 638, 748: 638, 638},
{626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 16: 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, 569: 626, 626, 572: 626, 626, 575: 626, 577: 626, 626, 580: 626, 587: 626, 626, 626, 593: 626, 605: 626, 646: 626, 694: 626, 748: 626, 626},
{625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 16: 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, 569: 625, 625, 572: 625, 625, 575: 625, 577: 625, 625, 580: 625, 587: 625, 625, 625, 593: 625, 605: 625, 646: 625, 694: 625, 748: 625, 625},
{595: 3209, 839: 4086, 854: 5091},
{639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 16: 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, 569: 639, 639, 572: 639, 639, 575: 639, 577: 639, 639, 580: 639, 587: 639, 639, 639, 593: 639, 605: 639, 646: 639, 694: 639, 748: 639, 639},
// 2070
{595: 3209, 839: 4086, 854: 5093},
{640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 16: 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 569: 640, 640, 572: 640, 640, 575: 640, 577: 640, 640, 580: 640, 587: 640, 640, 640, 593: 640, 605: 640, 646: 640, 694: 640, 748: 640, 640},
{571: 5095},
{641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 16: 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 569: 641, 641, 572: 641, 641, 575: 641, 577: 641, 641, 580: 641, 587: 641, 641, 641, 593: 641, 605: 641, 646: 641, 694: 641, 748: 641, 641},
{571: 5097},
// 2075
{642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 16: 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 569: 642, 642, 572: 642, 642, 575: 642, 577: 642, 642, 580: 642, 587: 642, 642, 642, 593: 642, 605: 642, 646: 642, 694: 642, 748: 642, 642},
{595: 4310, 674: 4312, 4311, 952: 5099},
{643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 16: 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, 569: 643, 643, 572: 643, 643, 575: 643, 577: 643, 643, 580: 643, 587: 643, 643, 643, 593: 643, 605: 643, 646: 643, 694: 643, 748: 643, 643},
{595: 3209, 839: 4086, 854: 5101},
{644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 16: 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 569: 644, 644, 572: 644, 644, 575: 644, 577: 644, 644, 580: 644, 587: 644, 644, 644, 593: 644, 605: 644, 646: 644, 694: 644, 748: 644, 644},
// 2080
{595: 3209, 839: 4086, 854: 5103},
{645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 16: 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 569: 645, 645, 572: 645, 645, 575: 645, 577: 645, 645, 580: 645, 587: 645, 645, 645, 593: 645, 605: 645, 646: 645, 694: 645, 748: 645, 645},
{575: 5106, 595: 3209, 839: 4086, 854: 5105},
{647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 16: 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 569: 647, 647, 572: 647, 647, 575: 647, 577: 647, 647, 580: 647, 587: 647, 647, 647, 593: 647, 605: 647, 646: 647, 694: 647, 748: 647, 647},
{646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 16: 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 569: 646, 646, 572: 646, 646, 575: 646, 577: 646, 646, 580: 646, 587: 646, 646, 646, 593: 646, 605: 646, 646: 646, 694: 646, 748: 646, 646},
// 2085
{575: 5109, 595: 3209, 839: 4086, 854: 5108},
{649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 16: 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 569: 649, 649, 572: 649, 649, 575: 649, 577: 649, 649, 580: 649, 587: 649, 649, 649, 593: 649, 605: 649, 646: 649, 694: 649, 748: 649, 649},
{648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 16: 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 569: 648, 648, 572: 648, 648, 575: 648, 577: 648, 648, 580: 648, 587: 648, 648, 648, 593: 648, 605: 648, 646: 648, 694: 648, 748: 648, 648},
{575: 5088, 595: 3209, 839: 4086, 854: 5089, 1337: 5111},
{650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 16: 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 569: 650, 650, 572: 650, 650, 575: 650, 577: 650, 650, 580: 650, 587: 650, 650, 650, 593: 650, 605: 650, 646: 650, 694: 650, 748: 650, 650},
// 2090
{595: 3209, 839: 4086, 854: 5113},
{652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 16: 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 569: 652, 652, 572: 652, 652, 575: 652, 577: 652, 652, 580: 652, 587: 652, 652, 652, 593: 652, 605: 652, 646: 652, 694: 652, 748: 652, 652},
{595: 3209, 839: 4086, 854: 5115},
{653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 16: 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 569: 653, 653, 572: 653, 653, 575: 653, 577: 653, 653, 580: 653, 587: 653, 653, 653, 593: 653, 605: 653, 646: 653, 694: 653, 748: 653, 653},
{571: 5117},
// 2095
{654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 16: 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 569: 654, 654, 572: 654, 654, 575: 654, 577: 654, 654, 580: 654, 587: 654, 654, 654, 593: 654, 605: 654, 646: 654, 694: 654, 748: 654, 654},
{571: 5119},
{655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 16: 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 569: 655, 655, 572: 655, 655, 575: 655, 577: 655, 655, 580: 655, 587: 655, 655, 655, 593: 655, 605: 655, 646: 655, 694: 655, 748: 655, 655},
{595: 3209, 839: 4086, 854: 5121},
{656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 16: 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 569: 656, 656, 572: 656, 656, 575: 656, 577: 656, 656, 580: 656, 587: 656, 656, 656, 593: 656, 605: 656, 646: 656, 694: 656, 748: 656, 656},
// 2100
{595: 3209, 839: 4086, 854: 5123},
{657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 16: 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 569: 657, 657, 572: 657, 657, 575: 657, 577: 657, 657, 580: 657, 587: 657, 657, 657, 593: 657, 605: 657, 646: 657, 694: 657, 748: 657, 657},
{571: 5125},
{658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 16: 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 569: 658, 658, 572: 658, 658, 575: 658, 577: 658, 658, 580: 658, 587: 658, 658, 658, 593: 658, 605: 658, 646: 658, 694: 658, 748: 658, 658},
{595: 3209, 839: 4086, 854: 5127},
// 2105
{659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 16: 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, 569: 659, 659, 572: 659, 659, 575: 659, 577: 659, 659, 580: 659, 587: 659, 659, 659, 593: 659, 605: 659, 646: 659, 694: 659, 748: 659, 659},
{595: 3209, 839: 4086, 854: 5129},
{661, 661, 661, 661, 661, 661, 661, 661, 661, 661, 661, 16: 661, 661, 661, 661, 661, 661, 661, 661, 661, 661, 661, 661, 661, 661, 661, 661, 661, 661, 661, 661, 661, 661, 661, 661, 661, 661, 661, 661, 661, 661, 661, 661, 661, 661, 661, 661, 661, 569: 661, 661, 572: 661, 661, 575: 661, 577: 661, 661, 580: 661, 587: 661, 661, 661, 593: 661, 605: 661, 646: 661, 694: 661, 748: 661, 661},
{591: 4828, 595: 2453, 840: 5134},
{591: 4828, 595: 2453, 840: 5132},
// 2110
{595: 3209, 839: 4086, 854: 5133},
{660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 16: 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 569: 660, 660, 572: 660, 660, 575: 660, 577: 660, 660, 580: 660, 587: 660, 660, 660, 593: 660, 605: 660, 646: 660, 694: 660, 748: 660, 660},
{595: 3209, 839: 4086, 854: 5135},
{662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 16: 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 569: 662, 662, 572: 662, 662, 575: 662, 577: 662, 662, 580: 662, 587: 662, 662, 662, 593: 662, 605: 662, 646: 662, 694: 662, 748: 662, 662},
{2: 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 11: 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 54: 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 571: 2453, 591: 4828, 625: 2453, 840: 5140},
// 2115
{2: 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 11: 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 54: 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 571: 2453, 591: 4828, 625: 2453, 840: 5138},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 571: 3956, 625: 3955, 811: 3957, 3217, 3218, 3216, 845: 3954, 1020: 5139},
{663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 16: 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 569: 663, 663, 572: 663, 663, 575: 663, 577: 663, 663, 580: 663, 587: 663, 663, 663, 593: 663, 605: 663, 646: 663, 694: 663, 748: 663, 663},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 571: 3956, 625: 4577, 811: 3957, 3217, 3218, 3216, 845: 4576, 946: 5141},
{664, 664, 664, 664, 664, 664, 664, 664, 664, 664, 664, 16: 664, 664, 664, 664, 664, 664, 664, 664, 664, 664, 664, 664, 664, 664, 664, 664, 664, 664, 664, 664, 664, 664, 664, 664, 664, 664, 664, 664, 664, 664, 664, 664, 664, 664, 664, 664, 664, 569: 664, 664, 572: 664, 664, 575: 664, 577: 664, 664, 580: 664, 587: 664, 664, 664, 593: 664, 605: 664, 646: 664, 694: 664, 748: 664, 664},
// 2120
{595: 3209, 839: 4086, 854: 5143},
{2528, 2528, 2528, 2528, 2528, 2528, 2528, 2528, 2528, 2528, 2528, 16: 2528, 2528, 2528, 2528, 2528, 2528, 2528, 2528, 2528, 2528, 2528, 2528, 2528, 2528, 2528, 2528, 2528, 2528, 2528, 2528, 2528, 2528, 2528, 2528, 2528, 2528, 2528, 2528, 2528, 2528, 2528, 2528, 2528, 2528, 2528, 2528, 2528, 2528, 569: 2528, 2528, 572: 2528, 2528, 575: 2528, 577: 2528, 2528, 580: 2528, 587: 2528, 2528, 2528, 593: 2528, 605: 2528, 646: 2528, 694: 2528, 748: 2528, 2528},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 5145, 3217, 3218, 3216},
{2529, 2529, 2529, 2529, 2529, 2529, 2529, 2529, 2529, 2529, 2529, 16: 2529, 2529, 2529, 2529, 2529, 2529, 2529, 2529, 2529, 2529, 2529, 2529, 2529, 2529, 2529, 2529, 2529, 2529, 2529, 2529, 2529, 2529, 2529, 2529, 2529, 2529, 2529, 2529, 2529, 2529, 2529, 2529, 2529, 2529, 2529, 2529, 2529, 2529, 569: 2529, 2529, 572: 2529, 2529, 575: 2529, 577: 2529, 2529, 580: 2529, 587: 2529, 2529, 2529, 593: 2529, 605: 2529, 646: 2529, 694: 2529, 748: 2529, 2529},
{595: 3209, 839: 4086, 854: 5147},
// 2125
{2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 16: 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 569: 2530, 2530, 572: 2530, 2530, 575: 2530, 577: 2530, 2530, 580: 2530, 587: 2530, 2530, 2530, 593: 2530, 605: 2530, 646: 2530, 694: 2530, 748: 2530, 2530},
{595: 3209, 839: 4086, 854: 5149},
{2531, 2531, 2531, 2531, 2531, 2531, 2531, 2531, 2531, 2531, 2531, 16: 2531, 2531, 2531, 2531, 2531, 2531, 2531, 2531, 2531, 2531, 2531, 2531, 2531, 2531, 2531, 2531, 2531, 2531, 2531, 2531, 2531, 2531, 2531, 2531, 2531, 2531, 2531, 2531, 2531, 2531, 2531, 2531, 2531, 2531, 2531, 2531, 2531, 2531, 569: 2531, 2531, 572: 2531, 2531, 575: 2531, 577: 2531, 2531, 580: 2531, 587: 2531, 2531, 2531, 593: 2531, 605: 2531, 646: 2531, 694: 2531, 748: 2531, 2531},
{571: 2453, 591: 4828, 840: 5151},
{571: 5152},
// 2130
{2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532, 16: 2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532, 569: 2532, 2532, 572: 2532, 2532, 575: 2532, 577: 2532, 2532, 580: 2532, 587: 2532, 2532, 2532, 593: 2532, 605: 2532, 646: 2532, 694: 2532, 748: 2532, 2532},
{571: 2453, 591: 4828, 840: 5154},
{571: 5155},
{2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 16: 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 569: 2533, 2533, 572: 2533, 2533, 575: 2533, 577: 2533, 2533, 580: 2533, 587: 2533, 2533, 2533, 593: 2533, 605: 2533, 646: 2533, 694: 2533, 748: 2533, 2533},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 571: 3956, 811: 3957, 3217, 3218, 3216, 845: 5157},
// 2135
{2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 16: 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 569: 2534, 2534, 572: 2534, 2534, 575: 2534, 577: 2534, 2534, 580: 2534, 587: 2534, 2534, 2534, 593: 2534, 605: 2534, 646: 2534, 694: 2534, 748: 2534, 2534},
{571: 5159},
{2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, 16: 2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, 569: 2535, 2535, 572: 2535, 2535, 575: 2535, 577: 2535, 2535, 580: 2535, 587: 2535, 2535, 2535, 593: 2535, 605: 2535, 646: 2535, 694: 2535, 748: 2535, 2535},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 571: 3956, 811: 3957, 3217, 3218, 3216, 845: 5161},
{2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 16: 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 569: 2536, 2536, 572: 2536, 2536, 575: 2536, 577: 2536, 2536, 580: 2536, 587: 2536, 2536, 2536, 593: 2536, 605: 2536, 646: 2536, 694: 2536, 748: 2536, 2536},
// 2140
{2: 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 11: 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 54: 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 571: 2453, 591: 4828, 840: 5165},
{637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 16: 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 569: 637, 637, 572: 637, 637, 575: 637, 577: 637, 637, 580: 637, 587: 637, 637, 637, 593: 637, 605: 637, 646: 637, 694: 637, 748: 637, 637},
{636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 16: 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 569: 636, 636, 572: 636, 636, 575: 636, 577: 636, 636, 580: 636, 587: 636, 636, 636, 593: 636, 605: 636, 646: 636, 694: 636, 748: 636, 636},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 571: 3956, 811: 3957, 3217, 3218, 3216, 845: 5166},
{2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 16: 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 569: 2537, 2537, 572: 2537, 2537, 575: 2537, 577: 2537, 2537, 580: 2537, 587: 2537, 2537, 2537, 593: 2537, 605: 2537, 646: 2537, 694: 2537, 748: 2537, 2537},
// 2145
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 571: 3956, 811: 3957, 3217, 3218, 3216, 845: 5168},
{2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 16: 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 569: 2538, 2538, 572: 2538, 2538, 575: 2538, 577: 2538, 2538, 580: 2538, 587: 2538, 2538, 2538, 593: 2538, 605: 2538, 646: 2538, 694: 2538, 748: 2538, 2538},
{571: 5170},
{2539, 2539, 2539, 2539, 2539, 2539, 2539, 2539, 2539, 2539, 2539, 16: 2539, 2539, 2539, 2539, 2539, 2539, 2539, 2539, 2539, 2539, 2539, 2539, 2539, 2539, 2539, 2539, 2539, 2539, 2539, 2539, 2539, 2539, 2539, 2539, 2539, 2539, 2539, 2539, 2539, 2539, 2539, 2539, 2539, 2539, 2539, 2539, 2539, 2539, 569: 2539, 2539, 572: 2539, 2539, 575: 2539, 577: 2539, 2539, 580: 2539, 587: 2539, 2539, 2539, 593: 2539, 605: 2539, 646: 2539, 694: 2539, 748: 2539, 2539},
{6: 5004, 5008, 5006, 628, 11: 4973, 16: 5025, 2592, 5023, 4960, 5027, 5039, 5014, 5043, 5005, 5010, 5007, 5009, 5012, 5013, 5015, 5022, 628, 5033, 5034, 5044, 5020, 5021, 5026, 5028, 5040, 5048, 5041, 5038, 5031, 5036, 5037, 5030, 5032, 5035, 5024, 5045, 5046, 103: 4998, 109: 4975, 111: 4996, 4997, 149: 4978, 261: 4967, 276: 4961, 280: 4982, 284: 4983, 296: 4977, 302: 4993, 316: 4971, 325: 4979, 332: 4974, 354: 4984, 359: 4980, 370: 4994, 4995, 377: 4962, 572: 4992, 575: 5003, 578: 2592, 580: 5042, 593: 2592, 597: 4964, 601: 4999, 604: 4981, 4991, 687: 4965, 742: 4970, 748: 2592, 5011, 762: 4986, 767: 4972, 771: 5000, 806: 4976, 4987, 809: 4966, 4985, 906: 5016, 933: 5018, 954: 5017, 980: 5019, 988: 5029, 993: 5047, 1016: 4990, 1030: 4988, 1069: 4963, 1077: 4968, 1162: 5172, 1336: 4969, 1364: 4989},
// 2150
{2846, 2846, 2846, 2846, 2846, 2846, 10: 2846, 573: 2846},
{2860, 2860, 2860, 2860, 2860, 2860, 10: 2860, 573: 2860},
{2859, 2859, 2859, 2859, 2859, 2859, 10: 2859, 573: 2859},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 575: 5176, 811: 5177, 3217, 3218, 3216},
{2862, 2862, 2862, 2862, 2862, 2862, 10: 2862, 103: 2862, 573: 2862},
// 2155
{2861, 2861, 2861, 2861, 2861, 2861, 10: 2861, 103: 2861, 573: 2861},
{56: 5183, 319: 5180, 344: 5181, 346: 5182, 575: 5179},
{2867, 2867, 2867, 2867, 2867, 2867, 10: 2867, 573: 2867, 601: 2867},
{2866, 2866, 2866, 2866, 2866, 2866, 10: 2866, 573: 2866, 601: 2866},
{2865, 2865, 2865, 2865, 2865, 2865, 10: 2865, 573: 2865, 601: 2865},
// 2160
{2864, 2864, 2864, 2864, 2864, 2864, 10: 2864, 573: 2864, 601: 2864},
{2863, 2863, 2863, 2863, 2863, 2863, 10: 2863, 573: 2863, 601: 2863},
{2888, 2888, 2888, 2888, 2888, 2888, 10: 2888, 573: 2888},
{2889, 2889, 2889, 2889, 2889, 2889, 10: 2889, 573: 2889},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 5199, 3217, 3218, 3216},
// 2165
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 5198},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 5197},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 5196},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 5193, 3217, 3218, 3216},
{2: 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 11: 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 54: 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 579: 2858, 599: 2858, 618: 2858},
// 2170
{2: 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 11: 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 54: 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 579: 2857, 599: 2857, 618: 2857},
{752: 5194},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 5195, 3217, 3218, 3216},
{2894, 2894, 2894, 2894, 2894, 2894, 10: 2894, 573: 2894},
{2895, 2895, 2895, 2895, 2895, 2895, 10: 2895, 573: 2895},
// 2175
{2896, 2896, 2896, 2896, 2896, 2896, 10: 2896, 573: 2896},
{2897, 2897, 2897, 2897, 2897, 2897, 10: 2897, 573: 2897},
{752: 5200},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 5201, 3217, 3218, 3216},
{2898, 2898, 2898, 2898, 2898, 2898, 10: 2898, 573: 2898},
// 2180
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 4247, 3217, 3218, 3216, 861: 5217},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 5212, 3217, 3218, 3216},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 5208, 3217, 3218, 3216},
{2: 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 11: 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 54: 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 618: 2853},
{2: 673, 673, 673, 673, 673, 673, 673, 673, 11: 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 54: 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673},
// 2185
{2: 672, 672, 672, 672, 672, 672, 672, 672, 11: 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 54: 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672},
{99: 5211, 101: 5210, 968: 5209},
{2883, 2883, 2883, 2883, 2883, 2883, 10: 2883, 573: 2883},
{2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 10: 2204, 20: 2204, 2204, 53: 2204, 60: 2204, 62: 2204, 97: 2204, 2204, 2204, 2204, 2204, 2204, 2204, 572: 2204, 2204, 579: 2204, 594: 2204, 601: 2204},
{2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 10: 2203, 20: 2203, 2203, 53: 2203, 60: 2203, 62: 2203, 97: 2203, 2203, 2203, 2203, 2203, 2203, 2203, 572: 2203, 2203, 579: 2203, 594: 2203, 601: 2203},
// 2190
{224: 5214, 574: 4032, 576: 4031, 961: 5215, 1093: 5213},
{2885, 2885, 2885, 2885, 2885, 2885, 10: 2885, 573: 2885},
{2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 53: 2744, 570: 2744, 573: 2744, 2744, 2744, 2744, 2744, 2744, 586: 2744, 684: 2744, 741: 2744, 2744, 2744, 2744, 2744, 747: 2744},
{224: 5216},
{2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, 53: 2743, 570: 2743, 573: 2743, 2743, 2743, 2743, 2743, 2743, 586: 2743, 684: 2743, 741: 2743, 2743, 2743, 2743, 2743, 747: 2743},
// 2195
{597: 5218, 767: 5219},
{575: 5221},
{575: 5220},
{2899, 2899, 2899, 2899, 2899, 2899, 10: 2899, 573: 2899},
{569: 5223, 571: 3844, 583: 5225, 5226, 586: 3835, 595: 3839, 666: 3834, 3836, 674: 3838, 3837, 3842, 678: 3843, 686: 3841, 817: 5224, 3840, 1038: 5222},
// 2200
{2901, 2901, 2901, 2901, 2901, 2901, 10: 2901, 573: 2901},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 5229},
{2645, 2645, 2645, 2645, 2645, 2645, 2645, 2645, 2645, 2645, 2645, 2645, 2645, 2645, 2645, 2645, 53: 2645, 570: 2645, 573: 2645, 2645, 2645, 2645, 2645, 2645, 586: 2645, 684: 2645, 741: 2645, 2645, 2645, 2645, 2645, 747: 2645},
{595: 4310, 674: 4312, 4311, 952: 5228},
{595: 4310, 674: 4312, 4311, 952: 5227},
// 2205
{2643, 2643, 2643, 2643, 2643, 2643, 2643, 2643, 2643, 2643, 2643, 2643, 2643, 2643, 2643, 2643, 53: 2643, 570: 2643, 573: 2643, 2643, 2643, 2643, 2643, 2643, 586: 2643, 684: 2643, 741: 2643, 2643, 2643, 2643, 2643, 747: 2643},
{2644, 2644, 2644, 2644, 2644, 2644, 2644, 2644, 2644, 2644, 2644, 2644, 2644, 2644, 2644, 2644, 53: 2644, 570: 2644, 573: 2644, 2644, 2644, 2644, 2644, 2644, 586: 2644, 684: 2644, 741: 2644, 2644, 2644, 2644, 2644, 747: 2644},
{53: 5230, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
{2900, 2900, 2900, 2900, 2900, 2900, 10: 2900, 573: 2900},
{2: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 11: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 54: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 618: 5233, 899: 5232},
// 2210
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 4247, 3217, 3218, 3216, 861: 5235},
{685: 5234},
{2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 54: 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 571: 2239, 573: 2239, 575: 2239, 600: 2239, 670: 2239},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 4247, 3217, 3218, 3216, 861: 5237, 1003: 5236},
{2852, 2852, 2852, 2852, 2852, 2852, 10: 2852, 5543, 5544, 573: 2852, 1083: 5542},
// 2215
{13: 5239, 129: 5291, 133: 5292, 179: 5281, 181: 5302, 5301, 185: 5304, 5283, 189: 5264, 203: 5303, 205: 5261, 207: 5298, 209: 5270, 5260, 213: 5279, 217: 5287, 5286, 5290, 593: 5285, 597: 5280, 625: 5275, 748: 5284, 766: 5267, 768: 5265, 770: 5262, 772: 5266, 774: 5289, 5288, 777: 5258, 5252, 5276, 5259, 5294, 783: 5268, 5269, 5253, 5254, 5255, 5256, 5257, 5282, 5296, 5300, 5295, 5250, 5299, 5251, 5263, 5249, 5293, 5248, 5297, 976: 5271, 1074: 5273, 1078: 5247, 5277, 5244, 1087: 5242, 1095: 5245, 5246, 1103: 5243, 1107: 5272, 1110: 5240, 5274, 1133: 5241, 1137: 5278, 1140: 5238, 1149: 5305},
{2701, 2701, 2701, 2701, 2701, 2701, 5384, 5392, 5390, 5378, 2701, 2701, 2701, 5382, 5391, 5389, 53: 2701, 570: 5383, 573: 2701, 4032, 5381, 4031, 2708, 5388, 586: 5377, 684: 2748, 741: 5375, 2843, 5380, 5373, 5396, 747: 5393, 961: 5376, 977: 5385, 1062: 5387, 1082: 5394, 1097: 5386, 1118: 5379, 1177: 5395, 5541},
{2701, 2701, 2701, 2701, 2701, 2701, 5384, 5392, 5390, 5378, 2701, 2701, 2701, 5382, 5391, 5389, 53: 2701, 570: 5383, 573: 2701, 4032, 5381, 4031, 2708, 5388, 586: 5377, 684: 2748, 741: 5375, 2843, 5380, 5373, 5396, 747: 5393, 961: 5376, 977: 5385, 1062: 5387, 1082: 5394, 1097: 5386, 1118: 5379, 1177: 5395, 5374},
{601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 53: 601, 570: 601, 573: 601, 601, 601, 601, 601, 601, 586: 601, 684: 601, 741: 601, 601, 601, 601, 601, 747: 601},
{600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 53: 600, 570: 600, 573: 600, 600, 600, 600, 600, 600, 586: 600, 684: 600, 741: 600, 600, 600, 600, 600, 747: 600},
// 2220
{599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 53: 599, 570: 599, 573: 599, 599, 599, 599, 599, 599, 586: 599, 684: 599, 741: 599, 599, 599, 599, 599, 747: 599},
{512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 53: 512, 63: 512, 569: 4625, 512, 573: 512, 512, 512, 512, 512, 512, 586: 512, 684: 512, 741: 512, 512, 512, 512, 512, 747: 512, 855: 512, 859: 512, 881: 4626, 925: 5371},
{507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 53: 507, 63: 507, 570: 507, 573: 507, 507, 507, 507, 507, 507, 586: 507, 684: 507, 741: 507, 507, 507, 507, 507, 747: 507, 855: 507, 859: 507, 1025: 5370},
{505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 53: 505, 63: 505, 569: 4630, 505, 573: 505, 505, 505, 505, 505, 505, 586: 505, 684: 505, 741: 505, 505, 505, 505, 505, 747: 505, 855: 505, 859: 505, 881: 4631, 1052: 5368, 1061: 4632},
{505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 53: 505, 63: 505, 569: 4630, 505, 573: 505, 505, 505, 505, 505, 505, 586: 505, 684: 505, 741: 505, 505, 505, 505, 505, 747: 505, 855: 505, 859: 505, 881: 4631, 1052: 5366, 1061: 4632},
// 2225
{512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 53: 512, 569: 4625, 512, 573: 512, 512, 512, 512, 512, 512, 586: 512, 684: 512, 741: 512, 512, 512, 512, 512, 747: 512, 881: 4626, 925: 5365},
{593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 53: 593, 63: 593, 569: 593, 593, 573: 593, 593, 593, 593, 593, 593, 586: 593, 684: 593, 741: 593, 593, 593, 593, 593, 747: 593, 855: 593, 859: 593},
{592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, 53: 592, 63: 592, 569: 592, 592, 573: 592, 592, 592, 592, 592, 592, 586: 592, 684: 592, 741: 592, 592, 592, 592, 592, 747: 592, 855: 592, 859: 592},
{591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 53: 591, 63: 591, 569: 591, 591, 573: 591, 591, 591, 591, 591, 591, 586: 591, 684: 591, 741: 591, 591, 591, 591, 591, 747: 591, 855: 591, 859: 591},
{590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 53: 590, 63: 590, 569: 590, 590, 573: 590, 590, 590, 590, 590, 590, 586: 590, 684: 590, 741: 590, 590, 590, 590, 590, 747: 590, 855: 590, 859: 590},
// 2230
{589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, 53: 589, 63: 589, 569: 589, 589, 573: 589, 589, 589, 589, 589, 589, 586: 589, 684: 589, 741: 589, 589, 589, 589, 589, 747: 589, 855: 589, 859: 589},
{588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 53: 588, 63: 588, 569: 588, 588, 573: 588, 588, 588, 588, 588, 588, 586: 588, 684: 588, 741: 588, 588, 588, 588, 588, 747: 588, 855: 588, 859: 588},
{587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 53: 587, 63: 587, 569: 587, 587, 573: 587, 587, 587, 587, 587, 587, 586: 587, 684: 587, 741: 587, 587, 587, 587, 587, 747: 587, 855: 587, 859: 587},
{586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, 53: 586, 63: 586, 569: 586, 586, 573: 586, 586, 586, 586, 586, 586, 586: 586, 684: 586, 741: 586, 586, 586, 586, 586, 747: 586, 855: 586, 859: 586},
{585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 53: 585, 63: 585, 569: 585, 585, 573: 585, 585, 585, 585, 585, 585, 586: 585, 684: 585, 741: 585, 585, 585, 585, 585, 747: 585, 855: 585, 859: 585},
// 2235
{584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, 53: 584, 63: 584, 569: 584, 584, 573: 584, 584, 584, 584, 584, 584, 586: 584, 684: 584, 741: 584, 584, 584, 584, 584, 747: 584, 855: 584, 859: 584},
{583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, 53: 583, 63: 583, 569: 583, 583, 573: 583, 583, 583, 583, 583, 583, 586: 583, 684: 583, 741: 583, 583, 583, 583, 583, 747: 583, 855: 583, 859: 583},
{582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 53: 582, 63: 582, 569: 582, 582, 573: 582, 582, 582, 582, 582, 582, 586: 582, 684: 582, 741: 582, 582, 582, 582, 582, 747: 582, 855: 582, 859: 582},
{581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 53: 581, 63: 581, 570: 581, 573: 581, 581, 581, 581, 581, 581, 586: 581, 684: 581, 741: 581, 581, 581, 581, 581, 747: 581, 855: 581, 859: 581},
{580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 53: 580, 63: 580, 570: 580, 573: 580, 580, 580, 580, 580, 580, 586: 580, 684: 580, 741: 580, 580, 580, 580, 580, 747: 580, 855: 580, 859: 580},
// 2240
{576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 53: 576, 63: 576, 569: 576, 576, 573: 576, 576, 576, 576, 576, 576, 586: 576, 684: 576, 741: 576, 576, 576, 576, 576, 747: 576, 855: 576, 859: 576},
{575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 53: 575, 63: 575, 569: 575, 575, 573: 575, 575, 575, 575, 575, 575, 586: 575, 684: 575, 741: 575, 575, 575, 575, 575, 747: 575, 855: 575, 859: 575},
{574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 53: 574, 63: 574, 569: 574, 574, 573: 574, 574, 574, 574, 574, 574, 586: 574, 684: 574, 741: 574, 574, 574, 574, 574, 747: 574, 855: 574, 859: 574},
{573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 53: 573, 63: 573, 569: 573, 573, 573: 573, 573, 573, 573, 573, 573, 586: 573, 684: 573, 741: 573, 573, 573, 573, 573, 747: 573, 855: 573, 859: 573},
{572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 53: 572, 63: 572, 569: 572, 572, 573: 572, 572, 572, 572, 572, 572, 586: 572, 684: 572, 741: 572, 572, 572, 572, 572, 747: 572, 855: 572, 859: 572},
// 2245
{571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 53: 571, 63: 571, 569: 571, 571, 573: 571, 571, 571, 571, 571, 571, 586: 571, 684: 571, 741: 571, 571, 571, 571, 571, 747: 571, 855: 571, 859: 571, 1478: 5364},
{569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, 53: 569, 63: 569, 569: 569, 569, 573: 569, 569, 569, 569, 569, 569, 586: 569, 684: 569, 741: 569, 569, 569, 569, 569, 747: 569, 855: 569, 859: 569},
{568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 53: 568, 63: 568, 569: 568, 568, 573: 568, 568, 568, 568, 568, 568, 586: 568, 684: 568, 741: 568, 568, 568, 568, 568, 747: 568, 855: 568, 859: 568},
{567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 53: 567, 569: 567, 567, 573: 567, 567, 567, 567, 567, 567, 586: 567, 684: 567, 741: 567, 567, 567, 567, 567, 747: 567},
{496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 17: 4649, 53: 496, 569: 4625, 496, 573: 496, 496, 496, 496, 496, 496, 586: 496, 593: 4650, 625: 4646, 684: 496, 741: 496, 496, 496, 496, 496, 747: 496, 4648, 881: 5361, 893: 4647, 936: 5362},
// 2250
{496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 17: 4649, 53: 496, 569: 4625, 496, 573: 496, 496, 496, 496, 496, 496, 586: 496, 593: 4650, 625: 4646, 684: 496, 741: 496, 496, 496, 496, 496, 747: 496, 4648, 881: 5358, 893: 4647, 936: 5359},
{569: 4625, 881: 5356},
{569: 4625, 881: 5354},
{512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 53: 512, 569: 4625, 512, 573: 512, 512, 512, 512, 512, 512, 586: 512, 684: 512, 741: 512, 512, 512, 512, 512, 747: 512, 881: 4626, 925: 5353},
{569: 4625, 881: 5352},
// 2255
{558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 53: 558, 570: 558, 573: 558, 558, 558, 558, 558, 558, 586: 558, 684: 558, 741: 558, 558, 558, 558, 558, 747: 558},
{496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 17: 4649, 53: 496, 170: 5336, 5338, 174: 5337, 570: 496, 573: 496, 496, 496, 496, 496, 496, 586: 496, 593: 4650, 625: 4646, 684: 496, 741: 496, 496, 496, 496, 496, 747: 496, 4648, 893: 4647, 936: 5335, 1031: 5351},
{569: 5347},
{569: 5340},
{554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 53: 554, 570: 554, 573: 554, 554, 554, 554, 554, 554, 586: 554, 684: 554, 741: 554, 554, 554, 554, 554, 747: 554},
// 2260
{496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 17: 4649, 53: 496, 170: 5336, 5338, 174: 5337, 570: 496, 573: 496, 496, 496, 496, 496, 496, 586: 496, 593: 5333, 625: 4646, 684: 496, 741: 496, 496, 496, 496, 496, 747: 496, 5332, 774: 5289, 5288, 779: 5334, 893: 4647, 936: 5335, 1031: 5331, 1074: 5330},
{499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 53: 499, 569: 499, 499, 573: 499, 499, 499, 499, 499, 499, 586: 499, 648: 4619, 684: 499, 741: 499, 499, 499, 499, 499, 747: 499, 1276: 5328},
{550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 17: 550, 53: 550, 569: 550, 550, 573: 550, 550, 550, 550, 550, 550, 586: 550, 593: 550, 625: 550, 684: 550, 741: 550, 550, 550, 550, 550, 747: 550, 550, 994: 5327},
{549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 17: 549, 53: 549, 569: 549, 549, 573: 549, 549, 549, 549, 549, 549, 586: 549, 593: 549, 625: 549, 684: 549, 741: 549, 549, 549, 549, 549, 747: 549, 549, 994: 5326},
{548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 17: 548, 53: 548, 569: 548, 548, 573: 548, 548, 548, 548, 548, 548, 586: 548, 593: 548, 625: 548, 684: 548, 741: 548, 548, 548, 548, 548, 747: 548, 548, 774: 5324, 5323, 994: 5325},
// 2265
{593: 5318, 748: 5317, 774: 5320, 5319},
{543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 17: 543, 53: 543, 170: 543, 543, 174: 543, 569: 543, 543, 573: 543, 543, 543, 543, 543, 543, 586: 543, 593: 543, 625: 543, 684: 543, 741: 543, 543, 543, 543, 543, 747: 543, 543},
{542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 17: 542, 53: 542, 170: 542, 542, 174: 542, 569: 542, 542, 573: 542, 542, 542, 542, 542, 542, 586: 542, 593: 542, 625: 542, 684: 542, 741: 542, 542, 542, 542, 542, 747: 542, 542},
{569: 539},
{533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 53: 533, 63: 533, 569: 533, 533, 573: 533, 533, 533, 533, 533, 533, 586: 533, 684: 533, 741: 533, 533, 533, 533, 533, 747: 533, 855: 533, 859: 533},
// 2270
{532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 53: 532, 63: 532, 569: 532, 532, 573: 532, 532, 532, 532, 532, 532, 586: 532, 684: 532, 741: 532, 532, 532, 532, 532, 747: 532, 855: 532, 859: 532},
{531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 53: 531, 570: 531, 573: 531, 531, 531, 531, 531, 531, 586: 531, 684: 531, 741: 531, 531, 531, 531, 531, 747: 531},
{512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 53: 512, 569: 4625, 512, 573: 512, 512, 512, 512, 512, 512, 586: 512, 684: 512, 741: 512, 512, 512, 512, 512, 747: 512, 881: 4626, 925: 5316},
{529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 53: 529, 570: 529, 573: 529, 529, 529, 529, 529, 529, 586: 529, 684: 529, 741: 529, 529, 529, 529, 529, 747: 529},
{528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 53: 528, 570: 528, 573: 528, 528, 528, 528, 528, 528, 586: 528, 684: 528, 741: 528, 528, 528, 528, 528, 747: 528},
// 2275
{526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 17: 526, 53: 526, 170: 526, 526, 174: 526, 570: 526, 573: 526, 526, 526, 526, 526, 526, 586: 526, 593: 526, 625: 526, 684: 526, 741: 526, 526, 526, 526, 526, 747: 526, 526},
{512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 17: 512, 53: 512, 170: 512, 512, 174: 512, 569: 4625, 512, 573: 512, 512, 512, 512, 512, 512, 586: 512, 593: 512, 625: 512, 684: 512, 741: 512, 512, 512, 512, 512, 747: 512, 512, 881: 4626, 925: 5315},
{524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 17: 524, 53: 524, 170: 524, 524, 174: 524, 570: 524, 573: 524, 524, 524, 524, 524, 524, 586: 524, 593: 524, 625: 524, 684: 524, 741: 524, 524, 524, 524, 524, 747: 524, 524},
{523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 17: 523, 53: 523, 170: 523, 523, 174: 523, 570: 523, 573: 523, 523, 523, 523, 523, 523, 586: 523, 593: 523, 625: 523, 684: 523, 741: 523, 523, 523, 523, 523, 747: 523, 523},
{518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 53: 518, 570: 518, 573: 518, 518, 518, 518, 518, 518, 586: 518, 684: 518, 741: 518, 518, 518, 518, 518, 747: 518},
// 2280
{512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 53: 512, 569: 4625, 512, 573: 512, 512, 512, 512, 512, 512, 586: 512, 684: 512, 741: 512, 512, 512, 512, 512, 747: 512, 881: 4626, 925: 5314},
{512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 53: 512, 569: 4625, 512, 573: 512, 512, 512, 512, 512, 512, 586: 512, 684: 512, 741: 512, 512, 512, 512, 512, 747: 512, 881: 4626, 925: 5313},
{512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 53: 512, 569: 4625, 512, 573: 512, 512, 512, 512, 512, 512, 586: 512, 684: 512, 741: 512, 512, 512, 512, 512, 747: 512, 881: 4626, 925: 5312},
{512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 53: 512, 63: 512, 569: 4625, 512, 573: 512, 512, 512, 512, 512, 512, 586: 512, 684: 512, 741: 512, 512, 512, 512, 512, 747: 512, 855: 512, 859: 512, 881: 4626, 925: 5306},
{507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 53: 507, 63: 507, 570: 507, 573: 507, 507, 507, 507, 507, 507, 586: 507, 684: 507, 741: 507, 507, 507, 507, 507, 747: 507, 855: 507, 859: 507, 1025: 5307},
// 2285
{514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 53: 514, 63: 5309, 570: 514, 573: 514, 514, 514, 514, 514, 514, 586: 514, 684: 514, 741: 514, 514, 514, 514, 514, 747: 514, 855: 5308, 859: 5310, 1024: 5311},
{510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 53: 510, 63: 510, 570: 510, 573: 510, 510, 510, 510, 510, 510, 586: 510, 684: 510, 741: 510, 510, 510, 510, 510, 747: 510, 855: 510, 859: 510},
{509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 53: 509, 63: 509, 570: 509, 573: 509, 509, 509, 509, 509, 509, 586: 509, 684: 509, 741: 509, 509, 509, 509, 509, 747: 509, 855: 509, 859: 509},
{508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 53: 508, 63: 508, 570: 508, 573: 508, 508, 508, 508, 508, 508, 586: 508, 684: 508, 741: 508, 508, 508, 508, 508, 747: 508, 855: 508, 859: 508},
{506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 53: 506, 63: 506, 570: 506, 573: 506, 506, 506, 506, 506, 506, 586: 506, 684: 506, 741: 506, 506, 506, 506, 506, 747: 506, 855: 506, 859: 506},
// 2290
{515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 53: 515, 570: 515, 573: 515, 515, 515, 515, 515, 515, 586: 515, 684: 515, 741: 515, 515, 515, 515, 515, 747: 515},
{516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 53: 516, 570: 516, 573: 516, 516, 516, 516, 516, 516, 586: 516, 684: 516, 741: 516, 516, 516, 516, 516, 747: 516},
{517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 53: 517, 570: 517, 573: 517, 517, 517, 517, 517, 517, 586: 517, 684: 517, 741: 517, 517, 517, 517, 517, 747: 517},
{525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 17: 525, 53: 525, 170: 525, 525, 174: 525, 570: 525, 573: 525, 525, 525, 525, 525, 525, 586: 525, 593: 525, 625: 525, 684: 525, 741: 525, 525, 525, 525, 525, 747: 525, 525},
{530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 53: 530, 570: 530, 573: 530, 530, 530, 530, 530, 530, 586: 530, 684: 530, 741: 530, 530, 530, 530, 530, 747: 530},
// 2295
{547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 17: 547, 53: 547, 569: 547, 547, 573: 547, 547, 547, 547, 547, 547, 586: 547, 593: 547, 625: 547, 684: 547, 741: 547, 547, 547, 547, 547, 747: 547, 547, 994: 5322},
{546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 17: 546, 53: 546, 569: 546, 546, 573: 546, 546, 546, 546, 546, 546, 586: 546, 593: 546, 625: 546, 684: 546, 741: 546, 546, 546, 546, 546, 747: 546, 546, 994: 5321},
{569: 541},
{569: 540},
{569: 535},
// 2300
{569: 536},
{569: 538},
{569: 537},
{569: 534},
{544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 17: 544, 53: 544, 170: 544, 544, 174: 544, 569: 544, 544, 573: 544, 544, 544, 544, 544, 544, 586: 544, 593: 544, 625: 544, 684: 544, 741: 544, 544, 544, 544, 544, 747: 544, 544},
// 2305
{545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 17: 545, 53: 545, 170: 545, 545, 174: 545, 569: 545, 545, 573: 545, 545, 545, 545, 545, 545, 586: 545, 593: 545, 625: 545, 684: 545, 741: 545, 545, 545, 545, 545, 747: 545, 545},
{512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 53: 512, 569: 4625, 512, 573: 512, 512, 512, 512, 512, 512, 586: 512, 684: 512, 741: 512, 512, 512, 512, 512, 747: 512, 881: 4626, 925: 5329},
{551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 53: 551, 570: 551, 573: 551, 551, 551, 551, 551, 551, 586: 551, 684: 551, 741: 551, 551, 551, 551, 551, 747: 551},
{496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 17: 4649, 53: 496, 170: 5336, 5338, 174: 5337, 570: 496, 573: 496, 496, 496, 496, 496, 496, 586: 496, 593: 4650, 625: 4646, 684: 496, 741: 496, 496, 496, 496, 496, 747: 496, 4648, 893: 4647, 936: 5335, 1031: 5339},
{552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 53: 552, 570: 552, 573: 552, 552, 552, 552, 552, 552, 586: 552, 684: 552, 741: 552, 552, 552, 552, 552, 747: 552},
// 2310
{597: 4652, 994: 5327},
{597: 4651, 994: 5326},
{527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 53: 527, 570: 527, 573: 527, 527, 527, 527, 527, 527, 586: 527, 684: 527, 741: 527, 527, 527, 527, 527, 747: 527},
{522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 53: 522, 570: 522, 573: 522, 522, 522, 522, 522, 522, 586: 522, 684: 522, 741: 522, 522, 522, 522, 522, 747: 522},
{521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 53: 521, 570: 521, 573: 521, 521, 521, 521, 521, 521, 586: 521, 684: 521, 741: 521, 521, 521, 521, 521, 747: 521},
// 2315
{520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 53: 520, 570: 520, 573: 520, 520, 520, 520, 520, 520, 586: 520, 684: 520, 741: 520, 520, 520, 520, 520, 747: 520},
{519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 53: 519, 570: 519, 573: 519, 519, 519, 519, 519, 519, 586: 519, 684: 519, 741: 519, 519, 519, 519, 519, 747: 519},
{553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 53: 553, 570: 553, 573: 553, 553, 553, 553, 553, 553, 586: 553, 684: 553, 741: 553, 553, 553, 553, 553, 747: 553},
{571: 4183, 676: 4184, 678: 4185, 1070: 5342, 1348: 5341},
{10: 5344, 53: 5343},
// 2320
{10: 481, 53: 481},
{496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 17: 4649, 53: 496, 170: 5336, 5338, 174: 5337, 570: 496, 573: 496, 496, 496, 496, 496, 496, 586: 496, 593: 4650, 625: 4646, 684: 496, 741: 496, 496, 496, 496, 496, 747: 496, 4648, 893: 4647, 936: 5335, 1031: 5346},
{571: 4183, 676: 4184, 678: 4185, 1070: 5345},
{10: 480, 53: 480},
{555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 53: 555, 570: 555, 573: 555, 555, 555, 555, 555, 555, 586: 555, 684: 555, 741: 555, 555, 555, 555, 555, 747: 555},
// 2325
{571: 4183, 676: 4184, 678: 4185, 1070: 5342, 1348: 5348},
{10: 5344, 53: 5349},
{496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 17: 4649, 53: 496, 170: 5336, 5338, 174: 5337, 570: 496, 573: 496, 496, 496, 496, 496, 496, 586: 496, 593: 4650, 625: 4646, 684: 496, 741: 496, 496, 496, 496, 496, 747: 496, 4648, 893: 4647, 936: 5335, 1031: 5350},
{556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 53: 556, 570: 556, 573: 556, 556, 556, 556, 556, 556, 586: 556, 684: 556, 741: 556, 556, 556, 556, 556, 747: 556},
{557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 53: 557, 570: 557, 573: 557, 557, 557, 557, 557, 557, 586: 557, 684: 557, 741: 557, 557, 557, 557, 557, 747: 557},
// 2330
{559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 53: 559, 570: 559, 573: 559, 559, 559, 559, 559, 559, 586: 559, 684: 559, 741: 559, 559, 559, 559, 559, 747: 559},
{560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 53: 560, 570: 560, 573: 560, 560, 560, 560, 560, 560, 586: 560, 684: 560, 741: 560, 560, 560, 560, 560, 747: 560},
{496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 17: 4649, 53: 496, 570: 496, 573: 496, 496, 496, 496, 496, 496, 586: 496, 593: 4650, 625: 4646, 684: 496, 741: 496, 496, 496, 496, 496, 747: 496, 4648, 893: 4647, 936: 5355},
{561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 53: 561, 570: 561, 573: 561, 561, 561, 561, 561, 561, 586: 561, 684: 561, 741: 561, 561, 561, 561, 561, 747: 561},
{496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 17: 4649, 53: 496, 570: 496, 573: 496, 496, 496, 496, 496, 496, 586: 496, 593: 4650, 625: 4646, 684: 496, 741: 496, 496, 496, 496, 496, 747: 496, 4648, 893: 4647, 936: 5357},
// 2335
{562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 53: 562, 570: 562, 573: 562, 562, 562, 562, 562, 562, 586: 562, 684: 562, 741: 562, 562, 562, 562, 562, 747: 562},
{496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 17: 4649, 53: 496, 570: 496, 573: 496, 496, 496, 496, 496, 496, 586: 496, 593: 4650, 625: 4646, 684: 496, 741: 496, 496, 496, 496, 496, 747: 496, 4648, 893: 4647, 936: 5360},
{563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, 53: 563, 570: 563, 573: 563, 563, 563, 563, 563, 563, 586: 563, 684: 563, 741: 563, 563, 563, 563, 563, 747: 563},
{564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 53: 564, 570: 564, 573: 564, 564, 564, 564, 564, 564, 586: 564, 684: 564, 741: 564, 564, 564, 564, 564, 747: 564},
{496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 17: 4649, 53: 496, 570: 496, 573: 496, 496, 496, 496, 496, 496, 586: 496, 593: 4650, 625: 4646, 684: 496, 741: 496, 496, 496, 496, 496, 747: 496, 4648, 893: 4647, 936: 5363},
// 2340
{565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 53: 565, 570: 565, 573: 565, 565, 565, 565, 565, 565, 586: 565, 684: 565, 741: 565, 565, 565, 565, 565, 747: 565},
{566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 53: 566, 570: 566, 573: 566, 566, 566, 566, 566, 566, 586: 566, 684: 566, 741: 566, 566, 566, 566, 566, 747: 566},
{570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 53: 570, 63: 570, 569: 570, 570, 573: 570, 570, 570, 570, 570, 570, 586: 570, 684: 570, 741: 570, 570, 570, 570, 570, 747: 570, 855: 570, 859: 570},
{594, 594, 594, 594, 594, 594, 594, 594, 594, 594, 594, 594, 594, 594, 594, 594, 53: 594, 570: 594, 573: 594, 594, 594, 594, 594, 594, 586: 594, 684: 594, 741: 594, 594, 594, 594, 594, 747: 594},
{507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 53: 507, 63: 507, 570: 507, 573: 507, 507, 507, 507, 507, 507, 586: 507, 684: 507, 741: 507, 507, 507, 507, 507, 747: 507, 855: 507, 859: 507, 1025: 5367},
// 2345
{595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 53: 595, 63: 5309, 570: 595, 573: 595, 595, 595, 595, 595, 595, 586: 595, 684: 595, 741: 595, 595, 595, 595, 595, 747: 595, 855: 5308, 859: 5310, 1024: 5311},
{507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 53: 507, 63: 507, 570: 507, 573: 507, 507, 507, 507, 507, 507, 586: 507, 684: 507, 741: 507, 507, 507, 507, 507, 747: 507, 855: 507, 859: 507, 1025: 5369},
{596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 53: 596, 63: 5309, 570: 596, 573: 596, 596, 596, 596, 596, 596, 586: 596, 684: 596, 741: 596, 596, 596, 596, 596, 747: 596, 855: 5308, 859: 5310, 1024: 5311},
{597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 53: 597, 63: 5309, 570: 597, 573: 597, 597, 597, 597, 597, 597, 586: 597, 684: 597, 741: 597, 597, 597, 597, 597, 747: 597, 855: 5308, 859: 5310, 1024: 5311},
{507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 53: 507, 63: 507, 570: 507, 573: 507, 507, 507, 507, 507, 507, 586: 507, 684: 507, 741: 507, 507, 507, 507, 507, 747: 507, 855: 507, 859: 507, 1025: 5372},
// 2350
{598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 53: 598, 63: 5309, 570: 598, 573: 598, 598, 598, 598, 598, 598, 586: 598, 684: 598, 741: 598, 598, 598, 598, 598, 747: 598, 855: 5308, 859: 5310, 1024: 5311},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 684: 2842, 741: 2842, 2842, 2842, 749: 2842, 802: 2842, 2842, 811: 5540, 3217, 3218, 3216, 1342: 5539},
{2770, 2770, 2770, 2770, 2770, 2770, 10: 2770, 2770, 2770, 53: 2770, 573: 2770},
{684: 2747},
{586: 5538},
// 2355
{2737, 2737, 2737, 2737, 2737, 2737, 2737, 2737, 2737, 2737, 2737, 2737, 2737, 2737, 2737, 2737, 53: 2737, 570: 2737, 573: 2737, 2737, 2737, 2737, 2737, 2737, 586: 2737, 684: 2737, 741: 2737, 2737, 2737, 2737, 2737, 747: 2737},
{2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, 53: 2736, 570: 2736, 573: 2736, 2736, 2736, 2736, 2736, 2736, 586: 2736, 684: 2736, 741: 2736, 2736, 2736, 2736, 2736, 747: 2736},
{684: 5532},
{2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 53: 2731, 60: 5527, 62: 5526, 570: 2731, 573: 2731, 2731, 2731, 2731, 2731, 2731, 586: 2731, 684: 5528, 741: 2731, 2731, 2731, 2731, 2731, 747: 2731},
{56: 5501, 263: 5505, 355: 5506, 569: 5500, 571: 3844, 583: 5225, 5226, 586: 3835, 589: 5502, 595: 3839, 666: 3834, 3836, 674: 3838, 3837, 3842, 678: 3843, 686: 3841, 688: 5486, 5485, 5481, 5482, 5483, 5484, 817: 5224, 3840, 820: 5504, 1018: 5499, 1038: 5497, 1051: 5480, 1054: 5478, 5479, 5503, 1108: 5498, 5496, 1406: 5495},
// 2360
{575: 5493},
{751: 5476},
{571: 5475},
{742: 5466},
{577: 5459},
// 2365
{2723, 2723, 2723, 2723, 2723, 2723, 2723, 2723, 2723, 2723, 2723, 2723, 2723, 2723, 2723, 2723, 53: 2723, 570: 2723, 573: 2723, 2723, 2723, 2723, 2723, 2723, 586: 2723, 684: 2723, 741: 2723, 2723, 2723, 2723, 2723, 747: 2723},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 571: 3956, 625: 3955, 811: 3957, 3217, 3218, 3216, 845: 3954, 1020: 5458},
{189: 5456, 283: 5457, 575: 5455, 1390: 5454},
{262: 5453, 326: 5452, 575: 5451, 1532: 5450},
{2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, 53: 2717, 569: 5444, 2717, 573: 2717, 2717, 2717, 2717, 2717, 2717, 586: 2717, 684: 2717, 741: 2717, 2717, 2717, 2717, 2717, 747: 2717, 1381: 5443},
// 2370
{571: 2453, 591: 4828, 840: 5441},
{399: 5440},
{2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 53: 2703, 570: 2703, 573: 2703, 2703, 2703, 2703, 2703, 2703, 586: 2703, 684: 2703, 741: 2703, 2703, 2703, 2703, 2703, 747: 2703},
{2700, 2700, 2700, 2700, 2700, 2700, 5384, 5392, 5390, 5378, 2700, 2700, 2700, 5382, 5391, 5389, 53: 2700, 570: 5383, 573: 2700, 4032, 5381, 4031, 2708, 5388, 586: 5377, 684: 2748, 741: 5375, 2843, 5380, 5373, 5396, 747: 5393, 961: 5376, 977: 5385, 1062: 5387, 1082: 5439, 1097: 5386, 1118: 5379},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 5397},
// 2375
{2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 53: 2631, 569: 5399, 2631, 573: 2631, 2631, 2631, 2631, 2631, 2631, 586: 2631, 684: 2631, 741: 2631, 2631, 2631, 2631, 2631, 747: 2631, 750: 2631, 1434: 5398},
{2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 53: 2690, 570: 2690, 573: 2690, 2690, 2690, 2690, 2690, 2690, 586: 2690, 684: 2690, 741: 2690, 2690, 2690, 2690, 2690, 747: 2690, 750: 5414, 1451: 5415, 5416},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 5403, 811: 4247, 3217, 3218, 3216, 861: 5402, 949: 5401, 959: 5400},
{10: 5412, 53: 5411},
{10: 2629, 53: 2629},
// 2380
{10: 512, 53: 512, 569: 4625, 617: 512, 644: 512, 881: 4626, 925: 5409},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 5404},
{53: 5405, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
{10: 1575, 53: 1575, 617: 5408, 644: 5407, 1112: 5406},
{10: 2626, 53: 2626},
// 2385
{1574, 1574, 1574, 1574, 1574, 1574, 10: 1574, 53: 1574, 573: 1574},
{1573, 1573, 1573, 1573, 1573, 1573, 10: 1573, 53: 1573, 573: 1573},
{10: 1575, 53: 1575, 617: 5408, 644: 5407, 1112: 5410},
{10: 2627, 53: 2627},
{2630, 2630, 2630, 2630, 2630, 2630, 2630, 2630, 2630, 2630, 2630, 2630, 2630, 2630, 2630, 2630, 53: 2630, 570: 2630, 573: 2630, 2630, 2630, 2630, 2630, 2630, 586: 2630, 684: 2630, 741: 2630, 2630, 2630, 2630, 2630, 747: 2630, 750: 2630},
// 2390
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 5403, 811: 4247, 3217, 3218, 3216, 861: 5402, 949: 5413},
{10: 2628, 53: 2628},
{200: 5436, 447: 5437, 467: 5438},
{2689, 2689, 2689, 2689, 2689, 2689, 2689, 2689, 2689, 2689, 2689, 2689, 2689, 2689, 2689, 2689, 53: 2689, 570: 2689, 573: 2689, 2689, 2689, 2689, 2689, 2689, 586: 2689, 684: 2689, 741: 2689, 2689, 2689, 2689, 2689, 747: 2689},
{2685, 2685, 2685, 2685, 2685, 2685, 2685, 2685, 2685, 2685, 2685, 2685, 2685, 2685, 2685, 2685, 53: 2685, 570: 5418, 573: 2685, 2685, 2685, 2685, 2685, 2685, 586: 2685, 684: 2685, 741: 2685, 2685, 2685, 2685, 2685, 747: 2685, 1266: 5419, 5420, 1456: 5417},
// 2395
{2688, 2688, 2688, 2688, 2688, 2688, 2688, 2688, 2688, 2688, 2688, 2688, 2688, 2688, 2688, 2688, 53: 2688, 570: 2688, 573: 2688, 2688, 2688, 2688, 2688, 2688, 586: 2688, 684: 2688, 741: 2688, 2688, 2688, 2688, 2688, 747: 2688},
{751: 5434, 843: 5423},
{2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, 53: 2684, 570: 5432, 573: 2684, 2684, 2684, 2684, 2684, 2684, 586: 2684, 684: 2684, 741: 2684, 2684, 2684, 2684, 2684, 747: 2684, 1267: 5433},
{2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 53: 2683, 570: 5421, 573: 2683, 2683, 2683, 2683, 2683, 2683, 586: 2683, 684: 2683, 741: 2683, 2683, 2683, 2683, 2683, 747: 2683, 1266: 5422},
{843: 5423},
// 2400
{2681, 2681, 2681, 2681, 2681, 2681, 2681, 2681, 2681, 2681, 2681, 2681, 2681, 2681, 2681, 2681, 53: 2681, 570: 2681, 573: 2681, 2681, 2681, 2681, 2681, 2681, 586: 2681, 684: 2681, 741: 2681, 2681, 2681, 2681, 2681, 747: 2681},
{106: 5428, 597: 5427, 769: 5426, 773: 5425, 1300: 5424},
{2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687, 53: 2687, 570: 2687, 573: 2687, 2687, 2687, 2687, 2687, 2687, 586: 2687, 684: 2687, 741: 2687, 2687, 2687, 2687, 2687, 747: 2687},
{2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680, 53: 2680, 570: 2680, 573: 2680, 2680, 2680, 2680, 2680, 2680, 586: 2680, 684: 2680, 741: 2680, 2680, 2680, 2680, 2680, 747: 2680},
{2679, 2679, 2679, 2679, 2679, 2679, 2679, 2679, 2679, 2679, 2679, 2679, 2679, 2679, 2679, 2679, 53: 2679, 570: 2679, 573: 2679, 2679, 2679, 2679, 2679, 2679, 586: 2679, 684: 2679, 741: 2679, 2679, 2679, 2679, 2679, 747: 2679},
// 2405
{575: 5431, 586: 5430},
{110: 5429},
{2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 53: 2677, 570: 2677, 573: 2677, 2677, 2677, 2677, 2677, 2677, 586: 2677, 684: 2677, 741: 2677, 2677, 2677, 2677, 2677, 747: 2677},
{2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 53: 2678, 570: 2678, 573: 2678, 2678, 2678, 2678, 2678, 2678, 586: 2678, 684: 2678, 741: 2678, 2678, 2678, 2678, 2678, 747: 2678},
{2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 53: 2676, 570: 2676, 573: 2676, 2676, 2676, 2676, 2676, 2676, 586: 2676, 684: 2676, 741: 2676, 2676, 2676, 2676, 2676, 747: 2676},
// 2410
{751: 5434},
{2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 53: 2682, 570: 2682, 573: 2682, 2682, 2682, 2682, 2682, 2682, 586: 2682, 684: 2682, 741: 2682, 2682, 2682, 2682, 2682, 747: 2682},
{106: 5428, 597: 5427, 769: 5426, 773: 5425, 1300: 5435},
{2686, 2686, 2686, 2686, 2686, 2686, 2686, 2686, 2686, 2686, 2686, 2686, 2686, 2686, 2686, 2686, 53: 2686, 570: 2686, 573: 2686, 2686, 2686, 2686, 2686, 2686, 586: 2686, 684: 2686, 741: 2686, 2686, 2686, 2686, 2686, 747: 2686},
{2693, 2693, 2693, 2693, 2693, 2693, 2693, 2693, 2693, 2693, 2693, 2693, 2693, 2693, 2693, 2693, 53: 2693, 570: 2693, 573: 2693, 2693, 2693, 2693, 2693, 2693, 586: 2693, 684: 2693, 741: 2693, 2693, 2693, 2693, 2693, 747: 2693},
// 2415
{2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 53: 2692, 570: 2692, 573: 2692, 2692, 2692, 2692, 2692, 2692, 586: 2692, 684: 2692, 741: 2692, 2692, 2692, 2692, 2692, 747: 2692},
{2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 53: 2691, 570: 2691, 573: 2691, 2691, 2691, 2691, 2691, 2691, 586: 2691, 684: 2691, 741: 2691, 2691, 2691, 2691, 2691, 747: 2691},
{2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 53: 2702, 570: 2702, 573: 2702, 2702, 2702, 2702, 2702, 2702, 586: 2702, 684: 2702, 741: 2702, 2702, 2702, 2702, 2702, 747: 2702},
{577: 2707},
{571: 5442},
// 2420
{2718, 2718, 2718, 2718, 2718, 2718, 2718, 2718, 2718, 2718, 2718, 2718, 2718, 2718, 2718, 2718, 53: 2718, 570: 2718, 573: 2718, 2718, 2718, 2718, 2718, 2718, 586: 2718, 684: 2718, 741: 2718, 2718, 2718, 2718, 2718, 747: 2718},
{2719, 2719, 2719, 2719, 2719, 2719, 2719, 2719, 2719, 2719, 2719, 2719, 2719, 2719, 2719, 2719, 53: 2719, 570: 2719, 573: 2719, 2719, 2719, 2719, 2719, 2719, 586: 2719, 684: 2719, 741: 2719, 2719, 2719, 2719, 2719, 747: 2719},
{595: 3209, 839: 4086, 854: 5445},
{10: 5447, 53: 5446},
{2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 53: 2716, 570: 2716, 573: 2716, 2716, 2716, 2716, 2716, 2716, 586: 2716, 684: 2716, 741: 2716, 2716, 2716, 2716, 2716, 747: 2716},
// 2425
{595: 3209, 839: 4086, 854: 5448},
{53: 5449},
{2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 53: 2715, 570: 2715, 573: 2715, 2715, 2715, 2715, 2715, 2715, 586: 2715, 684: 2715, 741: 2715, 2715, 2715, 2715, 2715, 747: 2715},
{2720, 2720, 2720, 2720, 2720, 2720, 2720, 2720, 2720, 2720, 2720, 2720, 2720, 2720, 2720, 2720, 53: 2720, 570: 2720, 573: 2720, 2720, 2720, 2720, 2720, 2720, 586: 2720, 684: 2720, 741: 2720, 2720, 2720, 2720, 2720, 747: 2720},
{2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 53: 2714, 570: 2714, 573: 2714, 2714, 2714, 2714, 2714, 2714, 586: 2714, 684: 2714, 741: 2714, 2714, 2714, 2714, 2714, 747: 2714},
// 2430
{2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 53: 2713, 570: 2713, 573: 2713, 2713, 2713, 2713, 2713, 2713, 586: 2713, 684: 2713, 741: 2713, 2713, 2713, 2713, 2713, 747: 2713},
{2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 2712, 53: 2712, 570: 2712, 573: 2712, 2712, 2712, 2712, 2712, 2712, 586: 2712, 684: 2712, 741: 2712, 2712, 2712, 2712, 2712, 747: 2712},
{2721, 2721, 2721, 2721, 2721, 2721, 2721, 2721, 2721, 2721, 2721, 2721, 2721, 2721, 2721, 2721, 53: 2721, 570: 2721, 573: 2721, 2721, 2721, 2721, 2721, 2721, 586: 2721, 684: 2721, 741: 2721, 2721, 2721, 2721, 2721, 747: 2721},
{2711, 2711, 2711, 2711, 2711, 2711, 2711, 2711, 2711, 2711, 2711, 2711, 2711, 2711, 2711, 2711, 53: 2711, 570: 2711, 573: 2711, 2711, 2711, 2711, 2711, 2711, 586: 2711, 684: 2711, 741: 2711, 2711, 2711, 2711, 2711, 747: 2711},
{2710, 2710, 2710, 2710, 2710, 2710, 2710, 2710, 2710, 2710, 2710, 2710, 2710, 2710, 2710, 2710, 53: 2710, 570: 2710, 573: 2710, 2710, 2710, 2710, 2710, 2710, 586: 2710, 684: 2710, 741: 2710, 2710, 2710, 2710, 2710, 747: 2710},
// 2435
{2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 53: 2709, 570: 2709, 573: 2709, 2709, 2709, 2709, 2709, 2709, 586: 2709, 684: 2709, 741: 2709, 2709, 2709, 2709, 2709, 747: 2709},
{2722, 2722, 2722, 2722, 2722, 2722, 2722, 2722, 2722, 2722, 2722, 2722, 2722, 2722, 2722, 2722, 53: 2722, 570: 2722, 573: 2722, 2722, 2722, 2722, 2722, 2722, 586: 2722, 684: 2722, 741: 2722, 2722, 2722, 2722, 2722, 747: 2722},
{569: 5460},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 5461},
{53: 5462, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
// 2440
{2706, 2706, 2706, 2706, 2706, 2706, 2706, 2706, 2706, 2706, 2706, 2706, 2706, 2706, 2706, 2706, 53: 2706, 570: 2706, 573: 2706, 2706, 2706, 2706, 2706, 2706, 586: 2706, 684: 2706, 741: 2706, 2706, 2706, 2706, 2706, 747: 2706, 1533: 5465, 1564: 5464, 5463},
{2724, 2724, 2724, 2724, 2724, 2724, 2724, 2724, 2724, 2724, 2724, 2724, 2724, 2724, 2724, 2724, 53: 2724, 570: 2724, 573: 2724, 2724, 2724, 2724, 2724, 2724, 586: 2724, 684: 2724, 741: 2724, 2724, 2724, 2724, 2724, 747: 2724},
{2705, 2705, 2705, 2705, 2705, 2705, 2705, 2705, 2705, 2705, 2705, 2705, 2705, 2705, 2705, 2705, 53: 2705, 570: 2705, 573: 2705, 2705, 2705, 2705, 2705, 2705, 586: 2705, 684: 2705, 741: 2705, 2705, 2705, 2705, 2705, 747: 2705},
{2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 53: 2704, 570: 2704, 573: 2704, 2704, 2704, 2704, 2704, 2704, 586: 2704, 684: 2704, 741: 2704, 2704, 2704, 2704, 2704, 747: 2704},
{569: 5467},
// 2445
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 5468},
{53: 5469, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
{2742, 2742, 2742, 2742, 2742, 2742, 2742, 2742, 2742, 2742, 2742, 2742, 2742, 2742, 2742, 2742, 53: 2742, 224: 5214, 570: 2742, 573: 2742, 4032, 2742, 4031, 2742, 2742, 586: 2742, 684: 2742, 741: 2742, 2742, 2742, 2742, 2742, 747: 2742, 961: 5470, 1093: 5471, 1219: 5472, 1411: 5473},
{224: 5216, 586: 5474},
{2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 53: 2741, 570: 2741, 573: 2741, 2741, 2741, 2741, 2741, 2741, 586: 2741, 684: 2741, 741: 2741, 2741, 2741, 2741, 2741, 747: 2741},
// 2450
{2739, 2739, 2739, 2739, 2739, 2739, 2739, 2739, 2739, 2739, 2739, 2739, 2739, 2739, 2739, 2739, 53: 2739, 570: 2739, 573: 2739, 2739, 2739, 2739, 2739, 2739, 586: 2739, 684: 2739, 741: 2739, 2739, 2739, 2739, 2739, 747: 2739},
{2725, 2725, 2725, 2725, 2725, 2725, 2725, 2725, 2725, 2725, 2725, 2725, 2725, 2725, 2725, 2725, 53: 2725, 570: 2725, 573: 2725, 2725, 2725, 2725, 2725, 2725, 586: 2725, 684: 2725, 741: 2725, 2725, 2725, 2725, 2725, 747: 2725},
{2740, 2740, 2740, 2740, 2740, 2740, 2740, 2740, 2740, 2740, 2740, 2740, 2740, 2740, 2740, 2740, 53: 2740, 570: 2740, 573: 2740, 2740, 2740, 2740, 2740, 2740, 586: 2740, 684: 2740, 741: 2740, 2740, 2740, 2740, 2740, 747: 2740},
{2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, 53: 2726, 570: 2726, 573: 2726, 2726, 2726, 2726, 2726, 2726, 586: 2726, 684: 2726, 741: 2726, 2726, 2726, 2726, 2726, 747: 2726},
{688: 5486, 5485, 5481, 5482, 5483, 5484, 1051: 5480, 1054: 5478, 5479, 5477},
// 2455
{2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 53: 2727, 570: 2727, 573: 2727, 2727, 2727, 2727, 2727, 2727, 586: 2727, 684: 2727, 741: 2727, 2727, 2727, 2727, 2727, 747: 2727},
{2663, 2663, 2663, 2663, 2663, 2663, 2663, 2663, 2663, 2663, 2663, 2663, 2663, 2663, 2663, 2663, 53: 2663, 570: 2663, 573: 2663, 2663, 2663, 2663, 2663, 2663, 586: 2663, 684: 2663, 741: 2663, 2663, 2663, 2663, 2663, 747: 2663},
{569: 5489},
{569: 5487},
{2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 53: 2659, 569: 2646, 2659, 573: 2659, 2659, 2659, 2659, 2659, 2659, 586: 2659, 684: 2659, 741: 2659, 2659, 2659, 2659, 2659, 747: 2659},
// 2460
{2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650, 53: 2650, 569: 2654, 2650, 573: 2650, 2650, 2650, 2650, 2650, 2650, 586: 2650, 684: 2650, 741: 2650, 2650, 2650, 2650, 2650, 747: 2650},
{2649, 2649, 2649, 2649, 2649, 2649, 2649, 2649, 2649, 2649, 2649, 2649, 2649, 2649, 2649, 2649, 53: 2649, 569: 2653, 2649, 573: 2649, 2649, 2649, 2649, 2649, 2649, 586: 2649, 684: 2649, 741: 2649, 2649, 2649, 2649, 2649, 747: 2649},
{2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 53: 2648, 569: 2652, 2648, 573: 2648, 2648, 2648, 2648, 2648, 2648, 586: 2648, 684: 2648, 741: 2648, 2648, 2648, 2648, 2648, 747: 2648},
{569: 2651},
{569: 2647},
// 2465
{53: 5488},
{2660, 2660, 2660, 2660, 2660, 2660, 2660, 2660, 2660, 2660, 2660, 2660, 2660, 2660, 2660, 2660, 53: 2660, 570: 2660, 573: 2660, 2660, 2660, 2660, 2660, 2660, 586: 2660, 684: 2660, 741: 2660, 2660, 2660, 2660, 2660, 747: 2660},
{53: 5490, 595: 3209, 839: 5491},
{2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 53: 2662, 570: 2662, 573: 2662, 2662, 2662, 2662, 2662, 2662, 586: 2662, 684: 2662, 741: 2662, 2662, 2662, 2662, 2662, 747: 2662},
{53: 5492},
// 2470
{2661, 2661, 2661, 2661, 2661, 2661, 2661, 2661, 2661, 2661, 2661, 2661, 2661, 2661, 2661, 2661, 53: 2661, 570: 2661, 573: 2661, 2661, 2661, 2661, 2661, 2661, 586: 2661, 684: 2661, 741: 2661, 2661, 2661, 2661, 2661, 747: 2661},
{222: 5494},
{2728, 2728, 2728, 2728, 2728, 2728, 2728, 2728, 2728, 2728, 2728, 2728, 2728, 2728, 2728, 2728, 53: 2728, 570: 2728, 573: 2728, 2728, 2728, 2728, 2728, 2728, 586: 2728, 684: 2728, 741: 2728, 2728, 2728, 2728, 2728, 747: 2728},
{2729, 2729, 2729, 2729, 2729, 2729, 2729, 2729, 2729, 2729, 2729, 2729, 2729, 2729, 2729, 2729, 53: 2729, 570: 2729, 573: 2729, 2729, 2729, 2729, 2729, 2729, 586: 2729, 684: 2729, 741: 2729, 2729, 2729, 2729, 2729, 747: 2729},
{2675, 2675, 2675, 2675, 2675, 2675, 2675, 2675, 2675, 2675, 2675, 2675, 2675, 2675, 2675, 2675, 53: 2675, 570: 2675, 573: 2675, 2675, 2675, 2675, 2675, 2675, 586: 2675, 684: 2675, 741: 2675, 2675, 2675, 2675, 2675, 747: 2675},
// 2475
{2674, 2674, 2674, 2674, 2674, 2674, 2674, 2674, 2674, 2674, 2674, 2674, 2674, 2674, 2674, 2674, 53: 2674, 570: 2674, 573: 2674, 2674, 2674, 2674, 2674, 2674, 586: 2674, 684: 2674, 741: 2674, 2674, 2674, 2674, 2674, 747: 2674},
{2673, 2673, 2673, 2673, 2673, 2673, 2673, 2673, 2673, 2673, 2673, 2673, 2673, 2673, 2673, 2673, 53: 2673, 570: 2673, 573: 2673, 2673, 2673, 2673, 2673, 2673, 586: 2673, 684: 2673, 741: 2673, 2673, 2673, 2673, 2673, 747: 2673},
{2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672, 53: 2672, 570: 2672, 573: 2672, 2672, 2672, 2672, 2672, 2672, 586: 2672, 684: 2672, 741: 2672, 2672, 2672, 2672, 2672, 747: 2672},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 5518, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 5516, 571: 3844, 583: 5225, 5226, 586: 3835, 589: 5502, 595: 3839, 666: 3834, 3836, 674: 3838, 3837, 3842, 678: 3843, 686: 3841, 688: 5486, 5485, 5481, 5482, 5483, 5484, 811: 5514, 3217, 3218, 3216, 817: 5224, 3840, 820: 5504, 1018: 5517, 1038: 5515, 1051: 5480, 1054: 5478, 5479, 5503, 1108: 5520, 5519},
{569: 5510},
// 2480
{569: 5507},
{2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, 53: 2664, 570: 2664, 573: 2664, 2664, 2664, 2664, 2664, 2664, 586: 2664, 684: 2664, 741: 2664, 2664, 2664, 2664, 2664, 747: 2664},
{2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, 53: 2657, 570: 2657, 573: 2657, 2657, 2657, 2657, 2657, 2657, 586: 2657, 684: 2657, 741: 2657, 2657, 2657, 2657, 2657, 747: 2657},
{222: 4816},
{569: 4813},
// 2485
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4062, 894: 5508},
{10: 4213, 53: 5509},
{2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 53: 2666, 570: 2666, 573: 2666, 2666, 2666, 2666, 2666, 2666, 586: 2666, 684: 2666, 741: 2666, 2666, 2666, 2666, 2666, 747: 2666},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 5511, 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4062, 894: 5512},
{2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 53: 2668, 570: 2668, 573: 2668, 2668, 2668, 2668, 2668, 2668, 586: 2668, 684: 2668, 741: 2668, 2668, 2668, 2668, 2668, 747: 2668},
// 2490
{10: 4213, 53: 5513},
{2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 53: 2667, 570: 2667, 573: 2667, 2667, 2667, 2667, 2667, 2667, 586: 2667, 684: 2667, 741: 2667, 2667, 2667, 2667, 2667, 747: 2667},
{53: 5525},
{53: 5524},
{56: 5501, 263: 5505, 355: 5506, 569: 5516, 589: 5502, 688: 5486, 5485, 5481, 5482, 5483, 5484, 820: 5504, 1018: 5517, 1051: 5480, 1054: 5478, 5479, 5503, 1108: 5520, 5519},
// 2495
{53: 5523},
{53: 2202, 569: 5510},
{53: 5522},
{53: 5521},
{2658, 2658, 2658, 2658, 2658, 2658, 2658, 2658, 2658, 2658, 2658, 2658, 2658, 2658, 2658, 2658, 53: 2658, 570: 2658, 573: 2658, 2658, 2658, 2658, 2658, 2658, 586: 2658, 684: 2658, 741: 2658, 2658, 2658, 2658, 2658, 747: 2658},
// 2500
{2665, 2665, 2665, 2665, 2665, 2665, 2665, 2665, 2665, 2665, 2665, 2665, 2665, 2665, 2665, 2665, 53: 2665, 570: 2665, 573: 2665, 2665, 2665, 2665, 2665, 2665, 586: 2665, 684: 2665, 741: 2665, 2665, 2665, 2665, 2665, 747: 2665},
{2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 53: 2669, 570: 2669, 573: 2669, 2669, 2669, 2669, 2669, 2669, 586: 2669, 684: 2669, 741: 2669, 2669, 2669, 2669, 2669, 747: 2669},
{2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, 53: 2670, 570: 2670, 573: 2670, 2670, 2670, 2670, 2670, 2670, 586: 2670, 684: 2670, 741: 2670, 2670, 2670, 2670, 2670, 747: 2670},
{2671, 2671, 2671, 2671, 2671, 2671, 2671, 2671, 2671, 2671, 2671, 2671, 2671, 2671, 2671, 2671, 53: 2671, 570: 2671, 573: 2671, 2671, 2671, 2671, 2671, 2671, 586: 2671, 684: 2671, 741: 2671, 2671, 2671, 2671, 2671, 747: 2671},
{2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 53: 2733, 570: 2733, 573: 2733, 2733, 2733, 2733, 2733, 2733, 586: 2733, 684: 2733, 741: 2733, 2733, 2733, 2733, 2733, 747: 2733},
// 2505
{2732, 2732, 2732, 2732, 2732, 2732, 2732, 2732, 2732, 2732, 2732, 2732, 2732, 2732, 2732, 2732, 53: 2732, 570: 2732, 573: 2732, 2732, 2732, 2732, 2732, 2732, 586: 2732, 684: 2732, 741: 2732, 2732, 2732, 2732, 2732, 747: 2732},
{2870, 2870, 2870, 2870, 2870, 2870, 2870, 2870, 2870, 2870, 2870, 2870, 2870, 2870, 2870, 2870, 53: 2870, 60: 5529, 62: 5530, 570: 2870, 573: 2870, 2870, 2870, 2870, 2870, 2870, 586: 2870, 684: 2870, 741: 2870, 2870, 2870, 2870, 2870, 747: 2870, 1098: 5531},
{2869, 2869, 2869, 2869, 2869, 2869, 2869, 2869, 2869, 2869, 2869, 2869, 2869, 2869, 2869, 2869, 53: 2869, 570: 2869, 573: 2869, 2869, 2869, 2869, 2869, 2869, 586: 2869, 684: 2869, 741: 2869, 2869, 2869, 2869, 2869, 747: 2869},
{2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868, 53: 2868, 570: 2868, 573: 2868, 2868, 2868, 2868, 2868, 2868, 586: 2868, 684: 2868, 741: 2868, 2868, 2868, 2868, 2868, 747: 2868},
{2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, 53: 2730, 570: 2730, 573: 2730, 2730, 2730, 2730, 2730, 2730, 586: 2730, 684: 2730, 741: 2730, 2730, 2730, 2730, 2730, 747: 2730},
// 2510
{2870, 2870, 2870, 2870, 2870, 2870, 2870, 2870, 2870, 2870, 2870, 2870, 2870, 2870, 2870, 2870, 53: 2870, 60: 5529, 62: 5530, 98: 5533, 100: 5534, 570: 2870, 573: 2870, 2870, 2870, 2870, 2870, 2870, 586: 2870, 684: 2870, 741: 2870, 2870, 2870, 2870, 2870, 747: 2870, 973: 5536, 1098: 5535},
{2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 20: 2872, 2872, 53: 2872, 60: 2872, 62: 2872, 97: 2872, 2872, 2872, 2872, 2872, 2872, 2872, 570: 2872, 572: 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 586: 2872, 594: 2872, 601: 2872, 684: 2872, 741: 2872, 2872, 2872, 2872, 2872, 747: 2872},
{2871, 2871, 2871, 2871, 2871, 2871, 2871, 2871, 2871, 2871, 2871, 2871, 2871, 2871, 2871, 2871, 20: 2871, 2871, 53: 2871, 60: 2871, 62: 2871, 97: 2871, 2871, 2871, 2871, 2871, 2871, 2871, 570: 2871, 572: 2871, 2871, 2871, 2871, 2871, 2871, 2871, 2871, 586: 2871, 594: 2871, 601: 2871, 684: 2871, 741: 2871, 2871, 2871, 2871, 2871, 747: 2871},
{2735, 2735, 2735, 2735, 2735, 2735, 2735, 2735, 2735, 2735, 2735, 2735, 2735, 2735, 2735, 2735, 53: 2735, 570: 2735, 573: 2735, 2735, 2735, 2735, 2735, 2735, 586: 2735, 684: 2735, 741: 2735, 2735, 2735, 2735, 2735, 747: 2735},
{2870, 2870, 2870, 2870, 2870, 2870, 2870, 2870, 2870, 2870, 2870, 2870, 2870, 2870, 2870, 2870, 53: 2870, 60: 5529, 62: 5530, 570: 2870, 573: 2870, 2870, 2870, 2870, 2870, 2870, 586: 2870, 684: 2870, 741: 2870, 2870, 2870, 2870, 2870, 747: 2870, 1098: 5537},
// 2515
{2734, 2734, 2734, 2734, 2734, 2734, 2734, 2734, 2734, 2734, 2734, 2734, 2734, 2734, 2734, 2734, 53: 2734, 570: 2734, 573: 2734, 2734, 2734, 2734, 2734, 2734, 586: 2734, 684: 2734, 741: 2734, 2734, 2734, 2734, 2734, 747: 2734},
{2738, 2738, 2738, 2738, 2738, 2738, 2738, 2738, 2738, 2738, 2738, 2738, 2738, 2738, 2738, 2738, 53: 2738, 570: 2738, 573: 2738, 2738, 2738, 2738, 2738, 2738, 586: 2738, 684: 2738, 741: 2738, 2738, 2738, 2738, 2738, 747: 2738},
{684: 2841, 741: 2841, 2841, 2841, 749: 2841, 802: 2841, 2841},
{2840, 2840, 2840, 2840, 2840, 2840, 10: 2840, 573: 2840, 684: 2840, 741: 2840, 2840, 2840, 749: 2840, 802: 2840, 2840},
{2771, 2771, 2771, 2771, 2771, 2771, 10: 2771, 2771, 2771, 53: 2771, 573: 2771},
// 2520
{2902, 2902, 2902, 2902, 2902, 2902, 10: 2902, 573: 2902},
{2851, 2851, 2851, 2851, 2851, 2851, 10: 2851, 573: 2851},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 4247, 3217, 3218, 3216, 861: 5545},
{2850, 2850, 2850, 2850, 2850, 2850, 10: 2850, 573: 2850},
{2: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 11: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 54: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 618: 5233, 899: 5547},
// 2525
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 4247, 3217, 3218, 3216, 861: 5237, 1003: 5548},
{2852, 2852, 2852, 2852, 2852, 2852, 10: 2852, 5543, 5544, 573: 2852, 1083: 5549},
{2903, 2903, 2903, 2903, 2903, 2903, 10: 2903, 573: 2903},
{2904, 2904, 2904, 2904, 2904, 2904, 10: 2904, 573: 2904},
{2905, 2905, 2905, 2905, 2905, 2905, 10: 2905, 573: 2905},
// 2530
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 4247, 3217, 3218, 3216, 861: 5555, 1156: 5554, 1369: 5553},
{2906, 2906, 2906, 2906, 2906, 2906, 10: 5557, 573: 2906},
{1585, 1585, 1585, 1585, 1585, 1585, 10: 1585, 573: 1585},
{1575, 1575, 1575, 1575, 1575, 1575, 10: 1575, 573: 1575, 617: 5408, 644: 5407, 1112: 5556},
{1583, 1583, 1583, 1583, 1583, 1583, 10: 1583, 573: 1583},
// 2535
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 4247, 3217, 3218, 3216, 861: 5555, 1156: 5558},
{1584, 1584, 1584, 1584, 1584, 1584, 10: 1584, 573: 1584},
{2: 815, 815, 815, 815, 815, 815, 815, 815, 11: 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 54: 815, 815, 815, 815, 815, 815, 5562, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 755: 815, 935: 5561, 951: 5560},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 755: 5564, 811: 5566, 3217, 3218, 3216, 900: 5565, 974: 5563},
{814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 54: 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 573: 814, 595: 814, 625: 814, 646: 814, 755: 814},
// 2540
{813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 54: 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, 573: 813, 595: 813, 625: 813, 646: 813, 755: 813},
{2909, 2909, 2909, 2909, 2909, 2909, 10: 2909, 573: 2909},
{2878, 2878, 2878, 2878, 2878, 2878, 10: 2878, 22: 2878, 573: 2878},
{2877, 2877, 2877, 2877, 2877, 2877, 10: 5567, 22: 2877, 573: 2877},
{2845, 2845, 2845, 2845, 2845, 2845, 10: 2845, 22: 2845, 53: 2845, 147: 2845, 233: 2845, 241: 2845, 572: 2845, 2845, 602: 2845, 749: 2845, 755: 2845},
// 2545
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 5568, 3217, 3218, 3216},
{2844, 2844, 2844, 2844, 2844, 2844, 10: 2844, 22: 2844, 53: 2844, 147: 2844, 233: 2844, 241: 2844, 572: 2844, 2844, 602: 2844, 749: 2844, 755: 2844},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 755: 5564, 811: 5566, 3217, 3218, 3216, 900: 5565, 974: 5571},
{2910, 2910, 2910, 2910, 2910, 2910, 10: 2910, 573: 2910},
{22: 5572},
// 2550
{2912, 2912, 2912, 2912, 2912, 2912, 10: 2912, 573: 2912},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 755: 5564, 811: 5566, 3217, 3218, 3216, 900: 5565, 974: 5575},
{2911, 2911, 2911, 2911, 2911, 2911, 10: 2911, 573: 2911},
{22: 5576},
{2913, 2913, 2913, 2913, 2913, 2913, 10: 2913, 573: 2913},
// 2555
{2: 815, 815, 815, 815, 815, 815, 815, 815, 11: 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 54: 815, 815, 815, 815, 815, 815, 5562, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 755: 815, 935: 5561, 951: 5578},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 755: 5564, 811: 5566, 3217, 3218, 3216, 900: 5565, 974: 5579},
{2914, 2914, 2914, 2914, 2914, 2914, 10: 2914, 573: 2914},
{2: 815, 815, 815, 815, 815, 815, 815, 815, 11: 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 54: 815, 815, 815, 815, 815, 815, 5562, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 755: 815, 935: 5561, 951: 5581},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 755: 5564, 811: 5566, 3217, 3218, 3216, 900: 5565, 974: 5582},
// 2560
{2915, 2915, 2915, 2915, 2915, 2915, 10: 2915, 573: 2915},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 755: 5564, 811: 5566, 3217, 3218, 3216, 900: 5565, 974: 5584},
{2916, 2916, 2916, 2916, 2916, 2916, 10: 2916, 573: 2916},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 5586, 3217, 3218, 3216},
{572: 5587},
// 2565
{646: 5588},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 5589},
{2876, 2876, 2876, 2876, 2876, 2876, 10: 2876, 302: 5593, 572: 5592, 2876, 1577: 5591, 5590},
{2917, 2917, 2917, 2917, 2917, 2917, 10: 2917, 573: 2917},
{2875, 2875, 2875, 2875, 2875, 2875, 10: 2875, 573: 2875},
// 2570
{274: 5595},
{274: 5594},
{2873, 2873, 2873, 2873, 2873, 2873, 10: 2873, 573: 2873},
{2874, 2874, 2874, 2874, 2874, 2874, 10: 2874, 573: 2874},
{226: 5597},
// 2575
{232: 5598},
{569: 5599},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3783, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 5600},
{53: 5601, 583: 4002, 4003, 4008, 600: 4004, 650: 4005, 659: 4006, 3999, 4009, 3998, 4007, 4000, 4001},
{2240, 2240, 2240, 2240, 2240, 2240, 10: 2240, 573: 2240, 618: 5233, 899: 5602},
// 2580
{2919, 2919, 2919, 2919, 2919, 2919, 10: 2919, 573: 2919},
{2: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 11: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 54: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 618: 5233, 899: 5620},
{684: 5619},
{2: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 11: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 54: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 618: 5233, 899: 5617},
{2: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 11: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 54: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 618: 5233, 899: 5615},
// 2585
{2: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 11: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 54: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 618: 5233, 899: 5613},
{684: 5611},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 5610, 3217, 3218, 3216},
{2884, 2884, 2884, 2884, 2884, 2884, 10: 2884, 573: 2884},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 5540, 3217, 3218, 3216, 1342: 5612},
// 2590
{2907, 2907, 2907, 2907, 2907, 2907, 10: 2907, 573: 2907},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 5614, 3217, 3218, 3216},
{2908, 2908, 2908, 2908, 2908, 2908, 10: 2908, 573: 2908},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 5616, 3217, 3218, 3216},
{2918, 2918, 2918, 2918, 2918, 2918, 10: 2918, 573: 2918},
// 2595
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 5566, 3217, 3218, 3216, 900: 5618},
{2920, 2920, 2920, 2920, 2920, 2920, 10: 5567, 573: 2920},
{2921, 2921, 2921, 2921, 2921, 2921, 10: 2921, 573: 2921},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 4247, 3217, 3218, 3216, 861: 5621},
{2458, 2458, 2458, 2458, 2458, 2458, 10: 2458, 573: 2458, 769: 5624, 773: 5623, 1063: 5622},
// 2600
{2922, 2922, 2922, 2922, 2922, 2922, 10: 2922, 573: 2922},
{2457, 2457, 2457, 2457, 2457, 2457, 10: 2457, 573: 2457},
{2456, 2456, 2456, 2456, 2456, 2456, 10: 2456, 573: 2456},
{60: 5562, 595: 815, 935: 5561, 951: 5626},
{595: 3209, 839: 5627},
// 2605
{2923, 2923, 2923, 2923, 2923, 2923, 10: 2923, 573: 2923},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 755: 5564, 811: 5566, 3217, 3218, 3216, 900: 5565, 974: 5629},
{2924, 2924, 2924, 2924, 2924, 2924, 10: 2924, 573: 2924},
{226: 5631},
{232: 5632},
// 2610
{569: 5633},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3783, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 5634},
{53: 5635, 583: 4002, 4003, 4008, 600: 4004, 650: 4005, 659: 4006, 3999, 4009, 3998, 4007, 4000, 4001},
{815, 815, 815, 815, 815, 815, 10: 815, 60: 5562, 573: 815, 935: 5561, 951: 5636},
{2928, 2928, 2928, 2928, 2928, 2928, 10: 2928, 573: 2928},
// 2615
{2: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 11: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 54: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 618: 5648, 904: 5821},
{2931, 2931, 2931, 2931, 2931, 2931, 10: 2931, 573: 2931},
{2238, 2238, 2238, 2238, 2238, 2238, 10: 2238, 60: 2238, 132: 2238, 569: 2238, 573: 2238, 618: 5648, 904: 5770, 935: 2238},
{2: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 11: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 54: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 618: 5648, 904: 5761},
{684: 5191, 741: 5717, 5722, 5720, 749: 5192, 802: 5721, 5718, 970: 5719, 1397: 5723},
// 2620
{749: 5710},
{749: 5647},
{676, 676, 676, 676, 676, 676, 10: 676, 53: 676, 573: 676},
{675, 675, 675, 675, 675, 675, 10: 675, 53: 675, 573: 675},
{674, 674, 674, 674, 674, 674, 10: 674, 53: 674, 573: 674},
// 2625
{2: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 11: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 54: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 579: 2238, 618: 5648, 904: 5649},
{574: 4032, 576: 4031, 961: 5708},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 2234, 579: 2234, 811: 5650, 3217, 3218, 3216, 981: 5651, 1027: 5652},
{97: 5706, 569: 2233, 579: 2233},
{569: 2217, 579: 5704},
// 2630
{569: 5653},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 5403, 811: 4247, 3217, 3218, 3216, 861: 5402, 949: 5401, 959: 5654},
{10: 5412, 53: 5655},
{2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 10: 2232, 20: 2232, 2232, 53: 2232, 60: 2232, 62: 2232, 97: 2232, 2232, 2232, 2232, 2232, 2232, 572: 2232, 2232, 579: 2232, 594: 2232, 983: 5656},
{677, 677, 677, 677, 677, 677, 5662, 5668, 10: 677, 20: 5658, 5667, 53: 677, 60: 5666, 62: 5665, 97: 5671, 5533, 5211, 5534, 5210, 5659, 572: 5661, 677, 579: 5670, 594: 5669, 968: 5663, 5660, 973: 5664, 982: 5657},
// 2635
{2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 10: 2231, 20: 2231, 2231, 53: 2231, 60: 2231, 62: 2231, 97: 2231, 2231, 2231, 2231, 2231, 2231, 2231, 572: 2231, 2231, 579: 2231, 594: 2231, 601: 2231},
{591: 4828, 595: 2453, 840: 5702},
{2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 10: 2229, 20: 2229, 2229, 53: 2229, 60: 2229, 62: 2229, 97: 2229, 2229, 2229, 2229, 2229, 2229, 2229, 572: 2229, 2229, 579: 2229, 594: 2229, 601: 2229},
{2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 10: 2228, 20: 2228, 2228, 53: 2228, 60: 2228, 62: 2228, 97: 2228, 2228, 2228, 2228, 2228, 2228, 2228, 572: 2228, 2228, 579: 2228, 594: 2228, 601: 2228},
{446: 5700},
// 2640
{571: 5699},
{2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 10: 2225, 20: 2225, 2225, 53: 2225, 60: 2225, 62: 2225, 97: 2225, 2225, 2225, 2225, 2225, 2225, 2225, 572: 2225, 2225, 579: 2225, 594: 2225, 601: 2225},
{2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 10: 2224, 20: 2224, 2224, 53: 2224, 60: 2224, 62: 2224, 97: 2224, 2224, 2224, 2224, 2224, 2224, 2224, 572: 2224, 2224, 579: 2224, 594: 2224, 601: 2224},
{2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 10: 2223, 20: 2223, 2223, 53: 2223, 60: 2223, 62: 2223, 97: 2223, 2223, 2223, 2223, 2223, 2223, 2223, 572: 2223, 2223, 579: 2223, 594: 2223, 601: 2223},
{2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222, 10: 2222, 20: 2222, 2222, 53: 2222, 60: 2222, 62: 2222, 97: 2222, 2222, 2222, 2222, 2222, 2222, 2222, 572: 2222, 2222, 579: 2222, 594: 2222, 601: 2222},
// 2645
{569: 2453, 591: 4828, 595: 2453, 840: 5683},
{571: 2453, 591: 4828, 840: 5681},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 5680},
{214: 5674, 236: 5676, 252: 5673, 258: 5677, 5678, 267: 5675, 1053: 5679},
{214: 5674, 236: 5676, 252: 5673, 258: 5677, 5678, 267: 5675, 1053: 5672},
// 2650
{2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 10: 2211, 20: 2211, 2211, 53: 2211, 60: 2211, 62: 2211, 97: 2211, 2211, 2211, 2211, 2211, 2211, 2211, 570: 2211, 572: 2211, 2211, 579: 2211, 594: 2211, 601: 2211},
{2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 10: 2210, 20: 2210, 2210, 53: 2210, 60: 2210, 62: 2210, 97: 2210, 2210, 2210, 2210, 2210, 2210, 2210, 569: 2210, 2210, 572: 2210, 2210, 579: 2210, 594: 2210, 601: 2210},
{2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 10: 2209, 20: 2209, 2209, 53: 2209, 60: 2209, 62: 2209, 97: 2209, 2209, 2209, 2209, 2209, 2209, 2209, 569: 2209, 2209, 572: 2209, 2209, 579: 2209, 594: 2209, 601: 2209},
{2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 10: 2208, 20: 2208, 2208, 53: 2208, 60: 2208, 62: 2208, 97: 2208, 2208, 2208, 2208, 2208, 2208, 2208, 569: 2208, 2208, 572: 2208, 2208, 579: 2208, 594: 2208, 601: 2208},
{2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 10: 2207, 20: 2207, 2207, 53: 2207, 60: 2207, 62: 2207, 97: 2207, 2207, 2207, 2207, 2207, 2207, 2207, 569: 2207, 2207, 572: 2207, 2207, 579: 2207, 594: 2207, 601: 2207},
// 2655
{2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 10: 2206, 20: 2206, 2206, 53: 2206, 60: 2206, 62: 2206, 97: 2206, 2206, 2206, 2206, 2206, 2206, 2206, 569: 2206, 2206, 572: 2206, 2206, 579: 2206, 594: 2206, 601: 2206},
{2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 10: 2205, 20: 2205, 2205, 53: 2205, 60: 2205, 62: 2205, 97: 2205, 2205, 2205, 2205, 2205, 2205, 2205, 569: 2205, 2205, 572: 2205, 2205, 579: 2205, 594: 2205, 601: 2205},
{2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, 10: 2212, 20: 2212, 2212, 53: 2212, 60: 2212, 62: 2212, 97: 2212, 2212, 2212, 2212, 2212, 2212, 2212, 570: 2212, 572: 2212, 2212, 579: 2212, 594: 2212, 601: 2212},
{2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 10: 2218, 20: 2218, 2218, 53: 2218, 60: 2218, 62: 2218, 97: 2218, 2218, 2218, 2218, 2218, 2218, 2218, 572: 2218, 2218, 579: 2218, 594: 2218, 601: 2218, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
{571: 5682},
// 2660
{2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 10: 2219, 20: 2219, 2219, 53: 2219, 60: 2219, 62: 2219, 97: 2219, 2219, 2219, 2219, 2219, 2219, 2219, 572: 2219, 2219, 579: 2219, 594: 2219, 601: 2219},
{569: 5684, 595: 3209, 839: 4778, 865: 5685},
{669: 5686, 761: 5687, 1131: 5688},
{2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 10: 2220, 20: 2220, 2220, 53: 2220, 60: 2220, 62: 2220, 97: 2220, 2220, 2220, 2220, 2220, 2220, 2220, 572: 2220, 2220, 579: 2220, 594: 2220, 601: 2220},
{569: 4113, 989: 5694},
// 2665
{569: 4113, 989: 5691, 1144: 5690},
{53: 5689},
{2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 10: 2221, 20: 2221, 2221, 53: 2221, 60: 2221, 62: 2221, 97: 2221, 2221, 2221, 2221, 2221, 2221, 2221, 572: 2221, 2221, 579: 2221, 594: 2221, 601: 2221},
{2812, 2812, 10: 5692, 53: 2812},
{1613, 1613, 10: 1613, 53: 1613, 570: 1613, 579: 1613},
// 2670
{569: 4113, 989: 5693},
{1612, 1612, 10: 1612, 53: 1612, 570: 1612, 579: 1612},
{606: 5695},
{569: 4113, 989: 5696},
{123: 5697},
// 2675
{595: 3209, 839: 4778, 865: 5698},
{2813, 2813, 53: 2813},
{2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 10: 2226, 20: 2226, 2226, 53: 2226, 60: 2226, 62: 2226, 97: 2226, 2226, 2226, 2226, 2226, 2226, 2226, 572: 2226, 2226, 579: 2226, 594: 2226, 601: 2226},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 5701, 3217, 3218, 3216},
{2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 10: 2227, 20: 2227, 2227, 53: 2227, 60: 2227, 62: 2227, 97: 2227, 2227, 2227, 2227, 2227, 2227, 2227, 572: 2227, 2227, 579: 2227, 594: 2227, 601: 2227},
// 2680
{595: 3209, 839: 4086, 854: 5703},
{2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 10: 2230, 20: 2230, 2230, 53: 2230, 60: 2230, 62: 2230, 97: 2230, 2230, 2230, 2230, 2230, 2230, 2230, 572: 2230, 2230, 579: 2230, 594: 2230, 601: 2230},
{214: 5674, 236: 5676, 252: 5673, 258: 5677, 5678, 267: 5675, 1053: 5705},
{569: 2216},
{214: 5674, 236: 5676, 252: 5673, 258: 5677, 5678, 267: 5675, 1053: 5707},
// 2685
{569: 2215},
{685: 5709},
{2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 54: 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 571: 2237, 573: 2237, 575: 2237, 579: 2237, 600: 2237, 670: 2237, 935: 2237},
{2: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 11: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 54: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 579: 2238, 618: 5648, 904: 5711},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 2234, 579: 2234, 811: 5650, 3217, 3218, 3216, 981: 5651, 1027: 5712},
// 2690
{569: 5713},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 5403, 811: 4247, 3217, 3218, 3216, 861: 5402, 949: 5401, 959: 5714},
{10: 5412, 53: 5715},
{2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 10: 2232, 20: 2232, 2232, 53: 2232, 60: 2232, 62: 2232, 97: 2232, 2232, 2232, 2232, 2232, 2232, 572: 2232, 2232, 579: 2232, 594: 2232, 983: 5716},
{678, 678, 678, 678, 678, 678, 5662, 5668, 10: 678, 20: 5658, 5667, 53: 678, 60: 5666, 62: 5665, 97: 5671, 5533, 5211, 5534, 5210, 5659, 572: 5661, 678, 579: 5670, 594: 5669, 968: 5663, 5660, 973: 5664, 982: 5657},
// 2695
{684: 5755},
{2: 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 11: 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 54: 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 684: 5191, 749: 5192, 970: 5736, 1246: 5749},
{2: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 11: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 54: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 579: 2238, 618: 5648, 904: 5743},
{2: 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 11: 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 54: 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 579: 2856, 684: 5191, 749: 5192, 970: 5736, 1246: 5737},
{684: 5728},
// 2700
{569: 5724},
{679, 679, 679, 679, 679, 679, 10: 679, 53: 679, 573: 679},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 5725},
{53: 5726, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
{2742, 2742, 2742, 2742, 2742, 2742, 10: 2742, 53: 2742, 224: 5214, 573: 2742, 4032, 576: 4031, 961: 5215, 1093: 5471, 1219: 5727},
// 2705
{2694, 2694, 2694, 2694, 2694, 2694, 10: 2694, 53: 2694, 573: 2694},
{2: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 11: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 54: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 618: 5648, 904: 5729},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 2234, 811: 5731, 3217, 3218, 3216, 981: 5730},
{569: 5732},
{569: 2233},
// 2710
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 5403, 811: 4247, 3217, 3218, 3216, 861: 5402, 949: 5401, 959: 5733},
{10: 5412, 53: 5734},
{745: 5396, 1062: 5735},
{2695, 2695, 2695, 2695, 2695, 2695, 10: 2695, 53: 2695, 573: 2695},
{2: 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 11: 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 54: 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 579: 2855},
// 2715
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 2234, 579: 2234, 811: 5650, 3217, 3218, 3216, 981: 5651, 1027: 5738},
{569: 5739},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 5403, 811: 4247, 3217, 3218, 3216, 861: 5402, 949: 5401, 959: 5740},
{10: 5412, 53: 5741},
{2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 10: 2232, 20: 2232, 2232, 53: 2232, 60: 2232, 62: 2232, 97: 2232, 2232, 2232, 2232, 2232, 2232, 572: 2232, 2232, 579: 2232, 594: 2232, 983: 5742},
// 2720
{2696, 2696, 2696, 2696, 2696, 2696, 5662, 5668, 10: 2696, 20: 5658, 5667, 53: 2696, 60: 5666, 62: 5665, 97: 5671, 5533, 5211, 5534, 5210, 5659, 572: 5661, 2696, 579: 5670, 594: 5669, 968: 5663, 5660, 973: 5664, 982: 5657},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 2234, 579: 2234, 811: 5650, 3217, 3218, 3216, 981: 5651, 1027: 5744},
{569: 5745},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 5403, 811: 4247, 3217, 3218, 3216, 861: 5402, 949: 5401, 959: 5746},
{10: 5412, 53: 5747},
// 2725
{2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 10: 2232, 20: 2232, 2232, 53: 2232, 60: 2232, 62: 2232, 97: 2232, 2232, 2232, 2232, 2232, 2232, 572: 2232, 2232, 579: 2232, 594: 2232, 983: 5748},
{2697, 2697, 2697, 2697, 2697, 2697, 5662, 5668, 10: 2697, 20: 5658, 5667, 53: 2697, 60: 5666, 62: 5665, 97: 5671, 5533, 5211, 5534, 5210, 5659, 572: 5661, 2697, 579: 5670, 594: 5669, 968: 5663, 5660, 973: 5664, 982: 5657},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 2234, 811: 5731, 3217, 3218, 3216, 981: 5750},
{569: 5751},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 5403, 811: 4247, 3217, 3218, 3216, 861: 5402, 949: 5401, 959: 5752},
// 2730
{10: 5412, 53: 5753},
{2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 10: 2232, 20: 2232, 2232, 53: 2232, 60: 2232, 62: 2232, 97: 2232, 2232, 2232, 2232, 2232, 2232, 572: 2232, 2232, 579: 2232, 594: 2232, 983: 5754},
{2698, 2698, 2698, 2698, 2698, 2698, 5662, 5668, 10: 2698, 20: 5658, 5667, 53: 2698, 60: 5666, 62: 5665, 97: 5671, 5533, 5211, 5534, 5210, 5659, 572: 5661, 2698, 579: 5670, 594: 5669, 968: 5663, 5660, 973: 5664, 982: 5657},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 2234, 579: 2234, 811: 5650, 3217, 3218, 3216, 981: 5651, 1027: 5756},
{569: 5757},
// 2735
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 5403, 811: 4247, 3217, 3218, 3216, 861: 5402, 949: 5401, 959: 5758},
{10: 5412, 53: 5759},
{2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 10: 2232, 20: 2232, 2232, 53: 2232, 60: 2232, 62: 2232, 97: 2232, 2232, 2232, 2232, 2232, 2232, 572: 2232, 2232, 579: 2232, 594: 2232, 983: 5760},
{2699, 2699, 2699, 2699, 2699, 2699, 5662, 5668, 10: 2699, 20: 5658, 5667, 53: 2699, 60: 5666, 62: 5665, 97: 5671, 5533, 5211, 5534, 5210, 5659, 572: 5661, 2699, 579: 5670, 594: 5669, 968: 5663, 5660, 973: 5664, 982: 5657},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 5762, 3217, 3218, 3216},
// 2740
{312: 5764, 320: 5766, 323: 5765, 1338: 5763},
{569: 5767},
{53: 2639, 569: 2639},
{53: 2638, 569: 2638},
{53: 2637, 569: 2637},
// 2745
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 4247, 3217, 3218, 3216, 861: 4248, 943: 5768},
{10: 4250, 53: 5769},
{2927, 2927, 2927, 2927, 2927, 2927, 10: 2927, 573: 2927},
{815, 815, 815, 815, 815, 815, 10: 815, 60: 5562, 132: 815, 569: 815, 573: 815, 935: 5561, 951: 5771},
{2551, 2551, 2551, 2551, 2551, 2551, 10: 2551, 132: 5773, 569: 5774, 573: 2551, 1280: 5772},
// 2750
{2930, 2930, 2930, 2930, 2930, 2930, 10: 2930, 573: 2930},
{595: 3209, 839: 5820},
{573: 5777, 1115: 5776, 1279: 5775},
{10: 5818, 53: 5817},
{10: 2549, 53: 2549},
// 2755
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 5778, 3217, 3218, 3216},
{6: 2526, 2526, 2526, 10: 2526, 19: 2526, 22: 2526, 24: 2526, 2526, 2526, 2526, 2526, 2526, 2526, 53: 2526, 211: 5783, 289: 5782, 569: 2526, 575: 5781, 587: 5780, 749: 2526, 1473: 5779},
{6: 2541, 2541, 2541, 10: 2541, 19: 2541, 22: 2541, 24: 2541, 2541, 2541, 2541, 2541, 2541, 2541, 53: 2541, 569: 2541, 749: 2541, 1114: 5804},
{226: 5784, 645: 5785},
{6: 2523, 2523, 2523, 10: 2523, 19: 2523, 22: 2523, 24: 2523, 2523, 2523, 2523, 2523, 2523, 2523, 53: 2523, 569: 2523, 749: 2523},
// 2760
{6: 2521, 2521, 2521, 10: 2521, 19: 2521, 22: 2521, 24: 2521, 2521, 2521, 2521, 2521, 2521, 2521, 53: 2521, 569: 2521, 749: 2521},
{6: 2520, 2520, 2520, 10: 2520, 19: 2520, 22: 2520, 24: 2520, 2520, 2520, 2520, 2520, 2520, 2520, 53: 2520, 569: 2520, 749: 2520},
{232: 5794},
{569: 5786},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 5788, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3783, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 5789, 1198: 5790, 1405: 5787},
// 2765
{10: 5792, 53: 5791},
{10: 2324, 53: 2324, 569: 4120},
{10: 2323, 53: 2323, 583: 4002, 4003, 4008, 600: 4004, 650: 4005, 659: 4006, 3999, 4009, 3998, 4007, 4000, 4001},
{10: 2307, 53: 2307},
{6: 2522, 2522, 2522, 10: 2522, 19: 2522, 22: 2522, 24: 2522, 2522, 2522, 2522, 2522, 2522, 2522, 53: 2522, 569: 2522, 749: 2522},
// 2770
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 5788, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3783, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 5789, 1198: 5793},
{10: 2306, 53: 2306},
{569: 5796, 760: 5795},
{6: 2525, 2525, 2525, 10: 2525, 19: 2525, 22: 2525, 24: 2525, 2525, 2525, 2525, 2525, 2525, 2525, 53: 2525, 569: 2525, 749: 2525},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3783, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 760: 5798, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 5799, 1260: 5800, 1454: 5797},
// 2775
{10: 5802, 53: 5801},
{10: 2322, 53: 2322},
{10: 2321, 53: 2321, 583: 4002, 4003, 4008, 600: 4004, 650: 4005, 659: 4006, 3999, 4009, 3998, 4007, 4000, 4001},
{10: 2309, 53: 2309},
{6: 2524, 2524, 2524, 10: 2524, 19: 2524, 22: 2524, 24: 2524, 2524, 2524, 2524, 2524, 2524, 2524, 53: 2524, 569: 2524, 749: 2524},
// 2780
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3783, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 760: 5798, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 5799, 1260: 5803},
{10: 2308, 53: 2308},
{6: 5004, 5008, 5808, 10: 2546, 19: 4960, 22: 5014, 24: 5005, 5010, 5007, 5009, 5012, 5013, 5015, 53: 2546, 569: 5806, 749: 5011, 906: 5016, 954: 5807, 1537: 5805},
{10: 2547, 53: 2547},
{131: 5811, 1340: 5810, 1536: 5809},
// 2785
{2540, 2540, 6: 2540, 2540, 2540, 10: 2540, 19: 2540, 22: 2540, 24: 2540, 2540, 2540, 2540, 2540, 2540, 2540, 53: 2540, 569: 2540, 749: 2540},
{24: 5162},
{10: 5815, 53: 5814},
{10: 2544, 53: 2544},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 5812, 3217, 3218, 3216},
// 2790
{6: 2541, 2541, 2541, 10: 2541, 19: 2541, 22: 2541, 24: 2541, 2541, 2541, 2541, 2541, 2541, 2541, 53: 2541, 749: 2541, 1114: 5813},
{6: 5004, 5008, 5808, 10: 2542, 19: 4960, 22: 5014, 24: 5005, 5010, 5007, 5009, 5012, 5013, 5015, 53: 2542, 749: 5011, 906: 5016, 954: 5807},
{10: 2545, 53: 2545},
{131: 5811, 1340: 5816},
{10: 2543, 53: 2543},
// 2795
{2550, 2550, 2550, 2550, 2550, 2550, 10: 2550, 569: 2550, 2550, 572: 2550, 2550, 577: 2550, 587: 2550, 2550, 2550, 646: 2550, 694: 2550, 751: 2550},
{573: 5777, 1115: 5819},
{10: 2548, 53: 2548},
{2929, 2929, 2929, 2929, 2929, 2929, 10: 2929, 573: 2929},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 5823, 811: 4247, 3217, 3218, 3216, 861: 5237, 1003: 5822},
// 2800
{2852, 2852, 2852, 2852, 2852, 2852, 10: 2852, 5543, 5544, 573: 2852, 1083: 5833},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 5825, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 5826, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 684: 2843, 741: 2843, 2843, 2843, 5373, 749: 2843, 802: 2843, 2843, 811: 4247, 3217, 3218, 3216, 861: 5237, 977: 5641, 1003: 5827, 1047: 5644, 5646, 5645, 5828, 1135: 5829, 1343: 5824},
{10: 5831, 53: 5830},
{13: 1821, 129: 1821, 133: 1821, 179: 1821, 181: 1821, 1821, 185: 1821, 1821, 189: 1821, 203: 1821, 205: 1821, 207: 1821, 209: 1821, 1821, 213: 1821, 217: 1821, 1821, 1821, 593: 1821, 597: 1821, 625: 1821, 748: 1821, 5710, 754: 1821, 766: 1821, 768: 1821, 770: 1821, 772: 1821, 774: 1821, 1821, 777: 1821, 1821, 1821, 1821, 1821, 783: 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821},
{13: 1820, 129: 1820, 133: 1820, 179: 1820, 181: 1820, 1820, 185: 1820, 1820, 189: 1820, 203: 1820, 205: 1820, 207: 1820, 209: 1820, 1820, 213: 1820, 217: 1820, 1820, 1820, 593: 1820, 597: 1820, 625: 1820, 748: 1820, 5647, 754: 1820, 766: 1820, 768: 1820, 770: 1820, 772: 1820, 774: 1820, 1820, 777: 1820, 1820, 1820, 1820, 1820, 783: 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820},
// 2805
{10: 671, 53: 671},
{10: 670, 53: 670},
{10: 669, 53: 669},
{2932, 2932, 2932, 2932, 2932, 2932, 10: 2932, 573: 2932},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 5825, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 5826, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 684: 2843, 741: 2843, 2843, 2843, 5373, 749: 2843, 802: 2843, 2843, 811: 4247, 3217, 3218, 3216, 861: 5237, 977: 5641, 1003: 5827, 1047: 5644, 5646, 5645, 5828, 1135: 5832},
// 2810
{10: 668, 53: 668},
{2933, 2933, 2933, 2933, 2933, 2933, 10: 2933, 573: 2933},
{17: 4649, 593: 4650, 748: 4648, 893: 5835},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 571: 3956, 575: 5837, 625: 4577, 811: 3957, 3217, 3218, 3216, 845: 4576, 946: 5836},
{488, 488, 488, 488, 488, 488, 10: 488, 573: 488, 578: 5839, 1268: 5841},
// 2815
{488, 488, 488, 488, 488, 488, 10: 488, 573: 488, 578: 5839, 1268: 5838},
{2934, 2934, 2934, 2934, 2934, 2934, 10: 2934, 573: 2934},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 571: 3956, 625: 3955, 811: 3957, 3217, 3218, 3216, 845: 3954, 1020: 5840},
{487, 487, 487, 487, 487, 487, 10: 487, 573: 487},
{2935, 2935, 2935, 2935, 2935, 2935, 10: 2935, 573: 2935},
// 2820
{242: 5854},
{233: 5844},
{242: 5845},
{595: 3209, 839: 4086, 854: 5846},
{2940, 2940, 2940, 2940, 2940, 2940, 10: 2940, 247: 5847, 573: 2940, 1106: 5848},
// 2825
{348: 5849},
{2936, 2936, 2936, 2936, 2936, 2936, 10: 2936, 573: 2936},
{571: 5851, 1534: 5850},
{2939, 2939, 2939, 2939, 2939, 2939, 10: 5852, 17: 2939, 19: 2939, 23: 2939, 573: 2939, 575: 2939, 578: 2939, 593: 2939, 597: 2939, 748: 2939},
{486, 486, 486, 486, 486, 486, 10: 486, 17: 486, 19: 486, 23: 486, 573: 486, 575: 486, 578: 486, 593: 486, 597: 486, 748: 486},
// 2830
{571: 5853},
{485, 485, 485, 485, 485, 485, 10: 485, 17: 485, 19: 485, 23: 485, 573: 485, 575: 485, 578: 485, 593: 485, 597: 485, 748: 485},
{595: 3209, 839: 4086, 854: 5855},
{2940, 2940, 2940, 2940, 2940, 2940, 10: 2940, 247: 5847, 573: 2940, 1106: 5856},
{2937, 2937, 2937, 2937, 2937, 2937, 10: 2937, 573: 2937},
// 2835
{9: 627, 32: 627},
{621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 16: 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 569: 621, 621, 572: 621, 621, 575: 621, 577: 621, 621, 580: 621, 587: 621, 621, 621, 593: 621, 605: 621, 646: 621, 694: 621, 748: 621, 621},
{6: 5004, 5008, 5006, 628, 16: 5025, 2592, 5023, 4960, 5027, 5039, 5014, 5043, 5005, 5010, 5007, 5009, 5012, 5013, 5015, 5022, 628, 5033, 5034, 5044, 5020, 5021, 5026, 5028, 5040, 5048, 5041, 5038, 5031, 5036, 5037, 5030, 5032, 5035, 5024, 5045, 5046, 575: 5003, 578: 2592, 580: 5042, 593: 2592, 605: 5857, 748: 2592, 5011, 906: 5016, 933: 5018, 954: 5017, 980: 5019, 988: 5029, 993: 5860},
{620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 16: 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 569: 620, 620, 572: 620, 620, 575: 620, 577: 620, 620, 580: 620, 587: 620, 620, 620, 593: 620, 605: 620, 646: 620, 694: 620, 748: 620, 620},
{571: 5863, 575: 5862},
// 2840
{2950, 2950, 2950, 2950, 2950, 2950, 10: 2950, 573: 2950},
{2949, 2949, 2949, 2949, 2949, 2949, 10: 2949, 573: 2949},
{571: 5866, 575: 5865},
{2952, 2952, 2952, 2952, 2952, 2952, 10: 2952, 573: 2952},
{2951, 2951, 2951, 2951, 2951, 2951, 10: 2951, 573: 2951},
// 2845
{2: 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 11: 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 54: 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 571: 2453, 575: 2453, 591: 4828, 597: 5869, 840: 5868},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 571: 5871, 575: 5873, 811: 5874, 3217, 3218, 3216, 1034: 5872},
{575: 5870},
{2953, 2953, 2953, 2953, 2953, 2953, 2953, 2953, 2953, 2953, 2953, 16: 2953, 2953, 2953, 2953, 2953, 2953, 2953, 2953, 2953, 2953, 2953, 2953, 2953, 2953, 2953, 2953, 2953, 2953, 2953, 2953, 2953, 2953, 2953, 2953, 2953, 2953, 2953, 2953, 2953, 2953, 2953, 2953, 2953, 2953, 2953, 2953, 2953, 2953, 569: 2953, 2953, 572: 2953, 2953, 575: 2953, 577: 2953, 2953, 580: 2953, 587: 2953, 2953, 2953, 593: 2953, 597: 2953, 605: 2953, 646: 2953, 694: 2953, 748: 2953, 2953},
{2956, 2956, 2956, 2956, 2956, 2956, 2956, 2956, 2956, 2956, 2956, 16: 2956, 2956, 2956, 2956, 2956, 2956, 2956, 2956, 2956, 2956, 2956, 2956, 2956, 2956, 2956, 2956, 2956, 2956, 2956, 2956, 2956, 2956, 2956, 2956, 2956, 2956, 2956, 2956, 2956, 2956, 2956, 2956, 2956, 2956, 2956, 2956, 2956, 2956, 569: 2956, 2956, 572: 2956, 2956, 575: 2956, 577: 2956, 2956, 580: 2956, 587: 2956, 2956, 2956, 593: 2956, 597: 2956, 605: 2956, 646: 2956, 694: 2956, 748: 2956, 2956},
// 2850
{2955, 2955, 2955, 2955, 2955, 2955, 2955, 2955, 2955, 2955, 2955, 16: 2955, 2955, 2955, 2955, 2955, 2955, 2955, 2955, 2955, 2955, 2955, 2955, 2955, 2955, 2955, 2955, 2955, 2955, 2955, 2955, 2955, 2955, 2955, 2955, 2955, 2955, 2955, 2955, 2955, 2955, 2955, 2955, 2955, 2955, 2955, 2955, 2955, 2955, 569: 2955, 2955, 572: 2955, 2955, 575: 2955, 577: 2955, 2955, 580: 2955, 587: 2955, 2955, 2955, 593: 2955, 597: 2955, 605: 2955, 646: 2955, 694: 2955, 748: 2955, 2955},
{2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954, 16: 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954, 569: 2954, 2954, 572: 2954, 2954, 575: 2954, 577: 2954, 2954, 580: 2954, 587: 2954, 2954, 2954, 593: 2954, 597: 2954, 605: 2954, 646: 2954, 694: 2954, 748: 2954, 2954},
{2610, 2610, 2610, 2610, 2610, 2610, 2610, 2610, 2610, 2610, 2610, 16: 2610, 2610, 2610, 2610, 2610, 2610, 2610, 2610, 2610, 2610, 2610, 2610, 2610, 2610, 2610, 2610, 2610, 2610, 2610, 2610, 2610, 2610, 2610, 2610, 2610, 2610, 2610, 2610, 2610, 2610, 2610, 2610, 2610, 2610, 2610, 2610, 2610, 2610, 123: 2610, 135: 2610, 2610, 2610, 2610, 2610, 2610, 2610, 2610, 2610, 2610, 2610, 569: 2610, 2610, 572: 2610, 2610, 575: 2610, 577: 2610, 2610, 580: 2610, 587: 2610, 2610, 2610, 593: 2610, 597: 2610, 605: 2610, 646: 2610, 694: 2610, 748: 2610, 2610},
{242: 5880},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 5566, 3217, 3218, 3216, 900: 5877},
// 2855
{3015, 3015, 10: 5567, 233: 5878},
{242: 5879},
{3014, 3014},
{3016, 3016},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 5566, 3217, 3218, 3216, 900: 5882},
// 2860
{2794, 2794, 10: 5567, 572: 5885, 749: 5884, 942: 5883},
{3019, 3019},
{1175, 1175, 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 1175, 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 572: 1175, 741: 5902, 811: 5901, 3217, 3218, 3216, 1009: 5900},
{595: 5890, 674: 4312, 4311, 839: 5888, 952: 5889, 1164: 5887, 1374: 5886},
{2793, 2793, 10: 5898},
// 2865
{2792, 2792, 10: 2792},
{310: 5892, 315: 5894, 369: 5895, 390: 5893},
{268: 5891},
{268: 2642, 310: 2342, 315: 2342, 369: 2342, 390: 2342},
{2785, 2785, 10: 2785},
// 2870
{2790, 2790, 10: 2790},
{2789, 2789, 10: 2789},
{416: 5896, 487: 5897},
{2786, 2786, 10: 2786},
{2788, 2788, 10: 2788},
// 2875
{2787, 2787, 10: 2787},
{595: 5890, 674: 4312, 4311, 839: 5888, 952: 5889, 1164: 5899},
{2791, 2791, 10: 2791},
{2794, 2794, 10: 5904, 572: 5885, 942: 5903},
{1174, 1174, 10: 1174, 53: 1174, 572: 1174},
// 2880
{1172, 1172, 10: 1172, 53: 1172, 572: 1172},
{3018, 3018},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 741: 5906, 811: 5905, 3217, 3218, 3216},
{1173, 1173, 10: 1173, 53: 1173, 572: 1173},
{1171, 1171, 10: 1171, 53: 1171, 572: 1171},
// 2885
{3020, 3020},
{2948, 2948},
{35: 6033, 448: 6032},
{573: 6024},
{760: 6017},
// 2890
{11: 6010},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 761: 5915, 811: 5914, 3217, 3218, 3216},
{2541, 2541, 6: 2541, 2541, 2541, 19: 2541, 22: 2541, 24: 2541, 2541, 2541, 2541, 2541, 2541, 2541, 276: 4961, 749: 2541, 1077: 6008, 1114: 6009},
{214: 2559, 436: 5920, 474: 5921, 630: 5919, 684: 2559, 1251: 5922, 5917, 1341: 5918, 1475: 5916},
{2553, 2553, 131: 2553, 5985, 569: 2553, 2553, 572: 2553, 577: 2553, 587: 2553, 2553, 2553, 646: 2553, 694: 2553, 751: 2553, 1476: 5984},
// 2895
{214: 5972, 684: 5971},
{2577, 2577, 131: 2577, 2577, 569: 2577, 2577, 572: 2577, 577: 2577, 587: 2577, 2577, 2577, 646: 2577, 694: 2577, 751: 2577},
{147: 4173, 175: 4172, 569: 5935, 979: 5936},
{147: 4173, 175: 4172, 569: 5928, 979: 5929},
{2570, 2570, 131: 2570, 2570, 569: 2570, 2570, 572: 2570, 577: 2570, 587: 2570, 2570, 2570, 598: 5924, 646: 2570, 680: 5923, 694: 2570, 751: 2570},
// 2900
{214: 2558, 684: 2558},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 5926},
{595: 3209, 839: 4086, 854: 5925},
{2571, 2571, 131: 2571, 2571, 569: 2571, 2571, 572: 2571, 577: 2571, 587: 2571, 2571, 2571, 646: 2571, 694: 2571, 751: 2571},
{129: 3987, 133: 3995, 154: 3983, 156: 3980, 3982, 3979, 3981, 3985, 3986, 3991, 3990, 3989, 3993, 3994, 3988, 3992, 3984, 606: 3965, 3963, 3964, 3962, 3960, 633: 3977, 3974, 3976, 3975, 3971, 3973, 3972, 3969, 3970, 3968, 3978, 841: 3961, 3959, 927: 3967, 941: 5927},
// 2905
{2572, 2572, 131: 2572, 2572, 569: 2572, 2572, 572: 2572, 577: 2572, 587: 2572, 2572, 2572, 646: 2572, 694: 2572, 751: 2572},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3783, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 5933},
{569: 5930},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 4247, 3217, 3218, 3216, 861: 4248, 943: 5931},
{10: 4250, 53: 5932},
// 2910
{2573, 2573, 131: 2573, 2573, 569: 2573, 2573, 572: 2573, 577: 2573, 587: 2573, 2573, 2573, 646: 2573, 694: 2573, 751: 2573},
{53: 5934, 583: 4002, 4003, 4008, 600: 4004, 650: 4005, 659: 4006, 3999, 4009, 3998, 4007, 4000, 4001},
{2574, 2574, 131: 2574, 2574, 569: 2574, 2574, 572: 2574, 577: 2574, 587: 2574, 2574, 2574, 646: 2574, 694: 2574, 751: 2574},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3783, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 5968},
{569: 5937},
// 2915
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 4247, 3217, 3218, 3216, 861: 4248, 943: 5938},
{10: 4250, 53: 5939},
{2569, 2569, 131: 2569, 2569, 569: 2569, 2569, 572: 2569, 577: 2569, 587: 2569, 2569, 2569, 646: 2569, 680: 5941, 694: 2569, 751: 2569, 1281: 5940},
{2575, 2575, 131: 2575, 2575, 569: 2575, 2575, 572: 2575, 577: 2575, 587: 2575, 2575, 2575, 646: 2575, 694: 2575, 751: 2575},
{569: 5942},
// 2920
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3783, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 5944, 1438: 5943},
{53: 5946},
{53: 2567, 129: 3987, 133: 3995, 154: 3983, 156: 3980, 3982, 3979, 3981, 3985, 3986, 3991, 3990, 3989, 3993, 3994, 3988, 3992, 3984, 583: 4002, 4003, 4008, 600: 4004, 633: 3977, 3974, 3976, 3975, 3971, 3973, 3972, 3969, 3970, 3968, 3978, 650: 4005, 659: 4006, 3999, 4009, 3998, 4007, 4000, 4001, 927: 3967, 941: 5945},
{53: 2566},
{2561, 2561, 11: 5948, 131: 2561, 2561, 569: 2561, 2561, 572: 2561, 577: 2561, 586: 2561, 2561, 2561, 2561, 646: 2561, 694: 2561, 751: 2561, 760: 2561, 1419: 5947},
// 2925
{2565, 2565, 131: 2565, 2565, 569: 2565, 2565, 572: 2565, 577: 2565, 586: 5963, 2565, 2565, 2565, 646: 2565, 694: 2565, 751: 2565, 760: 2565, 1455: 5962},
{573: 5949},
{226: 5950},
{232: 5951},
{569: 5952},
// 2930
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3783, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 5953},
{53: 5954, 583: 4002, 4003, 4008, 600: 4004, 650: 4005, 659: 4006, 3999, 4009, 3998, 4007, 4000, 4001},
{261: 5955},
{573: 5956},
{226: 5957},
// 2935
{232: 5958},
{569: 5959},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3783, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 5960},
{53: 5961, 583: 4002, 4003, 4008, 600: 4004, 650: 4005, 659: 4006, 3999, 4009, 3998, 4007, 4000, 4001},
{2560, 2560, 131: 2560, 2560, 569: 2560, 2560, 572: 2560, 577: 2560, 586: 2560, 2560, 2560, 2560, 646: 2560, 694: 2560, 751: 2560, 760: 2560},
// 2940
{2563, 2563, 131: 2563, 2563, 569: 2563, 2563, 572: 2563, 577: 2563, 587: 2563, 2563, 2563, 646: 2563, 694: 2563, 751: 2563, 760: 5966, 1453: 5965},
{573: 5964},
{2564, 2564, 131: 2564, 2564, 569: 2564, 2564, 572: 2564, 577: 2564, 587: 2564, 2564, 2564, 646: 2564, 694: 2564, 751: 2564, 760: 2564},
{2568, 2568, 131: 2568, 2568, 569: 2568, 2568, 572: 2568, 577: 2568, 587: 2568, 2568, 2568, 646: 2568, 694: 2568, 751: 2568},
{573: 5967},
// 2945
{2562, 2562, 131: 2562, 2562, 569: 2562, 2562, 572: 2562, 577: 2562, 587: 2562, 2562, 2562, 646: 2562, 694: 2562, 751: 2562},
{53: 5969, 583: 4002, 4003, 4008, 600: 4004, 650: 4005, 659: 4006, 3999, 4009, 3998, 4007, 4000, 4001},
{2569, 2569, 131: 2569, 2569, 569: 2569, 2569, 572: 2569, 577: 2569, 587: 2569, 2569, 2569, 646: 2569, 680: 5941, 694: 2569, 751: 2569, 1281: 5970},
{2576, 2576, 131: 2576, 2576, 569: 2576, 2576, 572: 2576, 577: 2576, 587: 2576, 2576, 2576, 646: 2576, 694: 2576, 751: 2576},
{103: 5977, 569: 2579, 1474: 5976},
// 2950
{569: 5973},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3783, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 5974},
{53: 5975, 583: 4002, 4003, 4008, 600: 4004, 650: 4005, 659: 4006, 3999, 4009, 3998, 4007, 4000, 4001},
{2580, 2580, 131: 2580, 2580, 300: 2580, 569: 2580, 2580, 572: 2580, 577: 2580, 587: 2580, 2580, 2580, 646: 2580, 694: 2580, 751: 2580},
{569: 5980},
// 2955
{591: 5978},
{595: 3209, 839: 5979},
{569: 2578},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 2764, 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 4247, 3217, 3218, 3216, 861: 4248, 943: 5981, 1174: 5982},
{10: 4250, 53: 2763},
// 2960
{53: 5983},
{2581, 2581, 131: 2581, 2581, 300: 2581, 569: 2581, 2581, 572: 2581, 577: 2581, 587: 2581, 2581, 2581, 646: 2581, 694: 2581, 751: 2581},
{2557, 2557, 131: 5988, 569: 2557, 2557, 572: 2557, 577: 2557, 587: 2557, 2557, 2557, 646: 2557, 694: 2557, 751: 2557, 1539: 5987},
{595: 3209, 839: 4086, 854: 5986},
{2552, 2552, 131: 2552, 569: 2552, 2552, 572: 2552, 577: 2552, 587: 2552, 2552, 2552, 646: 2552, 694: 2552, 751: 2552},
// 2965
{2551, 2551, 569: 5774, 2551, 572: 2551, 577: 2551, 587: 2551, 2551, 2551, 646: 2551, 694: 2551, 751: 2551, 1280: 5994},
{761: 5989},
{214: 2559, 684: 2559, 1251: 5922, 5917, 1341: 5990},
{2555, 2555, 300: 5992, 569: 2555, 2555, 572: 2555, 577: 2555, 587: 2555, 2555, 2555, 646: 2555, 694: 2555, 751: 2555, 1538: 5991},
{2556, 2556, 569: 2556, 2556, 572: 2556, 577: 2556, 587: 2556, 2556, 2556, 646: 2556, 694: 2556, 751: 2556},
// 2970
{595: 3209, 839: 4086, 854: 5993},
{2554, 2554, 569: 2554, 2554, 572: 2554, 577: 2554, 587: 2554, 2554, 2554, 646: 2554, 694: 2554, 751: 2554},
{2583, 2583, 569: 2583, 2583, 572: 2583, 577: 2583, 587: 2583, 2583, 2583, 646: 2583, 694: 2583, 751: 5996, 1552: 5995},
{2589, 2589, 569: 2589, 2589, 572: 2589, 577: 2589, 587: 2589, 2589, 2589, 646: 2589, 694: 2589},
{343: 5997},
// 2975
{569: 5998},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 5999, 3217, 3218, 3216, 1355: 6000, 1551: 6001},
{60: 6005, 62: 6006, 1426: 6007},
{10: 2585, 53: 2585},
{10: 6002, 53: 6003},
// 2980
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 5999, 3217, 3218, 3216, 1355: 6004},
{2582, 2582, 569: 2582, 2582, 572: 2582, 577: 2582, 587: 2582, 2582, 2582, 646: 2582, 694: 2582},
{10: 2584, 53: 2584},
{10: 2588, 53: 2588},
{10: 2587, 53: 2587},
// 2985
{10: 2586, 53: 2586},
{2943, 2943},
{2942, 2942, 6: 5004, 5008, 5808, 19: 4960, 22: 5014, 24: 5005, 5010, 5007, 5009, 5012, 5013, 5015, 749: 5011, 906: 5016, 954: 5807},
{573: 6011},
{226: 6012},
// 2990
{232: 6013},
{569: 6014},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3783, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 6015},
{53: 6016, 583: 4002, 4003, 4008, 600: 4004, 650: 4005, 659: 4006, 3999, 4009, 3998, 4007, 4000, 4001},
{2944, 2944},
// 2995
{573: 6018},
{226: 6019},
{232: 6020},
{569: 6021},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3783, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 6022},
// 3000
{53: 6023, 583: 4002, 4003, 4008, 600: 4004, 650: 4005, 659: 4006, 3999, 4009, 3998, 4007, 4000, 4001},
{2945, 2945},
{815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 11: 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 54: 815, 815, 815, 815, 815, 815, 5562, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 815, 935: 5561, 951: 6025},
{2880, 2880, 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 5566, 3217, 3218, 3216, 900: 6027, 1499: 6026},
{2946, 2946},
// 3005
{10: 5567, 602: 6028},
{569: 6029},
{573: 5777, 1115: 5776, 1279: 6030},
{10: 5818, 53: 6031},
{2879, 2879},
// 3010
{2947, 2947},
{2941, 2941},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 6037, 811: 6038, 3217, 3218, 3216, 1301: 6036, 1494: 6035},
{213, 213, 10: 6045, 180: 213, 200: 6047, 227: 6048, 1496: 6046, 6044},
{215, 215, 10: 215, 180: 215, 200: 215, 227: 215},
// 3015
{754: 6042},
{204, 204, 10: 204, 180: 204, 200: 204, 227: 204, 754: 6039},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 6040, 811: 6041, 3217, 3218, 3216},
{206, 206, 10: 206, 180: 206, 200: 206, 227: 206},
{205, 205, 10: 205, 180: 205, 200: 205, 227: 205},
// 3020
{600: 6043},
{207, 207, 10: 207, 180: 207, 200: 207, 227: 207},
{209, 209, 180: 6051, 1495: 6050},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 6037, 811: 6038, 3217, 3218, 3216, 1301: 6049},
{212, 212, 180: 212},
// 3025
{211, 211, 180: 211},
{210, 210, 180: 210},
{214, 214, 10: 214, 180: 214, 200: 214, 227: 214},
{216, 216},
{208, 208},
// 3030
{31: 224, 56: 224, 183: 224, 569: 224, 589: 224, 595: 224},
{56: 5501, 569: 6053, 589: 5502, 1018: 5517},
{229, 229},
{595: 3209, 839: 6059},
{595: 3209, 839: 6058},
// 3035
{226, 226},
{227, 227},
{228, 228},
{173: 6062, 646: 6061, 1136: 6063},
{2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 11: 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 54: 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 572: 2455, 600: 2455, 618: 2455},
// 3040
{2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 11: 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 54: 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 572: 2454, 600: 2454, 618: 2454},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 4149, 924: 6064},
{230, 230, 10: 4151},
{598: 6068},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 4247, 3217, 3218, 3216, 861: 6067},
// 3045
{598: 231},
{595: 3209, 839: 6069},
{330: 6071, 572: 235, 589: 235, 626: 235, 751: 235, 843: 235, 1407: 6070},
{572: 3075, 589: 3060, 626: 3059, 751: 3188, 843: 3040, 856: 6074, 862: 3187, 3041, 6078, 866: 6079, 6077, 875: 3042, 879: 6076, 1514: 6075},
{367: 6072},
// 3050
{183: 6073, 572: 234, 589: 234, 626: 234, 751: 234, 843: 234},
{572: 233, 589: 233, 626: 233, 751: 233, 843: 233},
{751: 3188, 843: 3040, 862: 6082, 6080, 875: 6081},
{240, 240},
{239, 239},
// 3055
{238, 238},
{237, 237},
{236, 236},
{2477, 2477},
{2476, 2476},
// 3060
{473, 473, 579: 473},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 6095, 1344: 6096, 1541: 6094},
{249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 11: 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 54: 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 600: 249},
{248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 11: 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 54: 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 600: 248},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 6087, 924: 6088},
// 3065
{1320, 1320, 10: 1320, 573: 6089},
{222, 222, 10: 4151},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 6091, 811: 5566, 3217, 3218, 3216, 900: 6090},
{221, 221, 10: 5567},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 5566, 3217, 3218, 3216, 900: 6092},
// 3070
{10: 5567, 53: 6093},
{220, 220},
{250, 250, 10: 6102},
{771: 6098, 808: 6099, 1448: 6097},
{242, 242, 10: 242},
// 3075
{247, 247, 10: 247},
{246, 246, 10: 246, 60: 6101},
{244, 244, 10: 244, 60: 6100},
{243, 243, 10: 243},
{245, 245, 10: 245},
// 3080
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 6095, 1344: 6103},
{241, 241, 10: 241},
{251, 251},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 6106, 924: 6107},
{1320, 1320, 10: 1320, 573: 6108},
// 3085
{219, 219, 10: 4151},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 6110, 811: 5566, 3217, 3218, 3216, 900: 6109},
{218, 218, 10: 5567},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 5566, 3217, 3218, 3216, 900: 6111},
{10: 5567, 53: 6112},
// 3090
{217, 217},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 6114},
{569: 6115, 597: 2752, 603: 2752, 1176: 6116},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 2758, 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 668: 3783, 811: 4247, 3217, 3218, 3216, 816: 6149, 861: 6148, 1175: 6147, 1392: 6146, 6150},
{597: 6117, 603: 268, 1256: 6118},
// 3095
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 4121, 3217, 3218, 3216, 819: 6141, 1255: 6140, 1446: 6139},
{603: 6119},
{569: 3076, 571: 6122, 3075, 587: 3074, 646: 3073, 694: 3069, 815: 6120, 846: 6121, 3070, 3071, 3072, 3081, 3079, 3078, 3077, 856: 4066, 6125, 6124, 1431: 6123},
{252, 252, 572: 252, 580: 1080, 590: 1080, 592: 1080, 596: 4079, 598: 4078, 604: 4077, 882: 4080, 4081},
{255, 255, 572: 255, 580: 1081, 590: 1081, 592: 1081},
// 3100
{297, 297, 257: 6135, 572: 297, 1230: 6136},
{263, 263, 572: 6126, 1105: 6127},
{254, 254, 572: 254},
{253, 253, 572: 253},
{56: 6130, 1254: 6129, 1445: 6128},
// 3105
{256, 256},
{262, 262, 10: 6133},
{261, 261, 10: 261},
{259, 259, 10: 259, 591: 6131},
{571: 3844, 583: 5225, 5226, 586: 3835, 595: 3839, 666: 3834, 3836, 674: 3838, 3837, 3842, 678: 3843, 686: 3841, 817: 5224, 3840, 1038: 6132},
// 3110
{258, 258, 10: 258},
{56: 6130, 1254: 6134},
{260, 260, 10: 260},
{571: 6138},
{263, 263, 572: 6126, 1105: 6137},
// 3115
{257, 257},
{296, 296, 572: 296, 588: 296, 296, 602: 296},
{267, 267, 10: 6144, 572: 267, 603: 267},
{265, 265, 10: 265, 572: 265, 603: 265},
{591: 6142},
// 3120
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 4119, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4115, 932: 6143},
{264, 264, 10: 264, 572: 264, 603: 264},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 4121, 3217, 3218, 3216, 819: 6141, 1255: 6145},
{266, 266, 10: 266, 572: 266, 603: 266},
{10: 6152, 53: 2757},
// 3125
{10: 2756, 53: 2756},
{10: 2754, 53: 2754},
{10: 2753, 53: 2753},
{53: 6151},
{2751, 2751, 572: 2751, 597: 2751, 603: 2751},
// 3130
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 668: 3783, 811: 4247, 3217, 3218, 3216, 816: 6149, 861: 6148, 1175: 6153},
{10: 2755, 53: 2755},
{60: 299, 872: 6158, 1028: 299, 1450: 6157},
{571: 6156},
{223, 223},
// 3135
{60: 6160, 1028: 291, 1447: 6159},
{60: 298, 1028: 298},
{1028: 6161},
{1028: 290},
{571: 6162},
// 3140
{257: 6135, 588: 297, 297, 602: 297, 1230: 6163},
{588: 6164, 6165, 602: 2519, 1215: 6166},
{2518, 2518, 569: 2518, 2518, 572: 2518, 577: 2518, 587: 2518, 602: 2518, 646: 2518, 694: 2518},
{2517, 2517, 569: 2517, 2517, 572: 2517, 577: 2517, 587: 2517, 602: 2517, 646: 2517, 694: 2517},
{602: 6167},
// 3145
{646: 6168},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 6169},
{293, 293, 147: 293, 175: 293, 569: 293, 572: 293, 588: 293, 597: 293, 748: 6171, 763: 293, 1389: 6170},
{289, 289, 147: 4173, 175: 4172, 569: 289, 572: 289, 588: 289, 597: 289, 763: 289, 979: 4171, 1224: 6174},
{597: 6172},
// 3150
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 571: 3956, 625: 4577, 811: 3957, 3217, 3218, 3216, 845: 4576, 946: 6173},
{292, 292, 147: 292, 175: 292, 569: 292, 572: 292, 588: 292, 597: 292, 763: 292},
{274, 274, 569: 274, 572: 274, 588: 274, 597: 274, 763: 4201, 1253: 6175},
{295, 295, 569: 295, 572: 295, 588: 6177, 597: 295, 1429: 6176},
{2752, 2752, 569: 6115, 572: 2752, 597: 2752, 1176: 6180},
// 3155
{595: 3209, 839: 6178},
{763: 6179},
{294, 294, 569: 294, 572: 294, 597: 294},
{268, 268, 572: 268, 597: 6117, 1256: 6181},
{263, 263, 572: 6126, 1105: 6182},
// 3160
{300, 300},
{10: 357, 56: 357, 570: 357, 603: 357, 668: 2202, 752: 357, 765: 2202},
{10: 322, 569: 322, 322, 603: 322, 668: 2167, 752: 322, 765: 2167},
{10: 336, 569: 336, 336, 603: 336, 668: 2139, 752: 336, 765: 2139},
{10: 323, 569: 323, 323, 603: 323, 668: 2135, 752: 323, 765: 2135},
// 3165
{10: 312, 569: 312, 312, 603: 312, 668: 2095, 752: 312, 765: 2095},
{10: 332, 569: 332, 332, 603: 332, 668: 2014, 752: 332, 765: 2014},
{10: 337, 569: 337, 337, 603: 337, 668: 2007, 752: 337, 765: 2007},
{374: 6291, 408: 6292, 668: 1988, 765: 1988},
{10: 324, 569: 324, 324, 603: 324, 668: 1985, 752: 324, 765: 1985},
// 3170
{10: 313, 569: 313, 313, 603: 313, 668: 1982, 752: 313, 765: 1982},
{668: 6289, 765: 6288},
{10: 1000, 570: 1000, 603: 1000, 668: 479, 752: 1000, 765: 479},
{10: 999, 570: 999, 603: 999, 752: 999},
{10: 353, 56: 6287, 570: 353, 603: 353, 752: 353},
// 3175
{10: 355, 570: 355, 603: 355, 752: 355},
{10: 354, 570: 354, 603: 354, 752: 354},
{603: 6285},
{10: 333, 569: 333, 333, 602: 6283, 333, 752: 333},
{10: 350, 570: 350, 603: 350, 752: 350},
// 3180
{10: 6235, 570: 6236, 603: 6237},
{10: 348, 569: 6232, 348, 603: 348, 752: 348},
{10: 346, 265: 6231, 569: 346, 346, 603: 346, 752: 346},
{10: 344, 365: 6230, 569: 344, 344, 603: 344, 752: 344},
{10: 343, 22: 6224, 152: 6223, 6226, 221: 6227, 244: 6225, 365: 6228, 569: 343, 343, 603: 343, 752: 343},
// 3185
{10: 340, 569: 340, 340, 603: 340, 752: 340},
{10: 339, 569: 339, 339, 603: 339, 752: 339},
{10: 338, 221: 6222, 569: 338, 338, 603: 338, 752: 338},
{10: 335, 569: 335, 335, 603: 335, 752: 335},
{10: 334, 569: 334, 334, 603: 334, 752: 334},
// 3190
{153: 6221, 1195: 6220},
{10: 330, 569: 330, 330, 603: 330, 752: 330},
{1032: 6219},
{10: 328, 569: 328, 328, 603: 328, 752: 328},
{10: 325, 569: 325, 325, 603: 325, 752: 325},
// 3195
{173: 6218},
{10: 320, 569: 320, 320, 603: 320, 752: 320},
{10: 329, 569: 329, 329, 603: 329, 752: 329},
{10: 331, 569: 331, 331, 603: 331, 752: 331},
{10: 318, 569: 318, 318, 603: 318, 752: 318},
// 3200
{10: 316, 569: 316, 316, 603: 316, 752: 316},
{10: 342, 569: 342, 342, 603: 342, 752: 342},
{10: 341, 569: 341, 341, 603: 341, 752: 341},
{173: 6229},
{10: 319, 569: 319, 319, 603: 319, 752: 319},
// 3205
{10: 317, 569: 317, 317, 603: 317, 752: 317},
{10: 315, 569: 315, 315, 603: 315, 752: 315},
{10: 321, 569: 321, 321, 603: 321, 752: 321},
{10: 314, 569: 314, 314, 603: 314, 752: 314},
{10: 345, 569: 345, 345, 603: 345, 752: 345},
// 3210
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 4247, 3217, 3218, 3216, 861: 4248, 943: 6233},
{10: 4250, 53: 6234},
{10: 347, 570: 347, 603: 347, 752: 347},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 6183, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 6185, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 6191, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 6187, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 6184, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 6192, 3404, 3279, 3671, 6186, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 6189, 3306, 3307, 3560, 6190, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 6188, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 571: 6194, 601: 6217, 626: 6211, 694: 6200, 745: 6215, 749: 6210, 751: 6213, 755: 6204, 762: 6205, 767: 6209, 782: 6206, 811: 3957, 3217, 3218, 3216, 843: 6208, 845: 6193, 938: 6195, 950: 6199, 990: 6212, 1007: 6214, 1094: 6196, 1119: 6197, 6203, 1127: 6198, 6282, 1139: 6207, 1143: 6216},
{2: 311, 311, 311, 311, 311, 311, 311, 311, 11: 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 54: 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 6249, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 600: 311, 646: 6248, 1011: 6250, 1262: 6251},
// 3215
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 571: 3956, 670: 6239, 811: 3957, 3217, 3218, 3216, 845: 6238, 895: 6240, 1015: 6241},
{1013, 1013, 6: 1013, 10: 1013, 16: 1013, 54: 1013, 1013, 57: 1013, 1013, 1013, 153: 1013, 215: 1013, 572: 1013, 579: 1013, 591: 1013, 668: 6246, 696: 1013, 752: 1013, 757: 1013, 764: 1013, 6245},
{1476, 1476, 6: 1476, 10: 1476, 16: 1476, 54: 1476, 1476, 57: 1476, 1476, 1476, 153: 1476, 215: 1476, 569: 4586, 572: 1476, 579: 1476, 591: 1476, 696: 1476, 752: 1476, 757: 1476, 764: 1476, 1272: 6244},
{1009, 1009, 10: 1009, 572: 1009},
{301, 301, 10: 6242},
// 3220
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 571: 3956, 670: 6239, 811: 3957, 3217, 3218, 3216, 845: 6238, 895: 6243},
{1008, 1008, 10: 1008, 572: 1008},
{1010, 1010, 6: 1010, 10: 1010, 16: 1010, 54: 1010, 1010, 57: 1010, 1010, 1010, 153: 1010, 215: 1010, 572: 1010, 579: 1010, 591: 1010, 696: 1010, 752: 1010, 757: 1010, 764: 1010},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 571: 3956, 811: 3957, 3217, 3218, 3216, 845: 6247},
{1011, 1011, 6: 1011, 10: 1011, 16: 1011, 54: 1011, 1011, 57: 1011, 1011, 1011, 153: 1011, 215: 1011, 572: 1011, 579: 1011, 591: 1011, 696: 1011, 752: 1011, 757: 1011, 764: 1011},
// 3225
{1012, 1012, 6: 1012, 10: 1012, 16: 1012, 54: 1012, 1012, 57: 1012, 1012, 1012, 153: 1012, 215: 1012, 572: 1012, 579: 1012, 591: 1012, 696: 1012, 752: 1012, 757: 1012, 764: 1012},
{2: 310, 310, 310, 310, 310, 310, 310, 310, 11: 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 54: 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 600: 310},
{2: 309, 309, 309, 309, 309, 309, 309, 309, 11: 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 54: 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 600: 309},
{2: 308, 308, 308, 308, 308, 308, 308, 308, 11: 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 54: 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 600: 308},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 6252, 811: 6253, 3217, 3218, 3216, 1289: 6254},
// 3230
{603: 307, 752: 307, 754: 6280},
{603: 303, 752: 303, 754: 6277},
{603: 6255},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 571: 3956, 670: 6239, 811: 3957, 3217, 3218, 3216, 845: 6238, 895: 6256, 1041: 6257, 1073: 6258},
{410, 410, 6: 410, 10: 410, 16: 410, 54: 410, 410, 57: 410, 410, 410, 215: 6262, 572: 410, 764: 410, 1379: 6261},
// 3235
{457, 457, 6: 457, 10: 457, 16: 457, 54: 457, 457, 57: 457, 457, 457, 572: 457, 764: 457},
{302, 302, 10: 6259},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 571: 3956, 670: 6239, 811: 3957, 3217, 3218, 3216, 845: 6238, 895: 6256, 1041: 6260},
{456, 456, 6: 456, 10: 456, 16: 456, 54: 456, 456, 57: 456, 456, 456, 572: 456, 764: 456},
{458, 458, 6: 458, 10: 458, 16: 458, 54: 458, 458, 57: 458, 458, 458, 572: 458, 764: 458},
// 3240
{572: 6264, 761: 6263},
{16: 6275, 571: 6272, 1044: 6274},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 571: 3956, 811: 3957, 3217, 3218, 3216, 845: 6266, 1380: 6265},
{408, 408, 6: 408, 10: 408, 16: 408, 54: 408, 408, 57: 408, 408, 408, 572: 408, 577: 6268, 761: 6267, 764: 408},
{404, 404, 6: 404, 10: 404, 16: 404, 54: 404, 404, 57: 404, 404, 404, 572: 404, 577: 404, 761: 404, 764: 404},
// 3245
{571: 6272, 1044: 6273},
{571: 6270, 676: 6271, 1237: 6269},
{406, 406, 6: 406, 10: 406, 16: 406, 54: 406, 406, 57: 406, 406, 406, 572: 406, 764: 406},
{403, 403, 6: 403, 10: 403, 16: 403, 54: 403, 403, 57: 403, 403, 403, 572: 403, 764: 403},
{402, 402, 6: 402, 10: 402, 16: 402, 54: 402, 402, 57: 402, 402, 402, 572: 402, 764: 402},
// 3250
{1005, 1005, 6: 1005, 10: 1005, 16: 1005, 53: 1005, 1005, 1005, 57: 1005, 1005, 1005, 572: 1005, 764: 1005},
{407, 407, 6: 407, 10: 407, 16: 407, 54: 407, 407, 57: 407, 407, 407, 572: 407, 764: 407},
{409, 409, 6: 409, 10: 409, 16: 409, 54: 409, 409, 57: 409, 409, 409, 572: 409, 764: 409},
{571: 6270, 676: 6271, 1237: 6276},
{405, 405, 6: 405, 10: 405, 16: 405, 54: 405, 405, 57: 405, 405, 405, 572: 405, 764: 405},
// 3255
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 6278, 811: 6279, 3217, 3218, 3216},
{603: 305, 752: 305},
{603: 304, 752: 304},
{600: 6281},
{603: 306, 752: 306},
// 3260
{10: 349, 570: 349, 603: 349, 752: 349},
{368: 6284},
{10: 351, 570: 351, 603: 351, 752: 351},
{368: 6286},
{10: 352, 570: 352, 603: 352, 752: 352},
// 3265
{10: 356, 56: 356, 570: 356, 603: 356, 752: 356},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 571: 3956, 811: 3957, 3217, 3218, 3216, 845: 6290},
{1001, 1001, 10: 1001, 570: 1001, 603: 1001, 752: 1001},
{1002, 1002, 10: 1002, 570: 1002, 603: 1002, 752: 1002},
{10: 327, 569: 327, 327, 603: 327, 752: 327},
// 3270
{10: 326, 569: 326, 326, 603: 326, 752: 326},
{570: 6335, 668: 2111, 765: 2111},
{10: 6235, 570: 6295, 752: 6296},
{2: 311, 311, 311, 311, 311, 311, 311, 311, 11: 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 54: 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 6249, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 600: 311, 646: 6248, 1011: 6250, 1262: 6298},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 571: 3956, 670: 6239, 811: 3957, 3217, 3218, 3216, 845: 6238, 895: 6240, 1015: 6297},
// 3275
{364, 364, 10: 6242},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 6252, 811: 6253, 3217, 3218, 3216, 1289: 6299},
{752: 6300},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 571: 3956, 670: 6239, 811: 3957, 3217, 3218, 3216, 845: 6238, 895: 6256, 1041: 6257, 1073: 6301},
{447, 447, 10: 6259, 572: 447, 764: 6303, 1124: 6302, 6304},
// 3280
{446, 446, 6: 446, 16: 446, 54: 446, 446, 57: 446, 446, 446, 572: 446},
{187: 6324, 190: 6322, 196: 6325, 6323, 6326, 440: 6317, 488: 6319, 1126: 6321, 1501: 6320, 1526: 6318},
{363, 363, 572: 6306, 1362: 6305},
{366, 366},
{191: 6310, 6308, 6309, 6311, 1007: 6307},
// 3285
{1032: 6316},
{595: 3209, 839: 6315},
{595: 3209, 839: 6314},
{595: 3209, 839: 6313},
{595: 3209, 839: 6312},
// 3290
{358, 358},
{359, 359},
{360, 360},
{361, 361},
{362, 362},
// 3295
{445, 445, 6: 445, 16: 445, 54: 445, 445, 57: 445, 445, 445, 572: 445},
{444, 444, 6: 444, 16: 444, 54: 444, 444, 57: 444, 444, 444, 572: 444},
{443, 443, 6: 443, 16: 443, 54: 443, 443, 57: 443, 443, 443, 572: 443},
{442, 442, 6: 442, 16: 442, 54: 442, 442, 57: 442, 442, 442, 187: 6324, 190: 6322, 196: 6325, 6323, 6326, 572: 442, 606: 6332, 1126: 6333},
{441, 441, 6: 441, 16: 441, 54: 441, 441, 57: 441, 441, 441, 187: 441, 190: 441, 196: 441, 441, 441, 572: 441, 606: 441},
// 3300
{571: 6331},
{571: 6330},
{571: 6329},
{571: 6328},
{571: 6327},
// 3305
{434, 434, 6: 434, 16: 434, 54: 434, 434, 57: 434, 434, 434, 187: 434, 190: 434, 196: 434, 434, 434, 572: 434, 606: 434},
{435, 435, 6: 435, 16: 435, 54: 435, 435, 57: 435, 435, 435, 187: 435, 190: 435, 196: 435, 435, 435, 572: 435, 606: 435},
{436, 436, 6: 436, 16: 436, 54: 436, 436, 57: 436, 436, 436, 187: 436, 190: 436, 196: 436, 436, 436, 572: 436, 606: 436},
{437, 437, 6: 437, 16: 437, 54: 437, 437, 57: 437, 437, 437, 187: 437, 190: 437, 196: 437, 437, 437, 572: 437, 606: 437},
{438, 438, 6: 438, 16: 438, 54: 438, 438, 57: 438, 438, 438, 187: 438, 190: 438, 196: 438, 438, 438, 572: 438, 606: 438},
// 3310
{187: 6324, 190: 6322, 196: 6325, 6323, 6326, 1126: 6334},
{439, 439, 6: 439, 16: 439, 54: 439, 439, 57: 439, 439, 439, 187: 439, 190: 439, 196: 439, 439, 439, 572: 439, 606: 439},
{440, 440, 6: 440, 16: 440, 54: 440, 440, 57: 440, 440, 440, 187: 440, 190: 440, 196: 440, 440, 440, 572: 440, 606: 440},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 571: 3956, 670: 6239, 811: 3957, 3217, 3218, 3216, 845: 6238, 895: 6336},
{752: 6337},
// 3315
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 571: 3956, 670: 6239, 811: 3957, 3217, 3218, 3216, 845: 6238, 895: 6240, 1015: 6338},
{363, 363, 10: 6242, 572: 6306, 1362: 6339},
{365, 365},
{367: 6341, 400: 6343, 588: 6344, 597: 6345, 990: 6342},
{371, 371, 572: 6358, 599: 6356, 1297: 6357},
// 3320
{1032: 6355},
{595: 3209, 839: 6354},
{595: 3209, 839: 6353},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 6348, 3217, 3218, 3216, 1123: 6347, 1296: 6346},
{372, 372, 10: 6351},
// 3325
{369, 369, 10: 369},
{591: 6349},
{571: 3844, 586: 3835, 595: 3839, 666: 3834, 3836, 674: 3838, 3837, 3842, 678: 3843, 686: 3841, 817: 6350, 3840},
{367, 367, 10: 367},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 6348, 3217, 3218, 3216, 1123: 6352},
// 3330
{368, 368, 10: 368},
{373, 373},
{374, 374},
{375, 375},
{571: 6360},
// 3335
{376, 376},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 6348, 3217, 3218, 3216, 1123: 6347, 1296: 6359},
{370, 370, 10: 6351},
{371, 371, 572: 6358, 1297: 6361},
{377, 377},
// 3340
{2611, 2611, 10: 2611, 17: 2611, 19: 2611, 23: 2611, 575: 2611, 578: 2611, 593: 2611, 2611, 597: 2611, 603: 2611, 619: 2611, 748: 2611, 752: 2611, 804: 2611, 2611},
{470, 470},
{2: 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 11: 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 54: 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 571: 1120, 574: 1120, 1120, 1120, 581: 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 593: 1120, 595: 1120, 600: 1120, 602: 1120, 1120, 613: 1120, 618: 1120, 625: 1120, 1120, 651: 1120, 658: 1120, 666: 1120, 1120, 1120, 670: 1120, 674: 1120, 1120, 1120, 678: 1120, 1120, 1120, 1120, 1120, 1120, 685: 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 695: 1120, 697: 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 750: 1120, 755: 1120, 869: 1120, 1120, 872: 1120, 874: 1120, 876: 1120, 880: 1120, 889: 1120, 1120, 1120},
{2: 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 11: 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 54: 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 588: 1118, 600: 1118, 602: 1118, 1118, 682: 1118, 872: 1118, 874: 1118, 876: 1118},
{2: 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 11: 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 54: 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 588: 1325, 600: 1325, 682: 1325, 872: 6367, 874: 6369, 876: 6368, 986: 6370, 1035: 6371},
// 3345
{2: 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 11: 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 54: 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 571: 1328, 574: 1328, 1328, 1328, 581: 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 593: 1328, 595: 1328, 600: 1328, 602: 1328, 1328, 613: 1328, 618: 1328, 625: 1328, 1328, 651: 1328, 658: 1328, 666: 1328, 1328, 1328, 670: 1328, 674: 1328, 1328, 1328, 678: 1328, 1328, 1328, 1328, 1328, 1328, 685: 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 695: 1328, 697: 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 750: 1328, 755: 1328, 869: 1328, 1328, 872: 1328, 874: 1328, 876: 1328, 880: 1328, 889: 1328, 1328, 1328},
{2: 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 11: 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 54: 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 571: 1327, 574: 1327, 1327, 1327, 581: 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 593: 1327, 595: 1327, 600: 1327, 602: 1327, 1327, 613: 1327, 618: 1327, 625: 1327, 1327, 651: 1327, 658: 1327, 666: 1327, 1327, 1327, 670: 1327, 674: 1327, 1327, 1327, 678: 1327, 1327, 1327, 1327, 1327, 1327, 685: 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 695: 1327, 697: 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 750: 1327, 755: 1327, 869: 1327, 1327, 872: 1327, 874: 1327, 876: 1327, 880: 1327, 889: 1327, 1327, 1327},
{2: 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 11: 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 54: 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 571: 1326, 574: 1326, 1326, 1326, 581: 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 593: 1326, 595: 1326, 600: 1326, 602: 1326, 1326, 613: 1326, 618: 1326, 625: 1326, 1326, 651: 1326, 658: 1326, 666: 1326, 1326, 1326, 670: 1326, 674: 1326, 1326, 1326, 678: 1326, 1326, 1326, 1326, 1326, 1326, 685: 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 695: 1326, 697: 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 750: 1326, 755: 1326, 869: 1326, 1326, 872: 1326, 874: 1326, 876: 1326, 880: 1326, 889: 1326, 1326, 1326},
{2: 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 11: 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 54: 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 588: 1324, 600: 1324, 602: 1324, 1324, 682: 1324},
{2: 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 11: 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 54: 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 588: 4954, 600: 2236, 682: 2236, 1008: 6372},
// 3350
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 6381, 600: 4148, 682: 6376, 811: 4147, 3217, 3218, 3216, 6380, 844: 6379, 934: 6378, 939: 6377, 6375, 1005: 6373, 1040: 6374},
{1198, 1198, 10: 1198, 53: 1198, 570: 1198, 572: 1198, 579: 1198, 1198, 590: 1198, 592: 1198, 594: 1198, 596: 1198, 1198, 1198, 1198, 601: 1198, 1198, 604: 1198, 611: 1198, 1198, 614: 1198},
{10: 6431, 597: 6500},
{10: 1196, 581: 6394, 6395, 597: 6485, 613: 6393, 616: 6396, 620: 6392, 6397, 6398, 960: 6391, 966: 6390},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 6482, 3217, 3218, 3216},
// 3355
{1194, 1194, 10: 1194, 53: 1194, 570: 1194, 572: 1194, 579: 1194, 1194, 1194, 1194, 590: 1194, 592: 1194, 594: 1194, 596: 1194, 1194, 1194, 1194, 601: 1194, 1194, 604: 1194, 611: 1194, 1194, 1194, 1194, 616: 1194, 620: 1194, 1194, 1194, 624: 1194},
{1193, 1193, 10: 1193, 53: 1193, 570: 1193, 572: 1193, 579: 1193, 1193, 1193, 1193, 590: 1193, 592: 1193, 594: 1193, 596: 1193, 1193, 1193, 1193, 601: 1193, 1193, 604: 1193, 611: 1193, 1193, 1193, 1193, 616: 1193, 620: 1193, 1193, 1193, 624: 1193},
{1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 570: 1189, 572: 1189, 6435, 577: 1189, 579: 1189, 1189, 1189, 1189, 588: 1189, 590: 1189, 592: 1189, 594: 1189, 596: 1189, 1189, 1189, 1189, 601: 1189, 1189, 604: 1189, 1189, 611: 1189, 1189, 1189, 1189, 1189, 1189, 620: 1189, 1189, 1189, 624: 1189, 631: 1189, 776: 1189, 985: 6434},
{1187, 1187, 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 1187, 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 1187, 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 570: 1187, 572: 1187, 577: 6388, 579: 1187, 1187, 1187, 1187, 590: 1187, 592: 1187, 594: 1187, 596: 1187, 1187, 1187, 1187, 601: 1187, 1187, 604: 1187, 611: 1187, 1187, 1187, 1187, 616: 1187, 620: 1187, 1187, 1187, 624: 1187, 811: 6387, 3217, 3218, 3216, 1066: 6386, 6385},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 6381, 572: 3075, 587: 3074, 600: 4148, 646: 3073, 682: 6376, 694: 3069, 811: 4147, 3217, 3218, 3216, 6384, 844: 6379, 846: 4067, 3070, 3071, 3072, 3081, 3079, 3078, 3077, 856: 4066, 4069, 4068, 934: 6378, 939: 6377, 6383, 1005: 6373, 1040: 6382},
// 3360
{10: 6431, 53: 6432},
{1196, 1196, 10: 1196, 53: 1196, 570: 1196, 572: 1196, 579: 1196, 1196, 6394, 6395, 590: 1196, 592: 1196, 594: 1196, 596: 1196, 1196, 1196, 1196, 601: 1196, 1196, 604: 1196, 611: 1196, 1196, 6393, 1196, 616: 6396, 620: 6392, 6397, 6398, 960: 6391, 966: 6390},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 1187, 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 4212, 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 577: 6388, 580: 1080, 1187, 1187, 590: 1080, 592: 1080, 596: 4079, 598: 4078, 604: 4077, 613: 1187, 616: 1187, 620: 1187, 1187, 1187, 811: 6387, 3217, 3218, 3216, 882: 4080, 4081, 1066: 6386, 6385},
{1191, 1191, 10: 1191, 53: 1191, 570: 1191, 572: 1191, 579: 1191, 1191, 1191, 1191, 590: 1191, 592: 1191, 594: 1191, 596: 1191, 1191, 1191, 1191, 601: 1191, 1191, 604: 1191, 611: 1191, 1191, 1191, 1191, 616: 1191, 620: 1191, 1191, 1191, 624: 1191},
{1186, 1186, 10: 1186, 53: 1186, 570: 1186, 572: 1186, 579: 1186, 1186, 1186, 1186, 588: 1186, 590: 1186, 592: 1186, 594: 1186, 596: 1186, 1186, 1186, 1186, 601: 1186, 1186, 604: 1186, 1186, 611: 1186, 1186, 1186, 1186, 1186, 1186, 620: 1186, 1186, 1186, 624: 1186, 631: 1186, 776: 1186},
// 3365
{1185, 1185, 10: 1185, 53: 1185, 570: 1185, 572: 1185, 579: 1185, 1185, 1185, 1185, 588: 1185, 590: 1185, 592: 1185, 594: 1185, 596: 1185, 1185, 1185, 1185, 601: 1185, 1185, 604: 1185, 1185, 611: 1185, 1185, 1185, 1185, 1185, 1185, 620: 1185, 1185, 1185, 624: 1185, 631: 1185, 776: 1185},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 6389, 3217, 3218, 3216},
{1184, 1184, 10: 1184, 53: 1184, 570: 1184, 572: 1184, 579: 1184, 1184, 1184, 1184, 588: 1184, 590: 1184, 592: 1184, 594: 1184, 596: 1184, 1184, 1184, 1184, 601: 1184, 1184, 604: 1184, 1184, 611: 1184, 1184, 1184, 1184, 1184, 1184, 620: 1184, 1184, 1184, 624: 1184, 631: 1184, 776: 1184},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 6381, 600: 4148, 811: 4147, 3217, 3218, 3216, 6380, 844: 6379, 934: 6378, 939: 6377, 6424},
{616: 1154, 1060: 6411, 1278: 6415},
// 3370
{581: 6394, 6395, 616: 6408, 960: 6409},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 6381, 600: 4148, 811: 4147, 3217, 3218, 3216, 6380, 844: 6379, 934: 6378, 939: 6377, 6401},
{616: 1156, 1060: 1156},
{616: 1155, 1060: 1155},
{2: 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 11: 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 54: 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 600: 1152},
// 3375
{616: 6400},
{616: 6399},
{2: 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 11: 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 54: 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 600: 1150},
{2: 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 11: 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 54: 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 600: 1151},
{1159, 1159, 10: 1159, 53: 1159, 570: 6402, 572: 1159, 579: 6403, 1159, 1159, 1159, 590: 1159, 592: 1159, 594: 1159, 596: 1159, 1159, 1159, 1159, 601: 1159, 1159, 604: 1159, 611: 1159, 1159, 1159, 1159, 616: 1159, 620: 1159, 1159, 1159, 624: 1159, 960: 6391, 966: 6390},
// 3380
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 6407},
{569: 6404},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 4247, 3217, 3218, 3216, 861: 4248, 943: 6405},
{10: 4250, 53: 6406},
{1157, 1157, 10: 1157, 53: 1157, 570: 1157, 572: 1157, 579: 1157, 1157, 1157, 1157, 590: 1157, 592: 1157, 594: 1157, 596: 1157, 1157, 1157, 1157, 601: 1157, 1157, 604: 1157, 611: 1157, 1157, 1157, 1157, 616: 1157, 620: 1157, 1157, 1157, 624: 1157},
// 3385
{1158, 1158, 10: 1158, 53: 1158, 570: 1158, 572: 1158, 579: 1158, 1158, 1158, 1158, 590: 1158, 592: 1158, 594: 1158, 596: 1158, 1158, 1158, 1158, 601: 1158, 1158, 604: 1158, 606: 3965, 3963, 3964, 3962, 3960, 1158, 1158, 1158, 1158, 616: 1158, 620: 1158, 1158, 1158, 624: 1158, 841: 3961, 3959},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 6381, 600: 4148, 811: 4147, 3217, 3218, 3216, 6380, 844: 6379, 934: 6378, 939: 6377, 6414},
{616: 1154, 1060: 6411, 1278: 6410},
{616: 6412},
{616: 1153},
// 3390
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 6381, 600: 4148, 811: 4147, 3217, 3218, 3216, 6380, 844: 6379, 934: 6378, 939: 6377, 6413},
{1160, 1160, 10: 1160, 53: 1160, 570: 1160, 572: 1160, 579: 1160, 1160, 1160, 1160, 590: 1160, 592: 1160, 594: 1160, 596: 1160, 1160, 1160, 1160, 601: 1160, 1160, 604: 1160, 611: 1160, 1160, 1160, 1160, 616: 1160, 620: 1160, 1160, 1160, 624: 1160, 960: 6391, 966: 6390},
{1161, 1161, 10: 1161, 53: 1161, 570: 1161, 572: 1161, 579: 1161, 1161, 1161, 1161, 590: 1161, 592: 1161, 594: 1161, 596: 1161, 1161, 1161, 1161, 601: 1161, 1161, 604: 1161, 611: 1161, 1161, 1161, 1161, 616: 1161, 620: 1161, 1161, 1161, 624: 1161, 960: 6391, 966: 6390},
{616: 6416},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 6381, 600: 4148, 811: 4147, 3217, 3218, 3216, 6380, 844: 6379, 934: 6378, 939: 6377, 6417},
// 3395
{570: 6418, 579: 6419, 581: 6394, 6395, 613: 6393, 616: 6396, 620: 6392, 6397, 6398, 960: 6391, 966: 6390},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 6423},
{569: 6420},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 4247, 3217, 3218, 3216, 861: 4248, 943: 6421},
{10: 4250, 53: 6422},
// 3400
{1162, 1162, 10: 1162, 53: 1162, 570: 1162, 572: 1162, 579: 1162, 1162, 1162, 1162, 590: 1162, 592: 1162, 594: 1162, 596: 1162, 1162, 1162, 1162, 601: 1162, 1162, 604: 1162, 611: 1162, 1162, 1162, 1162, 616: 1162, 620: 1162, 1162, 1162, 624: 1162},
{1163, 1163, 10: 1163, 53: 1163, 570: 1163, 572: 1163, 579: 1163, 1163, 1163, 1163, 590: 1163, 592: 1163, 594: 1163, 596: 1163, 1163, 1163, 1163, 601: 1163, 1163, 604: 1163, 606: 3965, 3963, 3964, 3962, 3960, 1163, 1163, 1163, 1163, 616: 1163, 620: 1163, 1163, 1163, 624: 1163, 841: 3961, 3959},
{1166, 1166, 10: 1166, 53: 1166, 570: 6425, 572: 1166, 579: 6426, 1166, 6394, 6395, 590: 1166, 592: 1166, 594: 1166, 596: 1166, 1166, 1166, 1166, 601: 1166, 1166, 604: 1166, 611: 1166, 1166, 6393, 1166, 616: 6396, 620: 6392, 6397, 6398, 624: 1166, 960: 6391, 966: 6390},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 6430},
{569: 6427},
// 3405
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 4247, 3217, 3218, 3216, 861: 4248, 943: 6428},
{10: 4250, 53: 6429},
{1164, 1164, 10: 1164, 53: 1164, 570: 1164, 572: 1164, 579: 1164, 1164, 1164, 1164, 590: 1164, 592: 1164, 594: 1164, 596: 1164, 1164, 1164, 1164, 601: 1164, 1164, 604: 1164, 611: 1164, 1164, 1164, 1164, 616: 1164, 620: 1164, 1164, 1164, 624: 1164},
{1165, 1165, 10: 1165, 53: 1165, 570: 1165, 572: 1165, 579: 1165, 1165, 1165, 1165, 590: 1165, 592: 1165, 594: 1165, 596: 1165, 1165, 1165, 1165, 601: 1165, 1165, 604: 1165, 606: 3965, 3963, 3964, 3962, 3960, 1165, 1165, 1165, 1165, 616: 1165, 620: 1165, 1165, 1165, 624: 1165, 841: 3961, 3959},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 6381, 600: 4148, 682: 6376, 811: 4147, 3217, 3218, 3216, 6380, 844: 6379, 934: 6378, 939: 6377, 6383, 1005: 6433},
// 3410
{1190, 1190, 10: 1190, 53: 1190, 570: 1190, 572: 1190, 579: 1190, 1190, 1190, 1190, 590: 1190, 592: 1190, 594: 1190, 596: 1190, 1190, 1190, 1190, 601: 1190, 1190, 604: 1190, 611: 1190, 1190, 1190, 1190, 616: 1190, 620: 1190, 1190, 1190, 624: 1190},
{1197, 1197, 10: 1197, 53: 1197, 570: 1197, 572: 1197, 579: 1197, 1197, 590: 1197, 592: 1197, 594: 1197, 596: 1197, 1197, 1197, 1197, 601: 1197, 1197, 604: 1197, 611: 1197, 1197, 614: 1197},
{1187, 1187, 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 1187, 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 1187, 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 570: 1187, 572: 1187, 577: 6388, 579: 1187, 1187, 1187, 1187, 588: 1187, 590: 1187, 592: 1187, 594: 1187, 596: 1187, 1187, 1187, 1187, 601: 1187, 1187, 604: 1187, 1187, 611: 1187, 1187, 1187, 1187, 1187, 1187, 620: 1187, 1187, 1187, 624: 1187, 631: 1187, 776: 1187, 811: 6387, 3217, 3218, 3216, 1066: 6386, 6439},
{569: 6436},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 5566, 3217, 3218, 3216, 900: 6437},
// 3415
{10: 5567, 53: 6438},
{1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 572: 1188, 577: 1188, 579: 1188, 1188, 1188, 1188, 587: 1188, 1188, 590: 1188, 592: 1188, 594: 1188, 596: 1188, 1188, 1188, 1188, 601: 1188, 1188, 604: 1188, 1188, 611: 1188, 1188, 1188, 1188, 1188, 1188, 620: 1188, 1188, 1188, 624: 1188, 631: 1188, 646: 1188, 669: 1188, 694: 1188, 749: 1188, 761: 1188, 776: 1188},
{2243, 2243, 10: 2243, 53: 2243, 570: 2243, 572: 2243, 579: 2243, 2243, 2243, 2243, 588: 2243, 590: 2243, 592: 2243, 594: 2243, 596: 2243, 2243, 2243, 2243, 601: 2243, 2243, 604: 2243, 2243, 611: 2243, 2243, 2243, 2243, 2243, 2243, 620: 2243, 2243, 2243, 624: 2243, 631: 2243, 776: 4919, 1042: 6440, 1377: 6441},
{2242, 2242, 10: 2242, 53: 2242, 570: 2242, 572: 2242, 579: 2242, 2242, 2242, 2242, 588: 2242, 590: 2242, 592: 2242, 594: 2242, 596: 2242, 2242, 2242, 2242, 601: 2242, 2242, 604: 2242, 2242, 611: 2242, 2242, 2242, 2242, 2242, 2242, 620: 2242, 2242, 2242, 624: 2242, 631: 2242},
{1168, 1168, 10: 1168, 53: 1168, 570: 1168, 572: 1168, 579: 1168, 1168, 1168, 1168, 588: 6444, 590: 1168, 592: 1168, 594: 1168, 596: 1168, 1168, 1168, 1168, 601: 1168, 1168, 604: 1168, 6445, 611: 1168, 1168, 1168, 1168, 6443, 1168, 620: 1168, 1168, 1168, 624: 1168, 631: 1168, 1101: 6447, 6446, 1240: 6448, 6442},
// 3420
{1283, 1283, 10: 1283, 53: 1283, 570: 1283, 572: 1283, 579: 1283, 1283, 1283, 1283, 590: 1283, 592: 1283, 594: 1283, 596: 1283, 1283, 1283, 1283, 601: 1283, 1283, 604: 1283, 611: 1283, 1283, 1283, 1283, 616: 1283, 620: 1283, 1283, 1283, 624: 1283, 631: 6463, 1544: 6464},
{684: 5191, 749: 5192, 970: 6462},
{684: 5191, 749: 5192, 970: 6461},
{684: 5191, 749: 5192, 970: 6460},
{569: 1180, 599: 6450, 1432: 6451},
// 3425
{1170, 1170, 10: 1170, 53: 1170, 570: 1170, 572: 1170, 579: 1170, 1170, 1170, 1170, 588: 1170, 590: 1170, 592: 1170, 594: 1170, 596: 1170, 1170, 1170, 1170, 601: 1170, 1170, 604: 1170, 1170, 611: 1170, 1170, 1170, 1170, 1170, 1170, 620: 1170, 1170, 1170, 624: 1170, 631: 1170},
{1167, 1167, 10: 1167, 53: 1167, 570: 1167, 572: 1167, 579: 1167, 1167, 1167, 1167, 588: 6444, 590: 1167, 592: 1167, 594: 1167, 596: 1167, 1167, 1167, 1167, 601: 1167, 1167, 604: 1167, 6445, 611: 1167, 1167, 1167, 1167, 6443, 1167, 620: 1167, 1167, 1167, 624: 1167, 631: 1167, 1101: 6449, 6446},
{1169, 1169, 10: 1169, 53: 1169, 570: 1169, 572: 1169, 579: 1169, 1169, 1169, 1169, 588: 1169, 590: 1169, 592: 1169, 594: 1169, 596: 1169, 1169, 1169, 1169, 601: 1169, 1169, 604: 1169, 1169, 611: 1169, 1169, 1169, 1169, 1169, 1169, 620: 1169, 1169, 1169, 624: 1169, 631: 1169},
{604: 6456, 611: 6457, 616: 6455},
{569: 6452},
// 3430
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 1175, 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 1175, 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 741: 5902, 811: 5901, 3217, 3218, 3216, 1009: 6453},
{10: 5904, 53: 6454},
{1176, 1176, 10: 1176, 53: 1176, 570: 1176, 572: 1176, 579: 1176, 1176, 1176, 1176, 588: 1176, 590: 1176, 592: 1176, 594: 1176, 596: 1176, 1176, 1176, 1176, 601: 1176, 1176, 604: 1176, 1176, 611: 1176, 1176, 1176, 1176, 1176, 1176, 620: 1176, 1176, 1176, 624: 1176, 631: 1176},
{569: 1179},
{761: 6459},
// 3435
{761: 6458},
{569: 1177},
{569: 1178},
{569: 1181, 599: 1181},
{569: 1182, 599: 1182},
// 3440
{569: 1183, 599: 1183},
{123: 6468, 402: 6467, 473: 6466, 569: 1280, 1543: 6465},
{1192, 1192, 10: 1192, 53: 1192, 570: 1192, 572: 1192, 579: 1192, 1192, 1192, 1192, 590: 1192, 592: 1192, 594: 1192, 596: 1192, 1192, 1192, 1192, 601: 1192, 1192, 604: 1192, 611: 1192, 1192, 1192, 1192, 616: 1192, 620: 1192, 1192, 1192, 624: 1192},
{569: 6469},
{569: 1279},
// 3445
{569: 1278},
{569: 1277},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 6471, 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 6470},
{53: 1276, 449: 6479, 606: 3965, 3963, 3964, 3962, 3960, 627: 6478, 841: 3961, 3959, 1545: 6477},
{1273, 1273, 10: 1273, 53: 1273, 297: 6473, 570: 1273, 572: 1273, 579: 1273, 1273, 1273, 1273, 590: 1273, 592: 1273, 594: 1273, 596: 1273, 1273, 1273, 1273, 601: 1273, 1273, 604: 1273, 611: 1273, 1273, 1273, 1273, 616: 1273, 620: 1273, 1273, 1273, 624: 1273, 1306: 6472},
// 3450
{1281, 1281, 10: 1281, 53: 1281, 570: 1281, 572: 1281, 579: 1281, 1281, 1281, 1281, 590: 1281, 592: 1281, 594: 1281, 596: 1281, 1281, 1281, 1281, 601: 1281, 1281, 604: 1281, 611: 1281, 1281, 1281, 1281, 616: 1281, 620: 1281, 1281, 1281, 624: 1281},
{569: 6474},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 6475},
{53: 6476, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
{1272, 1272, 10: 1272, 53: 1272, 570: 1272, 572: 1272, 579: 1272, 1272, 1272, 1272, 590: 1272, 592: 1272, 594: 1272, 596: 1272, 1272, 1272, 1272, 601: 1272, 1272, 604: 1272, 611: 1272, 1272, 1272, 1272, 616: 1272, 620: 1272, 1272, 1272, 624: 1272},
// 3455
{53: 6480},
{53: 1275},
{53: 1274},
{1273, 1273, 10: 1273, 53: 1273, 297: 6473, 570: 1273, 572: 1273, 579: 1273, 1273, 1273, 1273, 590: 1273, 592: 1273, 594: 1273, 596: 1273, 1273, 1273, 1273, 601: 1273, 1273, 604: 1273, 611: 1273, 1273, 1273, 1273, 616: 1273, 620: 1273, 1273, 1273, 624: 1273, 1306: 6481},
{1282, 1282, 10: 1282, 53: 1282, 570: 1282, 572: 1282, 579: 1282, 1282, 1282, 1282, 590: 1282, 592: 1282, 594: 1282, 596: 1282, 1282, 1282, 1282, 601: 1282, 1282, 604: 1282, 611: 1282, 1282, 1282, 1282, 616: 1282, 620: 1282, 1282, 1282, 624: 1282},
// 3460
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 6381, 600: 4148, 811: 4147, 3217, 3218, 3216, 6380, 844: 6379, 934: 6378, 939: 6377, 6483},
{581: 6394, 6395, 613: 6393, 616: 6396, 620: 6392, 6397, 6398, 624: 6484, 960: 6391, 966: 6390},
{1195, 1195, 10: 1195, 53: 1195, 570: 1195, 572: 1195, 579: 1195, 1195, 590: 1195, 592: 1195, 594: 1195, 596: 1195, 1195, 1195, 1195, 601: 1195, 1195, 604: 1195, 611: 1195, 1195, 614: 1195},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 4247, 3217, 3218, 3216, 861: 6486, 1043: 6487, 1076: 6488},
{591: 6497, 757: 6498, 931: 6496},
// 3465
{2783, 2783, 10: 2783, 579: 2783, 594: 2783, 598: 2783, 604: 2783},
{468, 468, 10: 6489, 579: 468, 594: 4940, 598: 468, 604: 468, 928: 4941, 6490},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 4247, 3217, 3218, 3216, 861: 6486, 1043: 6495},
{1572, 1572, 579: 1572, 598: 1572, 604: 4077, 882: 4131, 953: 6491},
{1149, 1149, 579: 1149, 598: 6492, 1250: 6493},
// 3470
{595: 3209, 681: 4088, 839: 4086, 854: 4087, 1029: 6494},
{472, 472, 579: 472},
{1148, 1148, 579: 1148},
{2782, 2782, 10: 2782, 579: 2782, 594: 2782, 598: 2782, 604: 2782},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 4119, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4115, 932: 6499},
// 3475
{2: 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 11: 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 54: 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 574: 1044, 1044, 1044, 581: 1044, 1044, 1044, 1044, 1044, 1044, 1044, 589: 1044, 593: 1044, 595: 1044, 618: 1044, 625: 1044, 1044, 651: 1044, 658: 1044, 666: 1044, 1044, 1044, 670: 1044, 674: 1044, 1044, 1044, 678: 1044, 1044, 1044, 1044, 1044, 1044, 685: 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 695: 1044, 697: 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 750: 1044},
{2: 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 11: 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 54: 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 574: 1043, 1043, 1043, 581: 1043, 1043, 1043, 1043, 1043, 1043, 1043, 589: 1043, 593: 1043, 595: 1043, 618: 1043, 625: 1043, 1043, 651: 1043, 658: 1043, 666: 1043, 1043, 1043, 670: 1043, 674: 1043, 1043, 1043, 678: 1043, 1043, 1043, 1043, 1043, 1043, 685: 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 695: 1043, 697: 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 750: 1043},
{2784, 2784, 10: 2784, 579: 2784, 594: 2784, 598: 2784, 604: 2784},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 4247, 3217, 3218, 3216, 861: 6486, 1043: 6487, 1076: 6501},
{468, 468, 10: 6489, 579: 468, 594: 4940, 928: 4941, 6502},
// 3480
{471, 471, 579: 471},
{2: 618, 618, 618, 618, 618, 618, 618, 618, 11: 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 54: 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 600: 618},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 6505},
{617, 617},
{24: 6516, 172: 6509, 6062, 178: 821, 265: 6508, 271: 6519, 285: 6517, 301: 6510, 314: 6514, 336: 6518, 340: 6511, 625: 6515, 646: 6061, 1136: 6513, 1421: 6507, 1449: 6512},
// 3485
{831, 831},
{828, 828},
{827, 827},
{293: 6526},
{825, 825},
// 3490
{178: 6525},
{812, 812, 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 572: 812, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 4149, 924: 5080, 1345: 6520},
{822, 822},
{178: 820},
{178: 819},
// 3495
{178: 818},
{178: 817},
{178: 816},
{810, 810, 572: 6522, 1575: 6521},
{823, 823},
// 3500
{771: 6523},
{601: 6524},
{809, 809},
{824, 824},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 6527, 3217, 3218, 3216, 1117: 6528},
// 3505
{830, 830, 10: 830},
{826, 826, 10: 6529},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 6530, 3217, 3218, 3216},
{829, 829, 10: 829},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 6665, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 6664, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 6663, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 6666},
// 3510
{646: 6649, 749: 6650},
{749: 6646},
{396: 6644},
{646: 6639, 749: 6638},
{646: 6636},
// 3515
{254: 6633},
{254: 6630},
{254: 6624},
{208: 6621, 299: 6623, 376: 6622, 424: 6619, 445: 6620},
{280: 6616, 284: 6615},
// 3520
{646: 6574},
{62: 6570, 208: 6568, 248: 842, 270: 6572, 345: 6571, 1531: 6569},
{208: 6567},
{208: 6566},
{305: 6561},
// 3525
{305: 6559},
{254: 6549},
{206: 6550},
{595: 3209, 839: 4778, 865: 6551},
{56: 6554, 1155: 6553, 1368: 6552},
// 3530
{956, 956, 10: 6557},
{955, 955, 10: 955},
{591: 6555},
{571: 3844, 583: 5225, 5226, 586: 3835, 595: 3839, 666: 3834, 3836, 674: 3838, 3837, 3842, 678: 3843, 686: 3841, 817: 5224, 3840, 1038: 6556},
{953, 953, 10: 953},
// 3535
{56: 6554, 1155: 6558},
{954, 954, 10: 954},
{221: 6560},
{957, 957},
{221: 6562},
// 3540
{463: 6564, 741: 6563, 1382: 6565},
{991, 991},
{990, 990},
{959, 959},
{964, 964},
// 3545
{965, 965},
{966, 966},
{248: 6573},
{248: 841},
{248: 840},
// 3550
{248: 839},
{960, 960},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 6575},
{782: 6576, 1085: 6577},
{62: 6580, 244: 6579, 646: 2470, 1113: 6578},
// 3555
{967, 967},
{646: 6582},
{173: 2469, 646: 2469},
{244: 6581},
{173: 2468, 646: 2468},
// 3560
{2: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 11: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 54: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 600: 2238, 618: 5648, 904: 6583},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 6584},
{667, 667, 6: 667, 667, 667, 667, 16: 667, 667, 667, 667, 667, 667, 667, 667, 667, 667, 667, 667, 667, 667, 667, 667, 667, 667, 667, 667, 667, 667, 667, 667, 667, 667, 667, 667, 667, 667, 667, 667, 667, 667, 667, 667, 667, 569: 6588, 667, 572: 667, 667, 575: 667, 577: 667, 667, 580: 667, 587: 667, 667, 667, 593: 667, 605: 667, 619: 6587, 646: 667, 694: 667, 748: 667, 667, 1443: 6586, 1540: 6585},
{624, 624, 6: 5004, 5008, 5006, 628, 16: 5025, 2592, 5023, 4960, 5027, 5039, 5014, 5043, 5005, 5010, 5007, 5009, 5012, 5013, 5015, 5022, 628, 5033, 5034, 5044, 5020, 5021, 5026, 5028, 5040, 5048, 5041, 5038, 5031, 5036, 5037, 5030, 5032, 5035, 5024, 5045, 5046, 569: 624, 624, 572: 624, 624, 575: 5003, 577: 624, 2592, 580: 5042, 587: 624, 624, 624, 593: 2592, 605: 5857, 646: 624, 694: 624, 748: 2592, 5011, 906: 5016, 933: 5018, 954: 5017, 980: 5019, 988: 5029, 993: 5047, 1069: 6603, 1192: 6602},
{2595, 2595, 570: 6596, 1265: 6595},
// 3565
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 6594},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 5825, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 5826, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 619: 6589, 684: 2843, 741: 2843, 2843, 2843, 5373, 749: 2843, 802: 2843, 2843, 811: 4247, 3217, 3218, 3216, 861: 5237, 977: 5641, 1003: 5827, 1047: 5644, 5646, 5645, 5828, 1135: 5829, 1343: 6590},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 6592},
{10: 5831, 53: 6591},
{666, 666, 6: 666, 666, 666, 666, 16: 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 569: 666, 666, 572: 666, 666, 575: 666, 577: 666, 666, 580: 666, 587: 666, 666, 666, 593: 666, 605: 666, 646: 666, 694: 666, 748: 666, 666},
// 3570
{53: 6593},
{2504, 2504, 570: 2504},
{2505, 2505, 570: 2505},
{2596, 2596},
{105: 6597},
// 3575
{452: 6599, 843: 6598},
{627: 6601},
{627: 6600},
{2593, 2593},
{2594, 2594},
// 3580
{2590, 2590, 569: 2590, 2590, 572: 2590, 6605, 577: 2590, 587: 2590, 2590, 2590, 646: 2590, 694: 2590, 1282: 6604},
{623, 623, 6: 5004, 5008, 5006, 628, 5859, 16: 5025, 2592, 5023, 4960, 5027, 5039, 5014, 5043, 5005, 5010, 5007, 5009, 5012, 5013, 5015, 5022, 628, 5033, 5034, 5044, 5020, 5021, 5026, 5028, 5040, 5048, 5041, 5038, 5031, 5036, 5037, 5030, 5032, 5035, 5024, 5045, 5046, 569: 623, 623, 572: 623, 623, 575: 5003, 577: 623, 2592, 580: 5042, 587: 623, 623, 623, 593: 2592, 605: 5857, 646: 623, 694: 623, 748: 2592, 5011, 906: 5016, 933: 5018, 954: 5017, 980: 5019, 988: 5029, 993: 5858},
{2519, 2519, 569: 2519, 2519, 572: 2519, 577: 2519, 587: 2519, 6164, 6165, 646: 2519, 694: 2519, 1215: 6606},
{761: 5915},
{2516, 2516, 569: 2516, 2516, 572: 2516, 577: 6608, 587: 2516, 646: 2516, 694: 2516, 1378: 6607},
// 3585
{2514, 2514, 569: 3076, 2514, 572: 3075, 587: 3074, 646: 3073, 694: 3069, 815: 6613, 846: 6611, 3070, 3071, 3072, 3081, 3079, 3078, 3077, 856: 4066, 6612, 6610, 1400: 6609},
{2515, 2515, 569: 2515, 2515, 572: 2515, 587: 2515, 646: 2515, 694: 2515},
{2595, 2595, 570: 6596, 1265: 6614},
{2513, 2513, 570: 2513},
{2512, 2512, 570: 2512, 580: 1081, 590: 1081, 592: 1081},
// 3590
{2511, 2511, 570: 2511},
{2510, 2510, 570: 2510, 580: 1080, 590: 1080, 592: 1080, 596: 4079, 598: 4078, 604: 4077, 882: 4080, 4081},
{2597, 2597},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 6527, 3217, 3218, 3216, 1117: 6618},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 6527, 3217, 3218, 3216, 1117: 6617},
// 3595
{969, 969, 10: 6529},
{970, 970, 10: 6529},
{972, 972},
{971, 971},
{963, 963},
// 3600
{962, 962},
{961, 961},
{206: 6625},
{595: 3209, 839: 4778, 865: 6627, 1057: 6626},
{976, 976, 10: 6628},
// 3605
{945, 945, 10: 945},
{595: 3209, 839: 4778, 865: 6629},
{944, 944, 10: 944},
{206: 6631},
{595: 3209, 839: 4778, 865: 6627, 1057: 6632},
// 3610
{977, 977, 10: 6628},
{206: 6634},
{595: 3209, 839: 4778, 865: 6627, 1057: 6635},
{978, 978, 10: 6628},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 4149, 924: 6637},
// 3615
{979, 979, 10: 4151},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 6642},
{601: 6640},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 4149, 924: 6641},
{968, 968, 10: 4151},
// 3620
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 6643, 3217, 3218, 3216},
{981, 981},
{65: 6645},
{982, 982},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 6647},
// 3625
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 6648, 3217, 3218, 3216},
{983, 983},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 4149, 924: 6662},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 6651},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 6652, 3217, 3218, 3216},
// 3630
{984, 984, 569: 6655, 1236: 6654, 1427: 6653},
{980, 980, 10: 6660},
{948, 948, 10: 948},
{595: 3209, 839: 4778, 865: 6656},
{10: 6657},
// 3635
{595: 3209, 839: 4778, 865: 6658},
{53: 6659},
{946, 946, 10: 946},
{569: 6655, 1236: 6661},
{947, 947, 10: 947},
// 3640
{985, 985, 10: 4151},
{221: 6691, 237: 2181, 754: 2181},
{237: 1993, 456: 6683, 479: 6684, 754: 1993, 1366: 6682},
{989, 989, 206: 6668, 216: 6669, 237: 1800, 754: 1800},
{237: 6667},
// 3645
{986, 986},
{468, 468, 594: 4940, 3209, 839: 4778, 865: 6680, 928: 4941, 6679},
{455: 6670},
{595: 3209, 598: 6671, 839: 4778, 865: 6627, 1057: 6672, 1367: 6673},
{595: 3209, 839: 4086, 854: 6674},
// 3650
{975, 975, 10: 6628},
{974, 974},
{994, 994, 10: 6675, 239: 6676},
{595: 3209, 839: 4086, 854: 6678},
{595: 3209, 839: 4086, 854: 6677},
// 3655
{992, 992},
{993, 993},
{988, 988},
{468, 468, 594: 4940, 928: 4941, 6681},
{987, 987},
// 3660
{973, 973},
{595: 3209, 839: 6690},
{431: 6686, 595: 3209, 755: 6687, 839: 6685},
{951, 951},
{595: 3209, 839: 6689},
// 3665
{595: 3209, 839: 6688},
{949, 949},
{950, 950},
{952, 952},
{958, 958},
// 3670
{2: 490, 490, 490, 490, 490, 490, 490, 490, 11: 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 54: 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 571: 490, 575: 490, 591: 2169, 625: 490, 754: 2169, 757: 2169},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 571: 6851, 591: 2167, 754: 2167, 757: 2167, 811: 6850, 3217, 3218, 3216},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 6848, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 591: 2127, 754: 2127, 757: 2127, 811: 6707, 3217, 3218, 3216, 965: 6748},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 591: 2121, 754: 2121, 757: 2121, 811: 6707, 3217, 3218, 3216, 965: 6845},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 571: 3956, 575: 6841, 591: 2119, 625: 4577, 754: 2119, 757: 2119, 811: 3957, 3217, 3218, 3216, 845: 4576, 946: 6840},
// 3675
{591: 6497, 599: 6830, 754: 2114, 757: 2114, 931: 6829},
{591: 2104, 611: 6827, 754: 2104, 757: 2104},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 6728, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 6729, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 571: 6733, 575: 6824, 591: 2102, 754: 2102, 6822, 757: 2102, 811: 3957, 3217, 3218, 3216, 845: 6193, 938: 6735, 963: 6736, 6734, 1013: 6732, 1321: 6823, 1513: 6821},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 6819, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 591: 2098, 754: 2098, 757: 2098, 811: 6707, 3217, 3218, 3216, 965: 6745},
{260: 6804, 591: 2079, 754: 2079, 757: 2079, 771: 6805, 1072: 6803, 1138: 6802},
// 3680
{417: 6756, 419: 6755, 591: 2021, 754: 2021, 757: 2021, 1384: 6757},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 591: 1906, 754: 1906, 757: 1906, 811: 6707, 3217, 3218, 3216, 965: 6752},
{571: 6751, 591: 1788, 754: 1788, 757: 1788},
{1075, 1075, 10: 6741},
{221: 6727},
// 3685
{591: 1042, 754: 6725, 757: 1042},
{591: 6497, 757: 6498, 931: 6723},
{591: 6497, 757: 6498, 931: 6718},
{591: 6497, 757: 6498, 931: 6716},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 571: 3956, 575: 6715, 625: 4577, 811: 3957, 3217, 3218, 3216, 845: 4576, 946: 6714, 1388: 6713},
// 3690
{1019, 1019, 10: 1019},
{1026, 1026, 10: 1026},
{1025, 1025, 10: 1025},
{1024, 1024, 10: 1024},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 6717},
// 3695
{1031, 1031, 10: 1031, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 6720, 3844, 574: 3860, 4119, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 6719, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4115, 932: 6721, 972: 6722},
{1046, 1046, 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 1046, 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3783, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3874, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 4681, 3855, 3937, 3854, 3851},
{1047, 1047, 10: 1047},
{1045, 1045, 10: 1045},
// 3700
{1032, 1032, 10: 1032},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 6720, 3844, 574: 3860, 4119, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 6719, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4115, 932: 6721, 972: 6724},
{1037, 1037, 10: 1037},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 6726, 3217, 3218, 3216},
{591: 1041, 757: 1041},
// 3705
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 6728, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 6729, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 571: 6733, 755: 6731, 811: 3957, 3217, 3218, 3216, 845: 6193, 938: 6735, 963: 6736, 6734, 1013: 6732, 1321: 6730},
{1003, 1003, 10: 1003, 668: 2202, 752: 1003, 765: 2202},
{1063, 1063, 668: 2016, 752: 1063, 765: 2016},
{752: 6739},
{752: 1062},
// 3710
{1061, 1061, 10: 6737, 752: 1061},
{1004, 1004, 10: 1004, 668: 479, 752: 1004, 765: 479},
{998, 998, 10: 998, 752: 998},
{997, 997, 10: 997, 752: 997},
{996, 996, 10: 996, 752: 996},
// 3715
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 6728, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 571: 6733, 811: 3957, 3217, 3218, 3216, 845: 6193, 938: 6735, 963: 6738, 6734},
{995, 995, 10: 995, 752: 995},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 571: 3956, 670: 6239, 811: 3957, 3217, 3218, 3216, 845: 6238, 895: 6240, 1015: 6740},
{1064, 1064, 10: 6242},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 6692, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 6695, 3606, 6742, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 6743, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 6703, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 6696, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 593: 4650, 668: 6710, 695: 6709, 748: 4648, 811: 6707, 3217, 3218, 3216, 893: 6711, 965: 6708, 1147: 6744},
// 3720
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 591: 2127, 754: 2127, 757: 2127, 811: 6707, 3217, 3218, 3216, 965: 6748},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 591: 2098, 754: 2098, 757: 2098, 811: 6707, 3217, 3218, 3216, 965: 6745},
{1018, 1018, 10: 1018},
{591: 6497, 757: 6498, 931: 6746},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 6720, 3844, 574: 3860, 4119, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 6719, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4115, 932: 6721, 972: 6747},
// 3725
{1034, 1034, 10: 1034},
{591: 6497, 757: 6498, 931: 6749},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 6720, 3844, 574: 3860, 4119, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 6719, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4115, 932: 6721, 972: 6750},
{1036, 1036, 10: 1036},
{1067, 1067},
// 3730
{591: 6497, 757: 6498, 931: 6753},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 6720, 3844, 574: 3860, 4119, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 6719, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4115, 932: 6721, 972: 6754},
{1035, 1035, 10: 1035},
{599: 2636},
{599: 2635},
// 3735
{599: 6758},
{569: 3076, 572: 3075, 587: 3074, 589: 3060, 626: 3059, 646: 3073, 694: 3069, 696: 6770, 751: 3188, 815: 6761, 843: 6759, 846: 6762, 3070, 3071, 3072, 3081, 3079, 3078, 3077, 856: 6760, 6764, 6763, 862: 3187, 6766, 6767, 866: 6768, 6765, 975: 6769},
{2: 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 11: 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 54: 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 588: 1119, 603: 1119, 872: 1119, 874: 1119, 876: 1119, 880: 6364, 992: 6365, 1039: 6775},
{569: 3076, 587: 3074, 646: 3073, 694: 3069, 751: 3188, 815: 4074, 846: 4073, 3070, 3071, 3072, 3081, 3079, 4075, 4076, 862: 6082},
{395, 395, 579: 395, 1080, 590: 1080, 592: 1080, 596: 4079, 598: 4078, 604: 4077, 882: 4080, 4081},
// 3740
{397, 397, 579: 397, 1081, 590: 1081, 592: 1081},
{398, 398, 579: 398},
{396, 396, 579: 396},
{394, 394, 579: 394},
{393, 393, 579: 393},
// 3745
{392, 392, 579: 392},
{391, 391, 579: 391},
{380, 380, 579: 6773},
{246: 6771},
{571: 6772},
// 3750
{378, 378},
{569: 3076, 572: 3075, 587: 3074, 589: 3060, 626: 3059, 646: 3073, 694: 3069, 751: 3188, 815: 6761, 843: 6759, 846: 6762, 3070, 3071, 3072, 3081, 3079, 3078, 3077, 856: 6760, 6764, 6763, 862: 3187, 6766, 6767, 866: 6768, 6765, 975: 6774},
{379, 379},
{2: 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 11: 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 54: 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 588: 1325, 603: 1325, 872: 6367, 874: 6369, 876: 6368, 986: 6370, 1035: 6776},
{2: 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 11: 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 54: 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 6778, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 588: 1312, 603: 1312, 1295: 6777},
// 3755
{2: 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 11: 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 54: 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 588: 4954, 603: 2236, 1008: 6779},
{2: 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 11: 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 54: 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 588: 1311, 603: 1311},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 603: 6780, 811: 6782, 3217, 3218, 3216, 1068: 6783, 1134: 6781},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 6795},
{10: 6791, 603: 6790},
// 3760
{10: 1314, 579: 1314, 603: 1314, 754: 6785, 1059: 6784},
{10: 1316, 579: 1316, 603: 1316},
{10: 1318, 579: 1318, 603: 1318},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 6787, 811: 6786, 3217, 3218, 3216},
{10: 1314, 579: 1314, 603: 1314, 754: 6789, 1059: 6788},
// 3765
{10: 1313, 579: 1313, 603: 1313},
{10: 1317, 579: 1317, 603: 1317},
{600: 6787},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 6381, 600: 4148, 682: 6376, 811: 4147, 3217, 3218, 3216, 6380, 844: 6379, 934: 6378, 939: 6377, 6383, 1005: 6373, 1040: 6793},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 6782, 3217, 3218, 3216, 1068: 6792},
// 3770
{10: 1315, 579: 1315, 603: 1315},
{468, 468, 10: 6431, 579: 468, 594: 4940, 928: 4941, 6794},
{2481, 2481, 579: 2481},
{1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 11: 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 54: 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 573: 6435, 577: 1189, 579: 1189, 588: 1189, 594: 1189, 598: 1189, 604: 1189, 1189, 615: 1189, 985: 6796},
{1187, 1187, 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 577: 6388, 579: 1187, 588: 1187, 594: 1187, 598: 1187, 604: 1187, 1187, 615: 1187, 811: 6387, 3217, 3218, 3216, 1066: 6386, 6797},
// 3775
{1168, 1168, 579: 1168, 588: 6444, 594: 1168, 598: 1168, 604: 1168, 6445, 615: 6443, 1101: 6447, 6446, 1240: 6448, 6798},
{468, 468, 579: 468, 594: 4940, 598: 468, 604: 468, 928: 4941, 6799},
{1572, 1572, 579: 1572, 598: 1572, 604: 4077, 882: 4131, 953: 6800},
{1149, 1149, 579: 1149, 598: 6492, 1250: 6801},
{2482, 2482, 579: 2482},
// 3780
{1070, 1070, 10: 6817},
{1057, 1057, 10: 1057},
{435: 6809},
{229: 6807, 808: 6806},
{1054, 1054, 10: 1054},
// 3785
{1053, 1053, 10: 1053, 776: 4919, 1042: 6808},
{1052, 1052, 10: 1052},
{297: 6811, 465: 6813, 771: 6812, 1439: 6810},
{1055, 1055, 10: 1055},
{771: 6816},
// 3790
{412: 6814, 484: 6815},
{1048, 1048, 10: 1048},
{1050, 1050, 10: 1050},
{1049, 1049, 10: 1049},
{1051, 1051, 10: 1051},
// 3795
{260: 6804, 771: 6805, 1072: 6818},
{1056, 1056, 10: 1056},
{260: 6804, 591: 2079, 754: 2079, 757: 2079, 771: 6805, 1072: 6803, 1138: 6820},
{1071, 1071, 10: 6817},
{1065, 1065},
// 3800
{1062, 1062, 590: 6825},
{1059, 1059},
{1058, 1058},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 6728, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 571: 6733, 811: 3957, 3217, 3218, 3216, 845: 6193, 938: 6735, 963: 6736, 6734, 1013: 6826},
{1060, 1060, 10: 6737},
// 3805
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 575: 3214, 811: 3213, 3217, 3218, 3216, 962: 6828},
{1066, 1066},
{16: 6835, 571: 6834, 1283: 6839},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 571: 3956, 670: 6239, 811: 3957, 3217, 3218, 3216, 845: 6238, 895: 6831},
{591: 6497, 757: 6498, 931: 6832},
// 3810
{16: 6835, 571: 6834, 1283: 6833},
{1073, 1073},
{1007, 1007},
{569: 6836},
{571: 6272, 1044: 6837},
// 3815
{53: 6838},
{1006, 1006},
{1074, 1074},
{1030, 1030, 10: 1030, 578: 6842},
{1027, 1027, 10: 1027},
// 3820
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 571: 3956, 575: 6843, 811: 3957, 3217, 3218, 3216, 845: 6844},
{1029, 1029, 10: 1029},
{1028, 1028, 10: 1028},
{591: 6497, 757: 6498, 931: 6846},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 6720, 3844, 574: 3860, 4119, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 6719, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4115, 932: 6721, 972: 6847},
// 3825
{1033, 1033, 10: 1033},
{260: 6804, 591: 2079, 754: 2079, 757: 2079, 771: 6805, 1072: 6803, 1138: 6849},
{1072, 1072, 10: 6817},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 6853, 3217, 3218, 3216, 1046: 6860},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 6853, 3217, 3218, 3216, 1046: 6852},
// 3830
{591: 6497, 757: 6498, 931: 6858},
{584: 6855, 591: 1040, 754: 6854, 757: 1040},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 6853, 3217, 3218, 3216, 1046: 6857},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 6853, 3217, 3218, 3216, 1046: 6856},
{591: 1038, 757: 1038},
// 3835
{591: 1039, 757: 1039},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 6720, 3844, 574: 3860, 4119, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 6719, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4115, 932: 6721, 972: 6859},
{1068, 1068},
{591: 6497, 757: 6498, 931: 6861},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 6720, 3844, 574: 3860, 4119, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 6719, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4115, 932: 6721, 972: 6862},
// 3840
{1069, 1069},
{569: 3076, 587: 3074, 646: 3073, 694: 3069, 815: 6874, 846: 6873, 3070, 3071, 3072, 6875},
{569: 1511, 587: 1511, 646: 1511, 694: 1511, 755: 4397, 869: 4395, 4396, 926: 6867, 930: 6868, 1088: 6870, 1130: 6872},
{569: 1511, 587: 1511, 646: 1511, 694: 1511, 755: 4397, 869: 4395, 4396, 926: 6867, 930: 6868, 1088: 6870, 1130: 6871},
{569: 1511, 587: 1511, 646: 1511, 694: 1511, 755: 4397, 869: 4395, 4396, 926: 6867, 930: 6868, 1088: 6870, 1130: 6869},
// 3845
{2: 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 11: 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 54: 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 571: 1514, 574: 1514, 1514, 1514, 581: 1514, 1514, 1514, 1514, 1514, 1514, 1514, 589: 1514, 593: 1514, 595: 1514, 600: 1514, 613: 1514, 618: 1514, 625: 1514, 1514, 646: 1514, 651: 1514, 658: 1514, 666: 1514, 1514, 1514, 670: 1514, 674: 1514, 1514, 1514, 678: 1514, 1514, 1514, 1514, 1514, 1514, 685: 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 697: 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 750: 1514, 755: 1514, 869: 1514, 1514, 872: 1514, 874: 1514, 876: 1514, 880: 1514, 889: 1514, 1514, 1514},
{569: 1510, 587: 1510, 646: 1510, 694: 1510},
{569: 1077, 587: 1077, 646: 1077, 694: 1077},
{569: 1076, 587: 1076, 646: 1076, 694: 1076},
{569: 1078, 587: 1078, 646: 1078, 694: 1078},
// 3850
{569: 1079, 587: 1079, 646: 1079, 694: 1079},
{1091, 1091, 53: 1091, 570: 1091, 572: 1091, 579: 1091, 1081, 590: 1081, 592: 1081},
{1090, 1090, 53: 1090, 570: 1090, 572: 1090, 579: 1090, 1080, 590: 1080, 592: 1080, 596: 4079, 598: 4078, 604: 4077, 882: 6876, 6877},
{580: 1082, 590: 1082, 592: 1082},
{1089, 1089, 53: 1089, 570: 1089, 572: 1089, 579: 1089, 596: 4079, 598: 4078, 883: 6878},
// 3855
{1088, 1088, 53: 1088, 570: 1088, 572: 1088, 579: 1088},
{1087, 1087, 53: 1087, 570: 1087, 572: 1087, 579: 1087},
{53: 4212, 580: 1080, 590: 1080, 592: 1080, 596: 4079, 598: 4078, 604: 4077, 882: 4080, 4081},
{10: 6894, 569: 1264, 587: 1264, 646: 1264, 694: 1264, 751: 1264, 843: 1264},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 6883, 3217, 3218, 3216, 1084: 6882, 1363: 6893},
// 3860
{10: 1261, 569: 1261, 587: 1261, 646: 1261, 694: 1261, 751: 1261, 843: 1261},
{569: 6884, 577: 2762, 1428: 6885},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 6889, 3217, 3218, 3216, 1026: 6888},
{577: 6886},
{569: 3076, 815: 6887},
// 3865
{10: 1260, 569: 1260, 587: 1260, 646: 1260, 694: 1260, 751: 1260, 843: 1260},
{10: 6891, 53: 6890},
{2760, 2760, 10: 2760, 53: 2760, 572: 2760},
{577: 2761},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 6892, 3217, 3218, 3216},
// 3870
{2759, 2759, 10: 2759, 53: 2759, 572: 2759},
{10: 6894, 569: 1263, 587: 1263, 646: 1263, 694: 1263, 751: 1263, 843: 1263},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 6883, 3217, 3218, 3216, 1084: 6895},
{10: 1262, 569: 1262, 587: 1262, 646: 1262, 694: 1262, 751: 1262, 843: 1262},
{1572, 1572, 53: 1572, 570: 1572, 572: 1572, 579: 1572, 1572, 590: 1572, 592: 1572, 596: 1572, 598: 1572, 1572, 601: 1572, 1572, 604: 4077, 882: 4131, 953: 6897},
// 3875
{1135, 1135, 53: 1135, 570: 1135, 572: 1135, 579: 1135, 1135, 590: 1135, 592: 1135, 596: 4079, 598: 4078, 1135, 601: 1135, 1135, 883: 4136, 971: 6898},
{1106, 1106, 53: 1106, 570: 1106, 572: 1106, 579: 1106, 1106, 590: 1106, 592: 1106, 599: 4138, 601: 4139, 1106, 1036: 6899},
{1112, 1112, 53: 1112, 570: 1112, 572: 1112, 579: 1112, 1112, 590: 1112, 592: 1112, 602: 4167, 1037: 6900},
{1268, 1268, 53: 1268, 570: 1268, 572: 1268, 579: 1268, 1268, 590: 1268, 592: 1268},
{1135, 1135, 53: 1135, 570: 1135, 572: 1135, 579: 1135, 1135, 590: 1135, 592: 1135, 596: 4079, 598: 4078, 1135, 601: 1135, 1135, 883: 4136, 971: 6902},
// 3880
{1106, 1106, 53: 1106, 570: 1106, 572: 1106, 579: 1106, 1106, 590: 1106, 592: 1106, 599: 4138, 601: 4139, 1106, 1036: 6903},
{1112, 1112, 53: 1112, 570: 1112, 572: 1112, 579: 1112, 1112, 590: 1112, 592: 1112, 602: 4167, 1037: 6904},
{1269, 1269, 53: 1269, 570: 1269, 572: 1269, 579: 1269, 1269, 590: 1269, 592: 1269},
{761: 6912},
{1572, 1572, 53: 1572, 570: 1572, 572: 1572, 579: 1572, 1572, 590: 1572, 592: 1572, 596: 1572, 598: 1572, 1572, 601: 1572, 1572, 604: 4077, 882: 4131, 953: 6908},
// 3885
{1113, 1113, 53: 1113, 570: 1113, 572: 1113, 579: 1113, 1113, 590: 1113, 592: 1113, 596: 1113, 598: 1113, 1113, 601: 1113, 1113, 604: 1113, 612: 1113, 614: 1113},
{1135, 1135, 53: 1135, 570: 1135, 572: 1135, 579: 1135, 1135, 590: 1135, 592: 1135, 596: 4079, 598: 4078, 1135, 601: 1135, 1135, 883: 4136, 971: 6909},
{1106, 1106, 53: 1106, 570: 1106, 572: 1106, 579: 1106, 1106, 590: 1106, 592: 1106, 599: 4138, 601: 4139, 1106, 1036: 6910},
{1112, 1112, 53: 1112, 570: 1112, 572: 1112, 579: 1112, 1112, 590: 1112, 592: 1112, 602: 4167, 1037: 6911},
{1270, 1270, 53: 1270, 570: 1270, 572: 1270, 579: 1270, 1270, 590: 1270, 592: 1270},
// 3890
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4101, 1019: 4103, 1045: 6913},
{2248, 2248, 10: 4104, 53: 2248, 570: 2248, 572: 6914, 579: 2248, 2248, 590: 2248, 592: 2248, 596: 2248, 598: 2248, 2248, 601: 2248, 2248, 604: 2248, 612: 2248, 614: 2248, 1576: 6915},
{462: 6916},
{2246, 2246, 53: 2246, 570: 2246, 572: 2246, 579: 2246, 2246, 590: 2246, 592: 2246, 596: 2246, 598: 2246, 2246, 601: 2246, 2246, 604: 2246, 612: 2246, 614: 2246},
{2247, 2247, 53: 2247, 570: 2247, 572: 2247, 579: 2247, 2247, 590: 2247, 592: 2247, 596: 2247, 598: 2247, 2247, 601: 2247, 2247, 604: 2247, 612: 2247, 614: 2247},
// 3895
{468, 468, 53: 468, 570: 468, 572: 468, 579: 468, 468, 590: 468, 592: 468, 594: 4940, 596: 468, 598: 468, 468, 601: 468, 468, 604: 468, 611: 468, 928: 4941, 6942},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 6381, 600: 4148, 682: 6376, 811: 4147, 3217, 3218, 3216, 6380, 844: 6379, 934: 6378, 939: 6377, 6383, 1005: 6373, 1040: 6927, 1408: 6926, 1542: 6925},
{1114, 1114, 53: 1114, 570: 1114, 572: 1114, 579: 1114, 1114, 590: 1114, 592: 1114, 596: 1114, 598: 1114, 1114, 601: 1114, 1114, 604: 1114, 611: 6905, 1100: 6907, 1129: 6920},
{1572, 1572, 53: 1572, 570: 1572, 572: 1572, 579: 1572, 1572, 590: 1572, 592: 1572, 596: 1572, 598: 1572, 1572, 601: 1572, 1572, 604: 4077, 882: 4131, 953: 6921},
{1135, 1135, 53: 1135, 570: 1135, 572: 1135, 579: 1135, 1135, 590: 1135, 592: 1135, 596: 4079, 598: 4078, 1135, 601: 1135, 1135, 883: 4136, 971: 6922},
// 3900
{1106, 1106, 53: 1106, 570: 1106, 572: 1106, 579: 1106, 1106, 590: 1106, 592: 1106, 599: 4138, 601: 4139, 1106, 1036: 6923},
{1112, 1112, 53: 1112, 570: 1112, 572: 1112, 579: 1112, 1112, 590: 1112, 592: 1112, 602: 4167, 1037: 6924},
{1271, 1271, 53: 1271, 570: 1271, 572: 1271, 579: 1271, 1271, 590: 1271, 592: 1271},
{468, 468, 53: 468, 570: 468, 572: 468, 579: 468, 468, 590: 468, 592: 468, 594: 4940, 596: 468, 598: 468, 468, 601: 468, 468, 604: 468, 611: 468, 468, 614: 468, 928: 4941, 6928},
{1259, 1259, 53: 1259, 570: 1259, 572: 1259, 579: 1259, 1259, 590: 1259, 592: 1259, 594: 1259, 596: 1259, 598: 1259, 1259, 601: 1259, 1259, 604: 1259, 611: 1259},
// 3905
{1199, 1199, 10: 6431, 53: 1199, 570: 1199, 572: 1199, 579: 1199, 1199, 590: 1199, 592: 1199, 594: 1199, 596: 1199, 598: 1199, 1199, 601: 1199, 1199, 604: 1199, 611: 1199, 1199, 614: 1199},
{1114, 1114, 53: 1114, 570: 1114, 572: 1114, 579: 1114, 1114, 590: 1114, 592: 1114, 596: 1114, 598: 1114, 1114, 601: 1114, 1114, 604: 1114, 611: 6905, 1114, 614: 1114, 1100: 6907, 1129: 6929},
{2245, 2245, 53: 2245, 570: 2245, 572: 2245, 579: 2245, 2245, 590: 2245, 592: 2245, 596: 2245, 598: 2245, 2245, 601: 2245, 2245, 604: 2245, 612: 6930, 614: 2245, 1238: 6931},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 6941},
{1258, 1258, 53: 1258, 570: 1258, 572: 1258, 579: 1258, 1258, 590: 1258, 592: 1258, 596: 1258, 598: 1258, 1258, 601: 1258, 1258, 604: 1258, 614: 6933, 1568: 6932},
// 3910
{1284, 1284, 53: 1284, 570: 1284, 572: 1284, 579: 1284, 1284, 590: 1284, 592: 1284, 596: 1284, 598: 1284, 1284, 601: 1284, 1284, 604: 1284},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 4289, 3217, 3218, 3216, 1075: 6936, 1359: 6935, 1569: 6934},
{1257, 1257, 10: 6939, 53: 1257, 570: 1257, 572: 1257, 579: 1257, 1257, 590: 1257, 592: 1257, 596: 1257, 598: 1257, 1257, 601: 1257, 1257, 604: 1257},
{1256, 1256, 10: 1256, 53: 1256, 570: 1256, 572: 1256, 579: 1256, 1256, 590: 1256, 592: 1256, 596: 1256, 598: 1256, 1256, 601: 1256, 1256, 604: 1256},
{577: 6937},
// 3915
{569: 4290, 1361: 6938},
{1254, 1254, 10: 1254, 53: 1254, 570: 1254, 572: 1254, 579: 1254, 1254, 590: 1254, 592: 1254, 596: 1254, 598: 1254, 1254, 601: 1254, 1254, 604: 1254},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 4289, 3217, 3218, 3216, 1075: 6936, 1359: 6940},
{1255, 1255, 10: 1255, 53: 1255, 570: 1255, 572: 1255, 579: 1255, 1255, 590: 1255, 592: 1255, 596: 1255, 598: 1255, 1255, 601: 1255, 1255, 604: 1255},
{2244, 2244, 53: 2244, 570: 2244, 572: 2244, 579: 2244, 2244, 590: 2244, 592: 2244, 594: 2244, 596: 2244, 598: 2244, 2244, 601: 2244, 2244, 2244, 2244, 606: 3965, 3963, 3964, 3962, 3960, 2244, 614: 2244, 841: 3961, 3959},
// 3920
{1285, 1285, 53: 1285, 570: 1285, 572: 1285, 579: 1285, 1285, 590: 1285, 592: 1285, 596: 1285, 598: 1285, 1285, 601: 1285, 1285, 604: 1285, 611: 1285},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 600: 6959, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 6960, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 6958, 1222: 6961, 1418: 6962, 1508: 6963},
{2: 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 11: 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 54: 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 571: 1133, 574: 1133, 1133, 1133, 581: 1133, 1133, 1133, 1133, 1133, 1133, 1133, 589: 1133, 593: 1133, 595: 1133, 600: 1133, 613: 1133, 618: 1133, 625: 1133, 1133, 651: 1133, 658: 1133, 666: 1133, 1133, 1133, 670: 1133, 674: 1133, 1133, 1133, 678: 1133, 1133, 1133, 1133, 1133, 1133, 685: 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 695: 1133, 697: 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 750: 1133, 755: 1133, 869: 1133, 1133, 872: 1133, 874: 1133, 876: 1133, 880: 1133, 889: 1133, 1133, 1133},
{2: 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 11: 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 54: 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 571: 1132, 574: 1132, 1132, 1132, 581: 1132, 1132, 1132, 1132, 1132, 1132, 1132, 589: 1132, 593: 1132, 595: 1132, 600: 1132, 613: 1132, 618: 1132, 625: 1132, 1132, 651: 1132, 658: 1132, 666: 1132, 1132, 1132, 670: 1132, 674: 1132, 1132, 1132, 678: 1132, 1132, 1132, 1132, 1132, 1132, 685: 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 695: 1132, 697: 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 750: 1132, 755: 1132, 869: 1132, 1132, 872: 1132, 874: 1132, 876: 1132, 880: 1132, 889: 1132, 1132, 1132},
{2: 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 11: 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 54: 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 571: 1131, 574: 1131, 1131, 1131, 581: 1131, 1131, 1131, 1131, 1131, 1131, 1131, 589: 1131, 593: 1131, 595: 1131, 600: 1131, 613: 1131, 618: 1131, 625: 1131, 1131, 651: 1131, 658: 1131, 666: 1131, 1131, 1131, 670: 1131, 674: 1131, 1131, 1131, 678: 1131, 1131, 1131, 1131, 1131, 1131, 685: 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 695: 1131, 697: 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 750: 1131, 755: 1131, 869: 1131, 1131, 872: 1131, 874: 1131, 876: 1131, 880: 1131, 889: 1131, 1131, 1131},
// 3925
{2: 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 11: 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 54: 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 571: 1130, 574: 1130, 1130, 1130, 581: 1130, 1130, 1130, 1130, 1130, 1130, 1130, 589: 1130, 593: 1130, 595: 1130, 600: 1130, 613: 1130, 618: 1130, 625: 1130, 1130, 651: 1130, 658: 1130, 666: 1130, 1130, 1130, 670: 1130, 674: 1130, 1130, 1130, 678: 1130, 1130, 1130, 1130, 1130, 1130, 685: 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 695: 1130, 697: 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 750: 1130, 755: 1130, 869: 1130, 1130, 872: 1130, 874: 1130, 876: 1130, 880: 1130, 889: 1130, 1130, 1130},
{2: 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 11: 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 54: 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 571: 1129, 574: 1129, 1129, 1129, 581: 1129, 1129, 1129, 1129, 1129, 1129, 1129, 589: 1129, 593: 1129, 595: 1129, 600: 1129, 613: 1129, 618: 1129, 625: 1129, 1129, 651: 1129, 658: 1129, 666: 1129, 1129, 1129, 670: 1129, 674: 1129, 1129, 1129, 678: 1129, 1129, 1129, 1129, 1129, 1129, 685: 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 695: 1129, 697: 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 750: 1129, 755: 1129, 869: 1129, 1129, 872: 1129, 874: 1129, 876: 1129, 880: 1129, 889: 1129, 1129, 1129},
{2: 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 11: 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 54: 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 571: 1128, 574: 1128, 1128, 1128, 581: 1128, 1128, 1128, 1128, 1128, 1128, 1128, 589: 1128, 593: 1128, 595: 1128, 600: 1128, 613: 1128, 618: 1128, 625: 1128, 1128, 651: 1128, 658: 1128, 666: 1128, 1128, 1128, 670: 1128, 674: 1128, 1128, 1128, 678: 1128, 1128, 1128, 1128, 1128, 1128, 685: 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 695: 1128, 697: 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 750: 1128, 755: 1128, 869: 1128, 1128, 872: 1128, 874: 1128, 876: 1128, 880: 1128, 889: 1128, 1128, 1128},
{2: 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 11: 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 54: 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 571: 1127, 574: 1127, 1127, 1127, 581: 1127, 1127, 1127, 1127, 1127, 1127, 1127, 589: 1127, 593: 1127, 595: 1127, 600: 1127, 613: 1127, 618: 1127, 625: 1127, 1127, 651: 1127, 658: 1127, 666: 1127, 1127, 1127, 670: 1127, 674: 1127, 1127, 1127, 678: 1127, 1127, 1127, 1127, 1127, 1127, 685: 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 695: 1127, 697: 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 750: 1127, 755: 1127, 869: 1127, 1127, 872: 1127, 874: 1127, 876: 1127, 880: 1127, 889: 1127, 1127, 1127},
{2: 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 11: 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 54: 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 571: 1126, 574: 1126, 1126, 1126, 581: 1126, 1126, 1126, 1126, 1126, 1126, 1126, 589: 1126, 593: 1126, 595: 1126, 600: 1126, 613: 1126, 618: 1126, 625: 1126, 1126, 651: 1126, 658: 1126, 666: 1126, 1126, 1126, 670: 1126, 674: 1126, 1126, 1126, 678: 1126, 1126, 1126, 1126, 1126, 1126, 685: 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 695: 1126, 697: 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 750: 1126, 755: 1126, 869: 1126, 1126, 872: 1126, 874: 1126, 876: 1126, 880: 1126, 889: 1126, 1126, 1126},
// 3930
{2: 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 11: 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 54: 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 571: 1125, 574: 1125, 1125, 1125, 581: 1125, 1125, 1125, 1125, 1125, 1125, 1125, 589: 1125, 593: 1125, 595: 1125, 600: 1125, 613: 1125, 618: 1125, 625: 1125, 1125, 651: 1125, 658: 1125, 666: 1125, 1125, 1125, 670: 1125, 674: 1125, 1125, 1125, 678: 1125, 1125, 1125, 1125, 1125, 1125, 685: 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 695: 1125, 697: 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 750: 1125, 755: 1125, 869: 1125, 1125, 872: 1125, 874: 1125, 876: 1125, 880: 1125, 889: 1125, 1125, 1125},
{2: 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 11: 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 54: 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 6949, 6955, 6956, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 571: 1123, 574: 1123, 1123, 1123, 581: 1123, 1123, 1123, 1123, 1123, 1123, 1123, 589: 1123, 593: 1123, 595: 1123, 600: 1123, 613: 6952, 618: 1123, 625: 1123, 1123, 651: 1123, 658: 1123, 666: 1123, 1123, 1123, 670: 1123, 674: 1123, 1123, 1123, 678: 1123, 1123, 1123, 1123, 1123, 1123, 685: 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 695: 1123, 697: 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 750: 1123, 755: 4397, 869: 4395, 4396, 872: 6367, 874: 6369, 876: 6368, 880: 6364, 889: 6948, 6951, 6947, 926: 6867, 930: 6945, 986: 6946, 992: 6944, 1318: 6957, 6950},
{2: 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 11: 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 54: 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 571: 1121, 574: 1121, 1121, 1121, 581: 1121, 1121, 1121, 1121, 1121, 1121, 1121, 589: 1121, 593: 1121, 595: 1121, 600: 1121, 613: 1121, 618: 1121, 625: 1121, 1121, 651: 1121, 658: 1121, 666: 1121, 1121, 1121, 670: 1121, 674: 1121, 1121, 1121, 678: 1121, 1121, 1121, 1121, 1121, 1121, 685: 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 695: 1121, 697: 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 750: 1121, 755: 1121, 869: 1121, 1121, 872: 1121, 874: 1121, 876: 1121, 880: 1121, 889: 1121, 1121, 1121},
{2: 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 11: 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 54: 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 571: 1117, 574: 1117, 1117, 1117, 581: 1117, 1117, 1117, 1117, 1117, 1117, 1117, 589: 1117, 593: 1117, 595: 1117, 600: 1117, 613: 1117, 618: 1117, 625: 1117, 1117, 651: 1117, 658: 1117, 666: 1117, 1117, 1117, 670: 1117, 674: 1117, 1117, 1117, 678: 1117, 1117, 1117, 1117, 1117, 1117, 685: 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 695: 1117, 697: 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 750: 1117, 755: 1117, 869: 1117, 1117, 872: 1117, 874: 1117, 876: 1117, 880: 1117, 889: 1117, 1117, 1117},
{2: 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 11: 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 54: 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 571: 1116, 574: 1116, 1116, 1116, 581: 1116, 1116, 1116, 1116, 1116, 1116, 1116, 589: 1116, 593: 1116, 595: 1116, 600: 1116, 613: 1116, 618: 1116, 625: 1116, 1116, 651: 1116, 658: 1116, 666: 1116, 1116, 1116, 670: 1116, 674: 1116, 1116, 1116, 678: 1116, 1116, 1116, 1116, 1116, 1116, 685: 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 695: 1116, 697: 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 750: 1116, 755: 1116, 869: 1116, 1116, 872: 1116, 874: 1116, 876: 1116, 880: 1116, 889: 1116, 1116, 1116},
// 3935
{2: 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 11: 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 54: 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 571: 1122, 574: 1122, 1122, 1122, 581: 1122, 1122, 1122, 1122, 1122, 1122, 1122, 589: 1122, 593: 1122, 595: 1122, 600: 1122, 613: 1122, 618: 1122, 625: 1122, 1122, 651: 1122, 658: 1122, 666: 1122, 1122, 1122, 670: 1122, 674: 1122, 1122, 1122, 678: 1122, 1122, 1122, 1122, 1122, 1122, 685: 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 695: 1122, 697: 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 750: 1122, 755: 1122, 869: 1122, 1122, 872: 1122, 874: 1122, 876: 1122, 880: 1122, 889: 1122, 1122, 1122},
{2256, 2256, 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 2256, 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 2256, 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 570: 2256, 6976, 2256, 577: 6975, 579: 2256, 2256, 590: 2256, 592: 2256, 594: 2256, 596: 2256, 598: 2256, 2256, 601: 2256, 2256, 2256, 2256, 606: 3965, 3963, 3964, 3962, 3960, 2256, 2256, 811: 6974, 3217, 3218, 3216, 841: 3961, 3959, 1415: 6973, 6972},
{2260, 2260, 10: 2260, 53: 2260, 570: 2260, 572: 2260, 579: 2260, 2260, 590: 2260, 592: 2260, 594: 2260, 596: 2260, 598: 2260, 2260, 601: 2260, 2260, 2260, 2260, 611: 2260, 2260},
{1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 570: 1554, 1554, 1554, 574: 1554, 576: 1554, 1554, 1554, 1554, 1554, 583: 1554, 1554, 1554, 590: 1554, 1554, 1554, 594: 1554, 596: 1554, 598: 1554, 1554, 1554, 1554, 1554, 1554, 1554, 606: 1554, 1554, 1554, 1554, 1554, 1554, 1554, 619: 1554, 645: 1554, 648: 1554, 1554, 1554, 652: 1554, 1554, 1554, 1554, 1554, 1554, 659: 1554, 1554, 1554, 1554, 1554, 1554, 1554, 669: 1554, 671: 1554, 1554, 1554, 677: 1554, 746: 1554, 754: 6967, 758: 1554, 1554},
{2250, 2250, 10: 2250, 53: 2250, 570: 2250, 572: 2250, 579: 2250, 2250, 590: 2250, 592: 2250, 594: 2250, 596: 2250, 598: 2250, 2250, 601: 2250, 2250, 2250, 2250, 611: 2250, 2250},
// 3940
{1115, 1115, 10: 6965, 53: 1115, 570: 1115, 572: 1115, 579: 1115, 1115, 590: 1115, 592: 1115, 594: 1115, 596: 1115, 598: 1115, 1115, 601: 1115, 1115, 1115, 1115, 611: 1115, 1115},
{2245, 2245, 53: 2245, 570: 2245, 572: 2245, 579: 2245, 2245, 590: 2245, 592: 2245, 594: 2245, 596: 2245, 598: 2245, 2245, 601: 2245, 2245, 2245, 2245, 611: 2245, 6930, 1238: 6964},
{1286, 1286, 53: 1286, 570: 1286, 572: 1286, 579: 1286, 1286, 590: 1286, 592: 1286, 594: 1286, 596: 1286, 598: 1286, 1286, 601: 1286, 1286, 1286, 1286, 611: 1286},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 600: 6959, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 6960, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 6958, 1222: 6966},
{2249, 2249, 10: 2249, 53: 2249, 570: 2249, 572: 2249, 579: 2249, 2249, 590: 2249, 592: 2249, 594: 2249, 596: 2249, 598: 2249, 2249, 601: 2249, 2249, 2249, 2249, 611: 2249, 2249},
// 3945
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 6968, 811: 6969, 3217, 3218, 3216},
{2259, 2259, 10: 2259, 53: 2259, 570: 2259, 572: 2259, 579: 2259, 2259, 590: 2259, 592: 2259, 594: 2259, 596: 2259, 598: 2259, 2259, 601: 2259, 2259, 2259, 2259, 611: 2259, 2259},
{1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 4708, 1553, 1553, 1553, 574: 1553, 576: 1553, 1553, 1553, 1553, 1553, 583: 1553, 1553, 1553, 590: 1553, 1553, 1553, 594: 1553, 596: 1553, 598: 1553, 1553, 1553, 1553, 1553, 1553, 1553, 606: 1553, 1553, 1553, 1553, 1553, 1553, 1553, 619: 1553, 645: 1553, 648: 1553, 1553, 1553, 652: 1553, 1553, 1553, 1553, 1553, 1553, 659: 1553, 1553, 1553, 1553, 1553, 1553, 1553, 669: 1553, 671: 1553, 1553, 1553, 677: 1553, 746: 1553, 754: 6970, 758: 1553, 1553},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 6971, 811: 4127, 3217, 3218, 3216},
{2258, 2258, 10: 2258, 53: 2258, 570: 2258, 572: 2258, 579: 2258, 2258, 590: 2258, 592: 2258, 594: 2258, 596: 2258, 598: 2258, 2258, 601: 2258, 2258, 2258, 2258, 611: 2258, 2258},
// 3950
{2257, 2257, 10: 2257, 53: 2257, 570: 2257, 572: 2257, 579: 2257, 2257, 590: 2257, 592: 2257, 594: 2257, 596: 2257, 598: 2257, 2257, 601: 2257, 2257, 2257, 2257, 611: 2257, 2257},
{2255, 2255, 10: 2255, 53: 2255, 570: 2255, 572: 2255, 579: 2255, 2255, 590: 2255, 592: 2255, 594: 2255, 596: 2255, 598: 2255, 2255, 601: 2255, 2255, 2255, 2255, 611: 2255, 2255},
{2254, 2254, 10: 2254, 53: 2254, 570: 2254, 572: 2254, 579: 2254, 2254, 590: 2254, 592: 2254, 594: 2254, 596: 2254, 598: 2254, 2254, 601: 2254, 2254, 2254, 2254, 611: 2254, 2254},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 571: 6978, 811: 6977, 3217, 3218, 3216},
{2252, 2252, 10: 2252, 53: 2252, 570: 2252, 572: 2252, 579: 2252, 2252, 590: 2252, 592: 2252, 594: 2252, 596: 2252, 598: 2252, 2252, 601: 2252, 2252, 2252, 2252, 611: 2252, 2252},
// 3955
{2253, 2253, 10: 2253, 53: 2253, 570: 2253, 572: 2253, 579: 2253, 2253, 590: 2253, 592: 2253, 594: 2253, 596: 2253, 598: 2253, 2253, 601: 2253, 2253, 2253, 2253, 611: 2253, 2253},
{2251, 2251, 10: 2251, 53: 2251, 570: 2251, 572: 2251, 579: 2251, 2251, 590: 2251, 592: 2251, 594: 2251, 596: 2251, 598: 2251, 2251, 601: 2251, 2251, 2251, 2251, 611: 2251, 2251},
{1287, 1287},
{1299, 1299},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 6994, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 6995, 3217, 3218, 3216},
// 3960
{106: 6987, 313: 6986},
{1291, 1291},
{937: 6985},
{1290, 1290},
{1293, 1293, 106: 6992},
// 3965
{313: 6988},
{1292, 1292, 106: 6990, 937: 6989},
{1295, 1295},
{937: 6991},
{1294, 1294},
// 3970
{937: 6993},
{1296, 1296},
{1998, 1998, 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 6996, 3217, 3218, 3216},
{1298, 1298},
{1297, 1297},
// 3975
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 6998, 3217, 3218, 3216},
{1303, 1303},
{1307, 1307, 579: 7000},
{668: 3783, 816: 7002, 1554: 7001},
{1306, 1306, 10: 7003},
// 3980
{1305, 1305, 10: 1305},
{668: 3783, 816: 7004},
{1304, 1304, 10: 1304},
{603: 7006},
{571: 7008, 668: 3783, 816: 7009, 1479: 7007},
// 3985
{1310, 1310},
{1309, 1309},
{1308, 1308},
{2: 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 11: 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 54: 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 600: 1325, 602: 1325, 872: 6367, 874: 6369, 876: 6368, 986: 6370, 1035: 7011},
{2: 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 11: 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 54: 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 600: 1628, 602: 7012, 1245: 7013},
// 3990
{2: 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 11: 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 54: 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 600: 1627},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 7014},
{222: 1189, 569: 1189, 572: 1189, 6435, 587: 1189, 597: 1189, 646: 1189, 694: 1189, 985: 7015},
{222: 7023, 569: 7016, 572: 3075, 587: 7024, 597: 7022, 646: 3073, 694: 3069, 815: 7021, 846: 7019, 3070, 3071, 3072, 3081, 3079, 3078, 3077, 856: 4066, 7020, 7018, 1146: 7017, 1244: 7025},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 2764, 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 3076, 572: 3075, 587: 3074, 646: 3073, 694: 3069, 811: 4247, 3217, 3218, 3216, 6879, 846: 4067, 3070, 3071, 3072, 3081, 3079, 3078, 3077, 856: 4066, 4069, 4068, 861: 4248, 943: 5981, 1174: 7035},
// 3995
{569: 4113, 989: 5691, 1144: 7034},
{1620, 1620, 570: 1620, 579: 1620},
{1619, 1619, 570: 1619, 579: 1619, 1081, 590: 1081, 592: 1081},
{1618, 1618, 570: 1618, 579: 1618},
{1617, 1617, 570: 1617, 579: 1617, 1080, 590: 1080, 592: 1080, 596: 4079, 598: 4078, 604: 4077, 882: 4080, 4081},
// 4000
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 4247, 3217, 3218, 3216, 861: 7027, 1394: 7026},
{569: 1615},
{569: 1614, 679: 4112, 1064: 4111, 1145: 4110},
{1600, 1600, 579: 1600},
{1616, 1616, 10: 7030, 570: 1616, 579: 1616},
// 4005
{591: 6497, 757: 6498, 931: 7028},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 4119, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4115, 932: 7029},
{1604, 1604, 10: 1604, 570: 1604, 579: 1604},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 4247, 3217, 3218, 3216, 861: 7031},
{591: 6497, 757: 6498, 931: 7032},
// 4010
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 4119, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4115, 932: 7033},
{1603, 1603, 10: 1603, 570: 1603, 579: 1603},
{1621, 1621, 10: 5692, 570: 1621, 579: 1621},
{53: 7036},
{222: 7023, 569: 3076, 572: 3075, 587: 7024, 646: 3073, 694: 3069, 815: 7041, 846: 7039, 3070, 3071, 3072, 3081, 3079, 3078, 3077, 856: 4066, 7040, 7038, 1146: 7037},
// 4015
{569: 4113, 989: 5691, 1144: 7042},
{1625, 1625, 570: 1625, 579: 1625},
{1624, 1624, 570: 1624, 579: 1624, 1081, 590: 1081, 592: 1081},
{1623, 1623, 570: 1623, 579: 1623},
{1622, 1622, 570: 1622, 579: 1622, 1080, 590: 1080, 592: 1080, 596: 4079, 598: 4078, 604: 4077, 882: 4080, 4081},
// 4020
{1626, 1626, 10: 5692, 570: 1626, 579: 1626},
{2: 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 11: 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 54: 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 588: 1325, 600: 1325, 602: 1325, 872: 6367, 874: 6369, 876: 6368, 986: 6370, 1035: 7044},
{2: 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 11: 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 54: 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 588: 4954, 600: 2236, 602: 2236, 1008: 7045},
{2: 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 11: 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 54: 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 600: 1628, 602: 7012, 1245: 7046},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 7047},
// 4025
{222: 1189, 569: 1189, 572: 1189, 6435, 587: 1189, 597: 1189, 646: 1189, 694: 1189, 985: 7048},
{222: 7023, 569: 7016, 572: 3075, 587: 7024, 597: 7022, 646: 3073, 694: 3069, 815: 7021, 846: 7019, 3070, 3071, 3072, 3081, 3079, 3078, 3077, 856: 4066, 7020, 7018, 1146: 7017, 1244: 7049},
{1602, 1602, 570: 7051, 579: 1602, 1457: 7050},
{1629, 1629, 579: 1629},
{331: 7052},
// 4030
{684: 7053},
{751: 7054},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 4247, 3217, 3218, 3216, 861: 6486, 1043: 6487, 1076: 7055},
{1601, 1601, 10: 6489, 579: 1601},
{1633, 1633, 569: 7064, 754: 2202},
// 4035
{1634, 1634},
{754: 7059},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 7060, 3217, 3218, 3216},
{1632, 1632, 569: 7061},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 2305, 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4062, 894: 4568, 958: 7062},
// 4040
{53: 7063},
{1630, 1630},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 2305, 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 4062, 894: 4568, 958: 7065},
{53: 7066},
{1631, 1631},
// 4045
{2: 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 11: 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 54: 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 575: 2475, 578: 2475, 593: 2475, 597: 2475, 600: 2475, 618: 2475, 748: 2475},
{603: 7170},
{603: 7078},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 7073, 811: 6362, 3217, 3218, 3216, 947: 7075, 1404: 7074},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 4149, 924: 7072},
// 4050
{10: 4151, 603: 2396, 752: 2396},
{603: 2398, 752: 2398},
{10: 7076, 603: 2397, 752: 2397},
{10: 2395, 603: 2395, 752: 2395},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 6362, 3217, 3218, 3216, 947: 7077},
// 4055
{10: 2394, 603: 2394, 752: 2394},
{571: 7079},
{2393, 2393, 18: 2393, 61: 2393, 64: 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 570: 2393, 753: 2393, 1000: 7080},
{2399, 2399, 18: 7116, 61: 7103, 64: 7083, 7112, 7105, 7088, 7084, 7085, 7102, 7082, 7092, 7100, 7115, 7091, 7101, 7099, 7093, 7104, 7118, 7122, 7096, 7113, 7097, 7106, 7087, 7114, 7119, 7086, 7089, 7120, 7090, 7098, 7121, 7094, 7095, 570: 7107, 753: 7117, 996: 7109, 7108, 7111, 7081, 1001: 7110},
{2392, 2392, 18: 2392, 61: 2392, 64: 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 570: 2392, 753: 2392},
// 4060
{591: 2391, 595: 2391},
{591: 2390, 595: 2390},
{591: 2389, 595: 2389},
{591: 2388, 595: 2388},
{591: 2387, 595: 2387, 666: 2387, 2387},
// 4065
{591: 2386, 595: 2386, 666: 2386, 2386},
{591: 2385, 595: 2385, 666: 2385, 2385},
{591: 2384, 595: 2384, 666: 2384, 2384},
{591: 2383, 595: 2383, 666: 2383, 2383},
{591: 2382, 595: 2382, 666: 2382, 2382},
// 4070
{591: 2381, 595: 2381, 666: 2381, 2381},
{591: 2380, 595: 2380, 666: 2380, 2380},
{591: 2379, 595: 2379, 666: 2379, 2379},
{591: 2378, 595: 2378, 666: 2378, 2378},
{591: 2377, 595: 2377, 666: 2377, 2377},
// 4075
{591: 2376, 595: 2376, 666: 2376, 2376},
{571: 2375, 591: 2375},
{571: 2374, 591: 2374},
{571: 2373, 591: 2373},
{571: 2372, 591: 2372},
// 4080
{571: 2371, 591: 2371},
{571: 2370, 591: 2370},
{571: 2369, 591: 2369},
{2: 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 11: 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 54: 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 571: 2368, 588: 2368, 2368, 591: 2368},
{2: 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 11: 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 54: 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 571: 2367, 588: 2367, 2367, 591: 2367},
// 4085
{331: 7169},
{591: 4828, 595: 2453, 840: 7167},
{591: 4828, 595: 2453, 666: 2453, 2453, 840: 7165},
{571: 2453, 591: 4828, 840: 7163},
{2: 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 11: 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 54: 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 571: 2453, 588: 2453, 2453, 591: 4828, 840: 7158},
// 4090
{571: 2453, 591: 4828, 595: 2453, 840: 7153},
{571: 2453, 591: 4828, 595: 2453, 840: 7150},
{591: 4828, 595: 2453, 840: 7145},
{147: 2453, 175: 2453, 591: 4828, 595: 2453, 840: 7142},
{238: 2453, 264: 2453, 266: 2453, 591: 4828, 595: 2453, 666: 2453, 2453, 840: 7139},
// 4095
{238: 2453, 264: 2453, 266: 2453, 591: 4828, 595: 2453, 666: 2453, 2453, 840: 7133},
{571: 2453, 591: 4828, 840: 7131},
{571: 2453, 591: 4828, 840: 7129},
{571: 2453, 591: 4828, 840: 7127},
{571: 2453, 591: 4828, 840: 7125},
// 4100
{571: 2453, 591: 4828, 840: 7123},
{571: 7124},
{2345, 2345, 18: 2345, 61: 2345, 64: 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 570: 2345, 753: 2345},
{571: 7126},
{2346, 2346, 18: 2346, 61: 2346, 64: 2346, 2346, 2346, 2346, 2346, 2346, 2346, 2346, 2346, 2346, 2346, 2346, 2346, 2346, 2346, 2346, 2346, 2346, 2346, 2346, 2346, 2346, 2346, 2346, 2346, 2346, 2346, 2346, 2346, 2346, 2346, 2346, 2346, 570: 2346, 753: 2346},
// 4105
{571: 7128},
{2347, 2347, 18: 2347, 61: 2347, 64: 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 570: 2347, 753: 2347},
{571: 7130},
{2348, 2348, 18: 2348, 61: 2348, 64: 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2348, 570: 2348, 753: 2348},
{571: 7132},
// 4110
{2349, 2349, 18: 2349, 61: 2349, 64: 2349, 2349, 2349, 2349, 2349, 2349, 2349, 2349, 2349, 2349, 2349, 2349, 2349, 2349, 2349, 2349, 2349, 2349, 2349, 2349, 2349, 2349, 2349, 2349, 2349, 2349, 2349, 2349, 2349, 2349, 2349, 2349, 2349, 570: 2349, 753: 2349},
{238: 7136, 264: 7137, 266: 7138, 595: 3209, 666: 4882, 4883, 839: 4881, 1017: 7134, 1273: 7135},
{2351, 2351, 18: 2351, 61: 2351, 64: 2351, 2351, 2351, 2351, 2351, 2351, 2351, 2351, 2351, 2351, 2351, 2351, 2351, 2351, 2351, 2351, 2351, 2351, 2351, 2351, 2351, 2351, 2351, 2351, 2351, 2351, 2351, 2351, 2351, 2351, 2351, 2351, 2351, 570: 2351, 753: 2351},
{2350, 2350, 18: 2350, 61: 2350, 64: 2350, 2350, 2350, 2350, 2350, 2350, 2350, 2350, 2350, 2350, 2350, 2350, 2350, 2350, 2350, 2350, 2350, 2350, 2350, 2350, 2350, 2350, 2350, 2350, 2350, 2350, 2350, 2350, 2350, 2350, 2350, 2350, 2350, 570: 2350, 753: 2350},
{2338, 2338, 18: 2338, 61: 2338, 64: 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338, 570: 2338, 753: 2338},
// 4115
{2337, 2337, 18: 2337, 61: 2337, 64: 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 570: 2337, 753: 2337},
{2336, 2336, 18: 2336, 61: 2336, 64: 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, 570: 2336, 753: 2336},
{238: 7136, 264: 7137, 266: 7138, 595: 3209, 666: 4882, 4883, 839: 4881, 1017: 7140, 1273: 7141},
{2353, 2353, 18: 2353, 61: 2353, 64: 2353, 2353, 2353, 2353, 2353, 2353, 2353, 2353, 2353, 2353, 2353, 2353, 2353, 2353, 2353, 2353, 2353, 2353, 2353, 2353, 2353, 2353, 2353, 2353, 2353, 2353, 2353, 2353, 2353, 2353, 2353, 2353, 2353, 570: 2353, 753: 2353},
{2352, 2352, 18: 2352, 61: 2352, 64: 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 570: 2352, 753: 2352},
// 4120
{147: 4173, 175: 4172, 595: 3209, 839: 4086, 854: 7144, 979: 7143},
{2355, 2355, 18: 2355, 61: 2355, 64: 2355, 2355, 2355, 2355, 2355, 2355, 2355, 2355, 2355, 2355, 2355, 2355, 2355, 2355, 2355, 2355, 2355, 2355, 2355, 2355, 2355, 2355, 2355, 2355, 2355, 2355, 2355, 2355, 2355, 2355, 2355, 2355, 2355, 570: 2355, 753: 2355},
{2354, 2354, 18: 2354, 61: 2354, 64: 2354, 2354, 2354, 2354, 2354, 2354, 2354, 2354, 2354, 2354, 2354, 2354, 2354, 2354, 2354, 2354, 2354, 2354, 2354, 2354, 2354, 2354, 2354, 2354, 2354, 2354, 2354, 2354, 2354, 2354, 2354, 2354, 2354, 570: 2354, 753: 2354},
{595: 3209, 839: 4086, 854: 7146},
{290: 7147},
// 4125
{650: 7148},
{156: 7149},
{2356, 2356, 18: 2356, 61: 2356, 64: 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 570: 2356, 753: 2356},
{571: 7151, 595: 3209, 839: 4086, 854: 7152},
{2358, 2358, 18: 2358, 61: 2358, 64: 2358, 2358, 2358, 2358, 2358, 2358, 2358, 2358, 2358, 2358, 2358, 2358, 2358, 2358, 2358, 2358, 2358, 2358, 2358, 2358, 2358, 2358, 2358, 2358, 2358, 2358, 2358, 2358, 2358, 2358, 2358, 2358, 2358, 570: 2358, 753: 2358},
// 4130
{2357, 2357, 18: 2357, 61: 2357, 64: 2357, 2357, 2357, 2357, 2357, 2357, 2357, 2357, 2357, 2357, 2357, 2357, 2357, 2357, 2357, 2357, 2357, 2357, 2357, 2357, 2357, 2357, 2357, 2357, 2357, 2357, 2357, 2357, 2357, 2357, 2357, 2357, 2357, 570: 2357, 753: 2357},
{571: 7155, 595: 3209, 839: 4086, 854: 7154},
{2359, 2359, 18: 2359, 61: 2359, 64: 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359, 129: 3987, 133: 3995, 154: 3983, 156: 3980, 3982, 3979, 3981, 3985, 3986, 3991, 3990, 3989, 3993, 3994, 3988, 3992, 3984, 570: 2359, 753: 2359, 927: 7156},
{2360, 2360, 18: 2360, 61: 2360, 64: 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360, 570: 2360, 753: 2360},
{398: 7157},
// 4135
{2361, 2361, 18: 2361, 61: 2361, 64: 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, 570: 2361, 753: 2361},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 571: 3956, 588: 7161, 7162, 811: 3957, 3217, 3218, 3216, 845: 7160, 1535: 7159},
{2362, 2362, 18: 2362, 61: 2362, 64: 2362, 2362, 2362, 2362, 2362, 2362, 2362, 2362, 2362, 2362, 2362, 2362, 2362, 2362, 2362, 2362, 2362, 2362, 2362, 2362, 2362, 2362, 2362, 2362, 2362, 2362, 2362, 2362, 2362, 2362, 2362, 2362, 2362, 570: 2362, 753: 2362},
{477, 477, 18: 477, 61: 477, 64: 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 570: 477, 753: 477},
{476, 476, 18: 476, 61: 476, 64: 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 570: 476, 753: 476},
// 4140
{475, 475, 18: 475, 61: 475, 64: 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 570: 475, 753: 475},
{571: 7164},
{2363, 2363, 18: 2363, 61: 2363, 64: 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, 570: 2363, 753: 2363},
{595: 3209, 666: 4882, 4883, 839: 4881, 1017: 7166},
{2364, 2364, 18: 2364, 61: 2364, 64: 2364, 2364, 2364, 2364, 2364, 2364, 2364, 2364, 2364, 2364, 2364, 2364, 2364, 2364, 2364, 2364, 2364, 2364, 2364, 2364, 2364, 2364, 2364, 2364, 2364, 2364, 2364, 2364, 2364, 2364, 2364, 2364, 2364, 570: 2364, 753: 2364},
// 4145
{595: 3209, 839: 4086, 854: 7168},
{2365, 2365, 18: 2365, 61: 2365, 64: 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, 570: 2365, 753: 2365},
{2: 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 11: 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 54: 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 571: 2366, 588: 2366, 2366, 591: 2366},
{571: 7171},
{2393, 2393, 18: 2393, 61: 2393, 64: 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 570: 2393, 753: 2393, 1000: 7172},
// 4150
{2400, 2400, 18: 7116, 61: 7103, 64: 7083, 7112, 7105, 7088, 7084, 7085, 7102, 7082, 7092, 7100, 7115, 7091, 7101, 7099, 7093, 7104, 7118, 7122, 7096, 7113, 7097, 7106, 7087, 7114, 7119, 7086, 7089, 7120, 7090, 7098, 7121, 7094, 7095, 570: 7107, 753: 7117, 996: 7109, 7108, 7111, 7081, 1001: 7110},
{178: 7358, 352: 7359},
{216: 7354},
{848, 848, 594: 7351, 619: 7350, 1516: 7349},
{19: 7334, 54: 7335, 152: 7336, 7331, 269: 7333, 646: 7330, 683: 7332, 1011: 7337},
// 4155
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 7317, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 7318},
{932, 932, 599: 7312},
{172: 7311},
{437: 7309},
{172: 7308},
// 4160
{147: 4173, 173: 7303, 175: 4172, 294: 7302, 979: 7304},
{926, 926},
{914, 914, 262: 7284, 307: 7285, 318: 7286, 321: 7283, 347: 7288, 357: 7287, 375: 7290, 379: 7289, 596: 914, 598: 914, 914, 755: 7291, 1324: 7282, 1519: 7281, 7280},
{924, 924},
{923, 923},
// 4165
{854, 854, 348: 7272, 594: 854, 599: 7271, 619: 854},
{206: 7268, 216: 7265, 611: 7267, 632: 7266},
{206: 7263, 216: 7262},
{603: 897, 645: 897},
{603: 896, 645: 896},
// 4170
{603: 895, 645: 895},
{892, 892, 594: 892, 619: 892},
{891, 891, 594: 891, 619: 891},
{890, 890, 594: 890, 619: 890},
{889, 889, 594: 889, 619: 889},
// 4175
{173: 7260},
{603: 7232, 645: 7233, 944: 7255},
{147: 838, 175: 838, 200: 7226, 1269: 7249},
{569: 7244},
{880, 880, 594: 880, 619: 880},
// 4180
{878, 878, 594: 878, 619: 878},
{172: 7242, 208: 7243, 275: 7241},
{874, 874, 594: 874, 619: 874},
{836, 836, 594: 836, 603: 7232, 619: 836, 645: 7233, 944: 7235, 991: 7240},
{172: 7239},
// 4185
{172: 7238},
{172: 7237},
{836, 836, 594: 836, 603: 7232, 619: 836, 645: 7233, 944: 7235, 991: 7234},
{868, 868, 594: 868, 619: 868},
{867, 867, 594: 867, 619: 867},
// 4190
{866, 866, 594: 866, 619: 866},
{865, 865, 594: 865, 619: 865},
{864, 864, 594: 864, 619: 864},
{863, 863, 594: 863, 619: 863},
{862, 862, 594: 862, 619: 862},
// 4195
{861, 861, 594: 861, 619: 861},
{860, 860, 594: 860, 619: 860},
{859, 859, 594: 859, 619: 859},
{858, 858, 594: 858, 619: 858},
{172: 7231},
// 4200
{856, 856, 594: 856, 619: 856},
{855, 855, 594: 855, 619: 855},
{172: 844, 208: 844, 275: 844},
{172: 843, 208: 843, 235: 843, 275: 843},
{147: 837, 173: 837, 175: 837, 294: 837},
// 4205
{172: 833},
{172: 832},
{206: 7230},
{148, 148},
{857, 857, 594: 857, 619: 857},
// 4210
{2: 894, 894, 894, 894, 894, 894, 894, 894, 11: 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 54: 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 600: 894},
{2: 893, 893, 893, 893, 893, 893, 893, 893, 11: 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 54: 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 600: 893},
{869, 869, 594: 869, 619: 869},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 6362, 3217, 3218, 3216, 947: 7236},
{835, 835, 594: 835, 619: 835},
// 4215
{870, 870, 594: 870, 619: 870},
{871, 871, 594: 871, 619: 871},
{872, 872, 594: 872, 619: 872},
{873, 873, 594: 873, 619: 873},
{877, 877, 594: 877, 619: 877},
// 4220
{876, 876, 594: 876, 619: 876},
{875, 875, 594: 875, 619: 875},
{600: 7245},
{53: 7246},
{341: 7248, 395: 7247},
// 4225
{881, 881, 594: 881, 619: 881},
{879, 879, 594: 879, 619: 879},
{147: 4173, 175: 4172, 979: 7250},
{603: 7232, 645: 7233, 944: 7252, 1326: 7251},
{836, 836, 594: 836, 603: 7232, 619: 836, 645: 7233, 944: 7235, 991: 7254},
// 4230
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 7253},
{834, 834, 594: 834, 603: 834, 619: 834, 645: 834},
{882, 882, 594: 882, 619: 882},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 7256, 3217, 3218, 3216, 844: 7257},
{1323, 1323, 594: 1323, 603: 7232, 619: 1323, 645: 7233, 754: 4155, 944: 7258},
// 4235
{885, 885, 594: 885, 619: 885},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 7259, 3217, 3218, 3216},
{884, 884, 594: 884, 619: 884},
{836, 836, 594: 836, 603: 7232, 619: 836, 645: 7233, 944: 7235, 991: 7261},
{887, 887, 594: 887, 619: 887},
// 4240
{595: 3209, 839: 4778, 865: 7264},
{849, 849, 594: 849, 619: 849},
{920, 920},
{595: 3209, 839: 4778, 865: 7270},
{852, 852, 594: 852, 619: 852},
// 4245
{571: 7269},
{850, 850, 594: 850, 619: 850},
{851, 851, 594: 851, 619: 851},
{921, 921},
{646: 7275, 683: 7067, 978: 7274, 1517: 7273},
// 4250
{853, 853, 594: 853, 619: 853},
{922, 922},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 6362, 3217, 3218, 3216, 947: 7279},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 7276},
{916, 916, 573: 7277},
// 4255
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 7278, 3217, 3218, 3216},
{915, 915},
{917, 917},
{901, 901, 596: 901, 598: 901, 7298, 1518: 7297},
{913, 913, 10: 7295, 596: 913, 598: 913, 913},
// 4260
{912, 912, 10: 912, 596: 912, 598: 912, 912},
{910, 910, 10: 910, 596: 910, 598: 910, 910},
{909, 909, 10: 909, 596: 909, 598: 909, 909},
{433: 7294},
{472: 7293},
// 4265
{426: 7292},
{905, 905, 10: 905, 596: 905, 598: 905, 905},
{904, 904, 10: 904, 596: 904, 598: 904, 904},
{903, 903, 10: 903, 596: 903, 598: 903, 903},
{902, 902, 10: 902, 596: 902, 598: 902, 902},
// 4270
{906, 906, 10: 906, 596: 906, 598: 906, 906},
{907, 907, 10: 907, 596: 907, 598: 907, 907},
{908, 908, 10: 908, 596: 908, 598: 908, 908},
{262: 7284, 307: 7285, 318: 7286, 321: 7283, 347: 7288, 357: 7287, 375: 7290, 379: 7289, 755: 7291, 1324: 7296},
{911, 911, 10: 911, 596: 911, 598: 911, 911},
// 4275
{1135, 1135, 596: 4079, 598: 4078, 883: 4136, 971: 7301},
{183: 7299},
{595: 3209, 839: 4778, 865: 7300},
{900, 900, 596: 900, 598: 900},
{925, 925},
// 4280
{927, 927},
{836, 836, 594: 836, 603: 7232, 619: 836, 645: 7233, 944: 7235, 991: 7307},
{603: 7232, 645: 7233, 944: 7252, 1326: 7305},
{836, 836, 594: 836, 603: 7232, 619: 836, 645: 7233, 944: 7235, 991: 7306},
{883, 883, 594: 883, 619: 883},
// 4285
{888, 888, 594: 888, 619: 888},
{928, 928},
{172: 7310},
{929, 929},
{930, 930},
// 4290
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 571: 3956, 670: 6239, 811: 3957, 3217, 3218, 3216, 845: 6238, 895: 7313},
{899, 899, 579: 7315, 1555: 7314},
{931, 931},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 6728, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 571: 6733, 811: 3957, 3217, 3218, 3216, 845: 6193, 938: 6735, 963: 6736, 6734, 1013: 7316},
{898, 898, 10: 6737},
// 4295
{836, 836, 123: 2092, 237: 2092, 281: 2092, 573: 2092, 594: 836, 603: 7232, 619: 836, 645: 7233, 749: 2092, 754: 2092, 944: 7235, 991: 7329},
{123: 1189, 237: 7320, 281: 1189, 573: 6435, 749: 1189, 985: 7319},
{123: 7321, 281: 7323, 749: 7322},
{934, 934},
{468, 468, 594: 4940, 928: 4941, 7328},
// 4300
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 7325, 3217, 3218, 3216},
{468, 468, 594: 4940, 928: 4941, 7324},
{918, 918},
{123: 7326},
{468, 468, 594: 4940, 928: 4941, 7327},
// 4305
{933, 933},
{935, 935},
{886, 886, 594: 886, 619: 886},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 7348},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 7347},
// 4310
{2: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 11: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 54: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 618: 5648, 904: 7345},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 7344},
{240: 7342},
{611: 7340},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 571: 3956, 670: 6239, 811: 3957, 3217, 3218, 3216, 845: 6238, 895: 7339},
// 4315
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 7338},
{919, 919},
{936, 936},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 575: 3214, 811: 3213, 3217, 3218, 3216, 962: 7341},
{937, 937},
// 4320
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 5874, 3217, 3218, 3216, 1034: 7343},
{938, 938},
{939, 939},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 6362, 3217, 3218, 3216, 947: 7346},
{940, 940},
// 4325
{941, 941},
{942, 942},
{943, 943},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3783, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3874, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 7353, 3855, 3937, 3854, 3851},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 7352},
// 4330
{846, 846, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
{847, 847, 578: 3950, 746: 3951},
{183: 7356, 595: 3209, 839: 4778, 865: 7355},
{2404, 2404},
{595: 3209, 839: 4778, 865: 7357},
// 4335
{2403, 2403},
{172: 7362, 352: 7363},
{603: 7360},
{571: 7361},
{2401, 2401},
// 4340
{2406, 2406},
{603: 7364},
{571: 7365},
{2405, 2405},
{178: 7367},
// 4345
{603: 7368},
{571: 7369},
{2393, 2393, 18: 2393, 61: 2393, 64: 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 570: 2393, 753: 2393, 1000: 7370},
{2407, 2407, 18: 7116, 61: 7103, 64: 7083, 7112, 7105, 7088, 7084, 7085, 7102, 7082, 7092, 7100, 7115, 7091, 7101, 7099, 7093, 7104, 7118, 7122, 7096, 7113, 7097, 7106, 7087, 7114, 7119, 7086, 7089, 7120, 7090, 7098, 7121, 7094, 7095, 570: 7107, 753: 7117, 996: 7109, 7108, 7111, 7081, 1001: 7110},
{178: 7372},
// 4350
{2408, 2408},
{178: 7374},
{2393, 2393, 18: 2393, 61: 2393, 64: 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 570: 2393, 753: 2393, 1000: 7375},
{2409, 2409, 18: 7116, 61: 7103, 64: 7083, 7112, 7105, 7088, 7084, 7085, 7102, 7082, 7092, 7100, 7115, 7091, 7101, 7099, 7093, 7104, 7118, 7122, 7096, 7113, 7097, 7106, 7087, 7114, 7119, 7086, 7089, 7120, 7090, 7098, 7121, 7094, 7095, 570: 7107, 753: 7117, 996: 7109, 7108, 7111, 7081, 1001: 7110},
{178: 7377},
// 4355
{2410, 2410},
{752: 7383},
{752: 7380},
{571: 7381},
{2393, 2393, 18: 2393, 61: 2393, 64: 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 570: 2393, 753: 2393, 1000: 7382},
// 4360
{2411, 2411, 18: 7116, 61: 7103, 64: 7083, 7112, 7105, 7088, 7084, 7085, 7102, 7082, 7092, 7100, 7115, 7091, 7101, 7099, 7093, 7104, 7118, 7122, 7096, 7113, 7097, 7106, 7087, 7114, 7119, 7086, 7089, 7120, 7090, 7098, 7121, 7094, 7095, 570: 7107, 753: 7117, 996: 7109, 7108, 7111, 7081, 1001: 7110},
{571: 7384},
{2393, 2393, 18: 2393, 61: 2393, 64: 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 570: 2393, 753: 2393, 1000: 7385},
{2412, 2412, 18: 7116, 61: 7103, 64: 7083, 7112, 7105, 7088, 7084, 7085, 7102, 7082, 7092, 7100, 7115, 7091, 7101, 7099, 7093, 7104, 7118, 7122, 7096, 7113, 7097, 7106, 7087, 7114, 7119, 7086, 7089, 7120, 7090, 7098, 7121, 7094, 7095, 570: 7107, 753: 7117, 996: 7109, 7108, 7111, 7081, 1001: 7110},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 7387, 3217, 3218, 3216},
// 4365
{2413, 2413},
{2414, 2414},
{2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 11: 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 54: 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 571: 7432, 587: 3074, 646: 3073, 694: 3069, 753: 7433, 2138, 846: 7431, 3070, 3071, 3072},
{2439, 2439, 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 4247, 3217, 3218, 3216, 861: 7430},
{2437, 2437},
// 4370
{2436, 2436},
{31: 7428},
{2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 11: 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 54: 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 591: 7415, 754: 2130},
{149: 3194, 257: 7399, 569: 3076, 571: 7398, 3075, 587: 3074, 589: 3060, 626: 3059, 646: 3073, 694: 3069, 751: 3188, 762: 4924, 815: 4925, 843: 3040, 846: 4926, 3070, 3071, 3072, 3081, 3079, 3078, 3077, 856: 3043, 4932, 4931, 862: 3187, 3041, 4929, 866: 4930, 4928, 875: 3042, 879: 4927, 945: 4933, 948: 4934, 967: 7397},
{1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 11: 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 54: 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 602: 6113, 754: 1926},
// 4375
{2428, 2428},
{2427, 2427},
{591: 7400},
{179: 7404, 309: 7407, 329: 7406, 380: 7410, 392: 7403, 7409, 7408, 571: 7402, 679: 7405, 1221: 7401},
{149: 3194, 569: 3076, 571: 7414, 3075, 587: 3074, 589: 3060, 626: 3059, 646: 3073, 694: 3069, 751: 3188, 762: 4924, 815: 4925, 843: 3040, 846: 4926, 3070, 3071, 3072, 3081, 3079, 3078, 3077, 856: 3043, 4932, 4931, 862: 3187, 3041, 4929, 866: 4930, 4928, 875: 3042, 879: 4927, 945: 4933, 948: 4934, 967: 7413},
// 4380
{149: 3194, 569: 3076, 571: 7411, 3075, 587: 3074, 589: 3060, 626: 3059, 646: 3073, 694: 3069, 751: 3188, 762: 4924, 815: 4925, 843: 3040, 846: 4926, 3070, 3071, 3072, 3081, 3079, 3078, 3077, 856: 3043, 4932, 4931, 862: 3187, 3041, 4929, 866: 4930, 4928, 875: 3042, 879: 4927, 945: 4933, 948: 4934, 967: 7412},
{149: 2422, 569: 2422, 571: 2422, 2422, 587: 2422, 589: 2422, 599: 2422, 626: 2422, 646: 2422, 694: 2422, 751: 2422, 762: 2422, 843: 2422},
{149: 2421, 569: 2421, 571: 2421, 2421, 587: 2421, 589: 2421, 599: 2421, 626: 2421, 646: 2421, 694: 2421, 751: 2421, 762: 2421, 843: 2421},
{149: 2420, 569: 2420, 571: 2420, 2420, 587: 2420, 589: 2420, 599: 2420, 626: 2420, 646: 2420, 694: 2420, 751: 2420, 762: 2420, 843: 2420},
{149: 2419, 569: 2419, 571: 2419, 2419, 587: 2419, 589: 2419, 599: 2419, 626: 2419, 646: 2419, 694: 2419, 751: 2419, 762: 2419, 843: 2419},
// 4385
{149: 2418, 569: 2418, 571: 2418, 2418, 587: 2418, 589: 2418, 599: 2418, 626: 2418, 646: 2418, 694: 2418, 751: 2418, 762: 2418, 843: 2418},
{149: 2417, 569: 2417, 571: 2417, 2417, 587: 2417, 589: 2417, 599: 2417, 626: 2417, 646: 2417, 694: 2417, 751: 2417, 762: 2417, 843: 2417},
{149: 2416, 569: 2416, 571: 2416, 2416, 587: 2416, 589: 2416, 599: 2416, 626: 2416, 646: 2416, 694: 2416, 751: 2416, 762: 2416, 843: 2416},
{149: 2415, 569: 2415, 571: 2415, 2415, 587: 2415, 589: 2415, 599: 2415, 626: 2415, 646: 2415, 694: 2415, 751: 2415, 762: 2415, 843: 2415},
{2424, 2424},
// 4390
{2423, 2423},
{2426, 2426},
{2425, 2425},
{179: 7404, 309: 7407, 329: 7406, 380: 7410, 392: 7403, 7409, 7408, 571: 7416, 679: 7405, 1221: 7417},
{149: 3194, 569: 3076, 571: 7425, 3075, 587: 3074, 589: 3060, 599: 7423, 626: 3059, 646: 3073, 694: 3069, 751: 3188, 762: 4924, 815: 4925, 843: 3040, 846: 4926, 3070, 3071, 3072, 3081, 3079, 3078, 3077, 856: 3043, 4932, 4931, 862: 3187, 3041, 4929, 866: 4930, 4928, 875: 3042, 879: 4927, 945: 4933, 948: 4934, 967: 7424},
// 4395
{149: 3194, 569: 3076, 571: 7420, 3075, 587: 3074, 589: 3060, 599: 7418, 626: 3059, 646: 3073, 694: 3069, 751: 3188, 762: 4924, 815: 4925, 843: 3040, 846: 4926, 3070, 3071, 3072, 3081, 3079, 3078, 3077, 856: 3043, 4932, 4931, 862: 3187, 3041, 4929, 866: 4930, 4928, 875: 3042, 879: 4927, 945: 4933, 948: 4934, 967: 7419},
{31: 7421},
{2431, 2431},
{2430, 2430},
{595: 3209, 839: 7422},
// 4400
{2432, 2432},
{31: 7426},
{2433, 2433},
{2429, 2429},
{595: 3209, 839: 7427},
// 4405
{2434, 2434},
{595: 3209, 839: 7429},
{2435, 2435},
{2438, 2438},
{2443, 2443},
// 4410
{2442, 2442},
{571: 7435, 587: 3074, 646: 3073, 694: 3069, 846: 7434, 3070, 3071, 3072},
{2441, 2441},
{2440, 2440},
{2450, 2450},
// 4415
{591: 7462},
{104: 3033, 3036, 107: 3065, 3034, 230: 3049, 475: 7458, 569: 3076, 572: 3075, 587: 3074, 589: 3060, 597: 7441, 626: 3059, 646: 3073, 694: 3069, 751: 3188, 753: 3032, 815: 7439, 843: 3040, 846: 7440, 3070, 3071, 3072, 3081, 3079, 3078, 3077, 856: 3043, 7447, 7446, 862: 3187, 3041, 7444, 866: 7445, 7443, 875: 3042, 879: 7442, 885: 7455, 7450, 7453, 7454, 937: 3050, 950: 7456, 995: 7449, 1010: 7448, 1012: 7452, 1014: 7451, 1071: 7457},
{700, 700, 580: 1080, 590: 1080, 592: 1080, 596: 4079, 598: 4078, 604: 4077, 882: 4080, 4081},
{702, 702, 580: 1081, 590: 1081, 592: 1081},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 6697, 6692, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 6698, 3224, 3215, 3451, 3583, 3584, 6695, 3606, 6694, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 6700, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 6703, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 6693, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 6704, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 6701, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 6696, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 593: 4650, 668: 6710, 695: 6709, 748: 4648, 811: 6707, 3217, 3218, 3216, 893: 6711, 965: 6708, 1147: 6712, 1357: 6705},
// 4420
{707, 707},
{706, 706},
{705, 705},
{704, 704},
{703, 703},
// 4425
{701, 701},
{699, 699},
{698, 698},
{697, 697},
{696, 696},
// 4430
{695, 695},
{694, 694},
{693, 693},
{692, 692},
{25: 6154},
// 4435
{2448, 2448},
{591: 7459},
{571: 7460},
{104: 3033, 3036, 107: 3065, 3034, 230: 3049, 569: 3076, 572: 3075, 587: 3074, 589: 3060, 597: 7441, 626: 3059, 646: 3073, 694: 3069, 751: 3188, 753: 3032, 815: 7439, 843: 3040, 846: 7440, 3070, 3071, 3072, 3081, 3079, 3078, 3077, 856: 3043, 7447, 7446, 862: 3187, 3041, 7444, 866: 7445, 7443, 875: 3042, 879: 7442, 885: 7455, 7450, 7453, 7454, 937: 3050, 950: 7456, 995: 7449, 1010: 7448, 1012: 7452, 1014: 7451, 1071: 7461},
{2447, 2447},
// 4440
{571: 7463},
{104: 3033, 3036, 107: 3065, 3034, 230: 3049, 569: 3076, 572: 3075, 587: 3074, 589: 3060, 597: 7441, 626: 3059, 646: 3073, 694: 3069, 751: 3188, 753: 3032, 815: 7439, 843: 3040, 846: 7440, 3070, 3071, 3072, 3081, 3079, 3078, 3077, 856: 3043, 7447, 7446, 862: 3187, 3041, 7444, 866: 7445, 7443, 875: 3042, 879: 7442, 885: 7455, 7450, 7453, 7454, 937: 3050, 950: 7456, 995: 7449, 1010: 7448, 1012: 7452, 1014: 7451, 1071: 7464},
{2449, 2449},
{2: 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 11: 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 54: 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 588: 1325, 603: 1325, 872: 6367, 874: 6369, 876: 6368, 986: 6370, 1035: 7466},
{2: 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 11: 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 54: 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 6778, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 588: 1312, 603: 1312, 1295: 7467},
// 4445
{2: 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 11: 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 54: 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 588: 4954, 603: 2236, 1008: 7468},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 603: 7469, 811: 6782, 3217, 3218, 3216, 1068: 6783, 1134: 6781},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 7471, 3217, 3218, 3216, 844: 6795, 1068: 6783, 1134: 7470},
{10: 6791, 579: 7474},
{1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1314, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 54: 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 573: 1323, 577: 1323, 579: 1314, 588: 1323, 594: 1323, 598: 1323, 604: 1323, 1323, 615: 1323, 754: 7472, 1059: 6784},
// 4450
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 6787, 811: 7473, 3217, 3218, 3216},
{1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1314, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 54: 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 573: 1322, 577: 1322, 579: 1314, 588: 1322, 594: 1322, 598: 1322, 604: 1322, 1322, 615: 1322, 754: 6789, 1059: 6788},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 6381, 600: 4148, 682: 6376, 811: 4147, 3217, 3218, 3216, 6380, 844: 6379, 934: 6378, 939: 6377, 6383, 1005: 6373, 1040: 7475},
{468, 468, 10: 6431, 594: 4940, 928: 4941, 7476},
{2480, 2480},
// 4455
{2483, 2483, 10: 4213},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 7555, 3217, 3218, 3216},
{2: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 11: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 54: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 618: 5233, 899: 7553},
{2: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 11: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 54: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 618: 5233, 899: 7544},
{749: 7539},
// 4460
{173: 6062, 646: 6061, 1136: 7535},
{235: 844, 244: 6581},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 618: 7530, 811: 4147, 3217, 3218, 3216, 844: 4149, 924: 7529},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 571: 3956, 618: 7526, 670: 6239, 811: 3957, 3217, 3218, 3216, 845: 6238, 895: 6240, 1015: 7525},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 6728, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 571: 6733, 618: 7522, 811: 3957, 3217, 3218, 3216, 845: 6193, 938: 6735, 963: 6736, 6734, 1013: 7521},
// 4465
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 7517, 924: 7516},
{235: 7503},
{240: 7500},
{611: 7497},
{2: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 11: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 54: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 600: 2240, 618: 5233, 899: 7495},
// 4470
{2: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 11: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 54: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 600: 2240, 618: 5233, 899: 7493},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 7494},
{31, 31},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 4149, 924: 7496},
{173, 173, 10: 4151},
// 4475
{2: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 11: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 54: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 575: 2240, 618: 5233, 899: 7498},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 575: 3214, 811: 3213, 3217, 3218, 3216, 962: 7499},
{200, 200},
{2: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 11: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 54: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 618: 5233, 899: 7501},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 5874, 3217, 3218, 3216, 1034: 7502},
// 4480
{203, 203},
{599: 7504},
{569: 3076, 572: 3075, 587: 3074, 589: 3060, 626: 3059, 646: 3073, 694: 3069, 696: 7506, 751: 3188, 815: 6761, 843: 6759, 846: 6762, 3070, 3071, 3072, 3081, 3079, 3078, 3077, 856: 6760, 6764, 6763, 862: 3187, 6766, 6767, 866: 6768, 6765, 975: 7505},
{383, 383, 579: 7514},
{246: 7507},
// 4485
{571: 7510, 668: 3783, 816: 7511, 1132: 7508, 1339: 7509},
{387, 387, 10: 387},
{381, 381, 10: 7512},
{385, 385, 10: 385},
{384, 384, 10: 384},
// 4490
{571: 7510, 668: 3783, 816: 7511, 1132: 7513},
{386, 386, 10: 386},
{569: 3076, 572: 3075, 587: 3074, 589: 3060, 626: 3059, 646: 3073, 694: 3069, 751: 3188, 815: 6761, 843: 6759, 846: 6762, 3070, 3071, 3072, 3081, 3079, 3078, 3077, 856: 6760, 6764, 6763, 862: 3187, 6766, 6767, 866: 6768, 6765, 975: 7515},
{382, 382},
{2461, 2461, 10: 4151},
// 4495
{1320, 1320, 10: 1320, 62: 7519, 573: 7518},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 5566, 3217, 3218, 3216, 900: 7520},
{2459, 2459},
{2460, 2460, 10: 5567},
{2463, 2463, 10: 6737},
// 4500
{685: 7523},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 6728, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 571: 6733, 811: 3957, 3217, 3218, 3216, 845: 6193, 938: 6735, 963: 6736, 6734, 1013: 7524},
{2462, 2462, 10: 6737},
{2465, 2465, 10: 6242},
{685: 7527},
// 4505
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 571: 3956, 670: 6239, 811: 3957, 3217, 3218, 3216, 845: 6238, 895: 6240, 1015: 7528},
{2464, 2464, 10: 6242},
{2458, 2458, 10: 4151, 769: 5624, 773: 5623, 1063: 7534},
{685: 7531},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 4149, 924: 7532},
// 4510
{2458, 2458, 10: 4151, 769: 5624, 773: 5623, 1063: 7533},
{2466, 2466},
{2467, 2467},
{2: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 11: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 54: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 600: 2240, 618: 5233, 899: 7536},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 4149, 924: 7537},
// 4515
{2458, 2458, 10: 4151, 769: 5624, 773: 5623, 1063: 7538},
{2471, 2471},
{2: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 11: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 54: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 618: 5233, 899: 7540},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 7541, 3217, 3218, 3216},
{570: 7542},
// 4520
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 7543},
{2472, 2472},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 7545, 3217, 3218, 3216},
{570: 7546},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 7547},
// 4525
{2625, 2625, 103: 4998, 601: 4999, 1016: 7549, 1030: 7548, 1242: 7550},
{2624, 2624, 103: 4998, 1016: 7552},
{2623, 2623, 601: 4999, 1030: 7551},
{2473, 2473},
{2621, 2621},
// 4530
{2622, 2622},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 6362, 3217, 3218, 3216, 947: 7554},
{2474, 2474},
{2633, 2633},
{2: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 11: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 54: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 618: 5648, 904: 8046},
// 4535
{749: 8034},
{749: 2619},
{749: 2618},
{749: 2617},
{749: 2616},
// 4540
{749: 2615},
{2: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 11: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 54: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 618: 5648, 904: 8011},
{19: 7929, 103: 7928, 153: 2500, 212: 2500, 696: 2500, 1558: 7927},
{589: 7926},
{2: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 11: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 54: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 571: 2238, 618: 5648, 670: 2238, 904: 7871},
// 4545
{2: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 11: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 54: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 571: 2238, 618: 5648, 904: 7865},
{235: 7852},
{611: 7781},
{2: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 11: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 54: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 600: 2238, 618: 5648, 904: 7745},
{2: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 11: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 54: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 600: 2238, 618: 5648, 904: 7572},
// 4550
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 7573},
{569: 7574},
{2: 130, 130, 130, 130, 130, 130, 130, 130, 11: 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 135, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 645: 7578, 1243: 7580, 1277: 7579, 1330: 7577, 7576, 1465: 7581, 1525: 7575},
{10: 7743, 53: 134},
{10: 132, 53: 132},
// 4555
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 7741, 3217, 3218, 3216},
{2: 129, 129, 129, 129, 129, 129, 129, 129, 11: 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 54: 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129},
{2: 128, 128, 128, 128, 128, 128, 128, 128, 11: 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 54: 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128},
{2: 127, 127, 127, 127, 127, 127, 127, 127, 11: 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 54: 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127},
{53: 7582},
// 4560
{56: 7610, 104: 7602, 3036, 107: 3065, 109: 3186, 113: 7599, 7601, 569: 3076, 572: 3075, 587: 3074, 589: 3060, 596: 7600, 7441, 615: 3189, 617: 3047, 7603, 623: 3045, 626: 3059, 646: 3073, 651: 7606, 658: 7609, 694: 3069, 751: 3188, 753: 3032, 815: 7583, 843: 3040, 846: 7584, 3070, 3071, 3072, 3081, 3079, 3078, 3077, 856: 3043, 7585, 7594, 862: 3187, 3041, 7589, 866: 7590, 7587, 3046, 871: 7608, 875: 3042, 877: 7611, 7612, 7595, 885: 7596, 7591, 7592, 7586, 897: 7593, 3048, 901: 7597, 7588, 907: 7598, 7607, 7616, 7619, 7620, 7615, 7623, 7621, 7622, 7624, 7618, 7625, 7605, 7604, 7613, 7614, 7617},
{124, 124, 580: 1080, 590: 1080, 592: 1080, 596: 4079, 598: 4078, 604: 4077, 882: 4080, 4081},
{126, 126, 580: 1081, 590: 1081, 592: 1081},
{125, 125},
{123, 123},
// 4565
{122, 122},
{121, 121},
{120, 120},
{119, 119},
{118, 118},
// 4570
{117, 117},
{116, 116},
{115, 115},
{114, 114},
{113, 113},
// 4575
{112, 112},
{107, 107},
{56: 7740},
{56: 84, 263: 7731, 603: 7732, 1490: 7730},
{56: 7729},
// 4580
{56: 79, 104: 79, 79, 107: 79, 109: 79, 113: 79, 79, 117: 79, 255: 7682, 569: 79, 572: 79, 587: 79, 589: 79, 596: 79, 79, 615: 79, 617: 79, 79, 623: 79, 626: 79, 646: 79, 651: 79, 658: 79, 694: 79, 751: 79, 753: 79, 843: 79, 868: 79, 871: 79, 877: 79, 79, 1292: 7684, 1484: 7683, 7685},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 7671, 1294: 7672},
{65, 65},
{64, 64},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 628: 7651, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 7648, 1317: 7649, 1507: 7650},
// 4585
{53, 53},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 7643},
{56: 7610, 104: 7602, 3036, 107: 3065, 109: 3186, 113: 7599, 7601, 569: 3076, 572: 3075, 587: 3074, 589: 3060, 596: 7600, 7441, 615: 3189, 617: 3047, 7603, 623: 3045, 626: 3059, 646: 3073, 651: 7606, 658: 7609, 694: 3069, 751: 3188, 753: 3032, 815: 7583, 843: 3040, 846: 7584, 3070, 3071, 3072, 3081, 3079, 3078, 3077, 856: 3043, 7585, 7594, 862: 3187, 3041, 7589, 866: 7590, 7587, 3046, 871: 7608, 875: 3042, 877: 7611, 7612, 7595, 885: 7596, 7591, 7592, 7586, 897: 7593, 3048, 901: 7597, 7588, 907: 7598, 7607, 7616, 7619, 7620, 7615, 7623, 7621, 7622, 7624, 7618, 7634, 7605, 7604, 7613, 7614, 7617, 987: 7635},
{1365: 7628},
{56: 7627},
// 4590
{56: 7626},
{44, 44},
{43, 43},
{42, 42},
{41, 41},
// 4595
{40, 40},
{39, 39},
{38, 38},
{37, 37},
{36, 36},
// 4600
{35, 35},
{34, 34},
{33, 33},
{32, 32},
{45, 45},
// 4605
{46, 46},
{104: 7602, 658: 7609, 871: 7608, 907: 7629, 7630},
{49, 49, 56: 7631, 1291: 7633},
{49, 49, 56: 7631, 1291: 7632},
{48, 48},
// 4610
{47, 47},
{50, 50},
{7642},
{56: 7610, 104: 7602, 3036, 107: 3065, 109: 3186, 113: 7599, 7601, 569: 3076, 572: 3075, 587: 3074, 589: 3060, 596: 7600, 7441, 615: 3189, 617: 3047, 7603, 623: 3045, 626: 3059, 646: 3073, 651: 7606, 658: 7609, 694: 3069, 751: 3188, 753: 3032, 815: 7583, 843: 3040, 846: 7584, 3070, 3071, 3072, 3081, 3079, 3078, 3077, 856: 3043, 7585, 7594, 862: 3187, 3041, 7589, 866: 7590, 7587, 3046, 871: 7608, 875: 3042, 877: 7611, 7612, 7595, 885: 7596, 7591, 7592, 7586, 897: 7593, 3048, 901: 7597, 7588, 907: 7598, 7607, 7616, 7619, 7620, 7615, 7623, 7621, 7622, 7624, 7618, 7636, 7605, 7604, 7613, 7614, 7617, 1142: 7637},
{7641},
// 4615
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 7638},
{117: 7639, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
{658: 7640},
{51, 51, 56: 51},
{56: 72, 104: 72, 72, 107: 72, 109: 72, 113: 72, 72, 117: 72, 569: 72, 572: 72, 587: 72, 589: 72, 596: 72, 72, 615: 72, 617: 72, 72, 623: 72, 626: 72, 628: 72, 72, 646: 72, 651: 72, 658: 72, 694: 72, 751: 72, 753: 72, 843: 72, 868: 72, 871: 72, 877: 72, 72, 1092: 72, 1142: 72},
// 4620
{56: 73, 104: 73, 73, 107: 73, 109: 73, 113: 73, 73, 117: 73, 569: 73, 572: 73, 587: 73, 589: 73, 596: 73, 73, 615: 73, 617: 73, 73, 623: 73, 626: 73, 628: 73, 73, 646: 73, 651: 73, 658: 73, 694: 73, 751: 73, 753: 73, 843: 73, 868: 73, 871: 73, 877: 73, 73, 1092: 73, 1142: 73},
{282: 7644, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
{56: 7610, 104: 7602, 3036, 107: 3065, 109: 3186, 113: 7599, 7601, 569: 3076, 572: 3075, 587: 3074, 589: 3060, 596: 7600, 7441, 615: 3189, 617: 3047, 7603, 623: 3045, 626: 3059, 646: 3073, 651: 7606, 658: 7609, 694: 3069, 751: 3188, 753: 3032, 815: 7583, 843: 3040, 846: 7584, 3070, 3071, 3072, 3081, 3079, 3078, 3077, 856: 3043, 7585, 7594, 862: 3187, 3041, 7589, 866: 7590, 7587, 3046, 871: 7608, 875: 3042, 877: 7611, 7612, 7595, 885: 7596, 7591, 7592, 7586, 897: 7593, 3048, 901: 7597, 7588, 907: 7598, 7607, 7616, 7619, 7620, 7615, 7623, 7621, 7622, 7624, 7618, 7634, 7605, 7604, 7613, 7614, 7617, 987: 7645},
{56: 7610, 104: 7602, 3036, 107: 3065, 109: 3186, 113: 7599, 7601, 117: 7646, 569: 3076, 572: 3075, 587: 3074, 589: 3060, 596: 7600, 7441, 615: 3189, 617: 3047, 7603, 623: 3045, 626: 3059, 646: 3073, 651: 7606, 658: 7609, 694: 3069, 751: 3188, 753: 3032, 815: 7583, 843: 3040, 846: 7584, 3070, 3071, 3072, 3081, 3079, 3078, 3077, 856: 3043, 7585, 7594, 862: 3187, 3041, 7589, 866: 7590, 7587, 3046, 871: 7608, 875: 3042, 877: 7611, 7612, 7595, 885: 7596, 7591, 7592, 7586, 897: 7593, 3048, 901: 7597, 7588, 907: 7598, 7607, 7616, 7619, 7620, 7615, 7623, 7621, 7622, 7624, 7618, 7636, 7605, 7604, 7613, 7614, 7617},
{871: 7647},
// 4625
{52, 52, 56: 52},
{606: 3965, 3963, 3964, 3962, 3960, 628: 7663, 841: 3961, 3959, 1328: 7661, 1522: 7662},
{117: 61, 628: 61, 61},
{117: 57, 628: 7651, 7656, 1216: 7657, 1317: 7655},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 7652},
// 4630
{606: 3965, 3963, 3964, 3962, 3960, 647: 7653, 841: 3961, 3959},
{56: 7610, 104: 7602, 3036, 107: 3065, 109: 3186, 113: 7599, 7601, 569: 3076, 572: 3075, 587: 3074, 589: 3060, 596: 7600, 7441, 615: 3189, 617: 3047, 7603, 623: 3045, 626: 3059, 646: 3073, 651: 7606, 658: 7609, 694: 3069, 751: 3188, 753: 3032, 815: 7583, 843: 3040, 846: 7584, 3070, 3071, 3072, 3081, 3079, 3078, 3077, 856: 3043, 7585, 7594, 862: 3187, 3041, 7589, 866: 7590, 7587, 3046, 871: 7608, 875: 3042, 877: 7611, 7612, 7595, 885: 7596, 7591, 7592, 7586, 897: 7593, 3048, 901: 7597, 7588, 907: 7598, 7607, 7616, 7619, 7620, 7615, 7623, 7621, 7622, 7624, 7618, 7634, 7605, 7604, 7613, 7614, 7617, 987: 7654},
{56: 7610, 104: 7602, 3036, 107: 3065, 109: 3186, 113: 7599, 7601, 117: 58, 569: 3076, 572: 3075, 587: 3074, 589: 3060, 596: 7600, 7441, 615: 3189, 617: 3047, 7603, 623: 3045, 626: 3059, 628: 58, 58, 646: 3073, 651: 7606, 658: 7609, 694: 3069, 751: 3188, 753: 3032, 815: 7583, 843: 3040, 846: 7584, 3070, 3071, 3072, 3081, 3079, 3078, 3077, 856: 3043, 7585, 7594, 862: 3187, 3041, 7589, 866: 7590, 7587, 3046, 871: 7608, 875: 3042, 877: 7611, 7612, 7595, 885: 7596, 7591, 7592, 7586, 897: 7593, 3048, 901: 7597, 7588, 907: 7598, 7607, 7616, 7619, 7620, 7615, 7623, 7621, 7622, 7624, 7618, 7636, 7605, 7604, 7613, 7614, 7617},
{117: 60, 628: 60, 60},
{56: 7610, 104: 7602, 3036, 107: 3065, 109: 3186, 113: 7599, 7601, 569: 3076, 572: 3075, 587: 3074, 589: 3060, 596: 7600, 7441, 615: 3189, 617: 3047, 7603, 623: 3045, 626: 3059, 646: 3073, 651: 7606, 658: 7609, 694: 3069, 751: 3188, 753: 3032, 815: 7583, 843: 3040, 846: 7584, 3070, 3071, 3072, 3081, 3079, 3078, 3077, 856: 3043, 7585, 7594, 862: 3187, 3041, 7589, 866: 7590, 7587, 3046, 871: 7608, 875: 3042, 877: 7611, 7612, 7595, 885: 7596, 7591, 7592, 7586, 897: 7593, 3048, 901: 7597, 7588, 907: 7598, 7607, 7616, 7619, 7620, 7615, 7623, 7621, 7622, 7624, 7618, 7634, 7605, 7604, 7613, 7614, 7617, 987: 7660},
// 4635
{117: 7658},
{651: 7659},
{54, 54},
{56: 7610, 104: 7602, 3036, 107: 3065, 109: 3186, 113: 7599, 7601, 117: 56, 569: 3076, 572: 3075, 587: 3074, 589: 3060, 596: 7600, 7441, 615: 3189, 617: 3047, 7603, 623: 3045, 626: 3059, 646: 3073, 651: 7606, 658: 7609, 694: 3069, 751: 3188, 753: 3032, 815: 7583, 843: 3040, 846: 7584, 3070, 3071, 3072, 3081, 3079, 3078, 3077, 856: 3043, 7585, 7594, 862: 3187, 3041, 7589, 866: 7590, 7587, 3046, 871: 7608, 875: 3042, 877: 7611, 7612, 7595, 885: 7596, 7591, 7592, 7586, 897: 7593, 3048, 901: 7597, 7588, 907: 7598, 7607, 7616, 7619, 7620, 7615, 7623, 7621, 7622, 7624, 7618, 7636, 7605, 7604, 7613, 7614, 7617},
{117: 63, 628: 63, 63},
// 4640
{117: 57, 628: 7663, 7656, 1216: 7668, 1328: 7667},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 7664},
{606: 3965, 3963, 3964, 3962, 3960, 647: 7665, 841: 3961, 3959},
{56: 7610, 104: 7602, 3036, 107: 3065, 109: 3186, 113: 7599, 7601, 569: 3076, 572: 3075, 587: 3074, 589: 3060, 596: 7600, 7441, 615: 3189, 617: 3047, 7603, 623: 3045, 626: 3059, 646: 3073, 651: 7606, 658: 7609, 694: 3069, 751: 3188, 753: 3032, 815: 7583, 843: 3040, 846: 7584, 3070, 3071, 3072, 3081, 3079, 3078, 3077, 856: 3043, 7585, 7594, 862: 3187, 3041, 7589, 866: 7590, 7587, 3046, 871: 7608, 875: 3042, 877: 7611, 7612, 7595, 885: 7596, 7591, 7592, 7586, 897: 7593, 3048, 901: 7597, 7588, 907: 7598, 7607, 7616, 7619, 7620, 7615, 7623, 7621, 7622, 7624, 7618, 7634, 7605, 7604, 7613, 7614, 7617, 987: 7666},
{56: 7610, 104: 7602, 3036, 107: 3065, 109: 3186, 113: 7599, 7601, 117: 59, 569: 3076, 572: 3075, 587: 3074, 589: 3060, 596: 7600, 7441, 615: 3189, 617: 3047, 7603, 623: 3045, 626: 3059, 628: 59, 59, 646: 3073, 651: 7606, 658: 7609, 694: 3069, 751: 3188, 753: 3032, 815: 7583, 843: 3040, 846: 7584, 3070, 3071, 3072, 3081, 3079, 3078, 3077, 856: 3043, 7585, 7594, 862: 3187, 3041, 7589, 866: 7590, 7587, 3046, 871: 7608, 875: 3042, 877: 7611, 7612, 7595, 885: 7596, 7591, 7592, 7586, 897: 7593, 3048, 901: 7597, 7588, 907: 7598, 7607, 7616, 7619, 7620, 7615, 7623, 7621, 7622, 7624, 7618, 7636, 7605, 7604, 7613, 7614, 7617},
// 4645
{117: 62, 628: 62, 62},
{117: 7669},
{651: 7670},
{55, 55},
{606: 3965, 3963, 3964, 3962, 3960, 647: 7675, 841: 3961, 3959},
// 4650
{117: 7673},
{618: 7674},
{70, 70},
{56: 7610, 104: 7602, 3036, 107: 3065, 109: 3186, 113: 7599, 7601, 569: 3076, 572: 3075, 587: 3074, 589: 3060, 596: 7600, 7441, 615: 3189, 617: 3047, 7603, 623: 3045, 626: 3059, 646: 3073, 651: 7606, 658: 7609, 694: 3069, 751: 3188, 753: 3032, 815: 7583, 843: 3040, 846: 7584, 3070, 3071, 3072, 3081, 3079, 3078, 3077, 856: 3043, 7585, 7594, 862: 3187, 3041, 7589, 866: 7590, 7587, 3046, 871: 7608, 875: 3042, 877: 7611, 7612, 7595, 885: 7596, 7591, 7592, 7586, 897: 7593, 3048, 901: 7597, 7588, 907: 7598, 7607, 7616, 7619, 7620, 7615, 7623, 7621, 7622, 7624, 7618, 7634, 7605, 7604, 7613, 7614, 7617, 987: 7676},
{56: 7610, 104: 7602, 3036, 107: 3065, 109: 3186, 113: 7599, 7601, 117: 68, 569: 3076, 572: 3075, 587: 3074, 589: 3060, 596: 7600, 7441, 615: 3189, 617: 3047, 7603, 623: 3045, 626: 3059, 629: 7679, 646: 3073, 651: 7606, 658: 7609, 694: 3069, 751: 3188, 753: 3032, 815: 7583, 843: 3040, 846: 7584, 3070, 3071, 3072, 3081, 3079, 3078, 3077, 856: 3043, 7585, 7594, 862: 3187, 3041, 7589, 866: 7590, 7587, 3046, 871: 7608, 875: 3042, 877: 7611, 7612, 7595, 885: 7596, 7591, 7592, 7586, 897: 7593, 3048, 901: 7597, 7588, 907: 7598, 7607, 7616, 7619, 7620, 7615, 7623, 7621, 7622, 7624, 7618, 7636, 7605, 7604, 7613, 7614, 7617, 1092: 7678, 1480: 7677},
// 4655
{117: 69},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 7671, 1294: 7681},
{56: 7610, 104: 7602, 3036, 107: 3065, 109: 3186, 113: 7599, 7601, 569: 3076, 572: 3075, 587: 3074, 589: 3060, 596: 7600, 7441, 615: 3189, 617: 3047, 7603, 623: 3045, 626: 3059, 646: 3073, 651: 7606, 658: 7609, 694: 3069, 751: 3188, 753: 3032, 815: 7583, 843: 3040, 846: 7584, 3070, 3071, 3072, 3081, 3079, 3078, 3077, 856: 3043, 7585, 7594, 862: 3187, 3041, 7589, 866: 7590, 7587, 3046, 871: 7608, 875: 3042, 877: 7611, 7612, 7595, 885: 7596, 7591, 7592, 7586, 897: 7593, 3048, 901: 7597, 7588, 907: 7598, 7607, 7616, 7619, 7620, 7615, 7623, 7621, 7622, 7624, 7618, 7634, 7605, 7604, 7613, 7614, 7617, 987: 7680},
{56: 7610, 104: 7602, 3036, 107: 3065, 109: 3186, 113: 7599, 7601, 117: 66, 569: 3076, 572: 3075, 587: 3074, 589: 3060, 596: 7600, 7441, 615: 3189, 617: 3047, 7603, 623: 3045, 626: 3059, 646: 3073, 651: 7606, 658: 7609, 694: 3069, 751: 3188, 753: 3032, 815: 7583, 843: 3040, 846: 7584, 3070, 3071, 3072, 3081, 3079, 3078, 3077, 856: 3043, 7585, 7594, 862: 3187, 3041, 7589, 866: 7590, 7587, 3046, 871: 7608, 875: 3042, 877: 7611, 7612, 7595, 885: 7596, 7591, 7592, 7586, 897: 7593, 3048, 901: 7597, 7588, 907: 7598, 7607, 7616, 7619, 7620, 7615, 7623, 7621, 7622, 7624, 7618, 7636, 7605, 7604, 7613, 7614, 7617},
{117: 67},
// 4660
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 7693, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 7694, 3217, 3218, 3216, 1398: 7697, 1412: 7698, 1483: 7695, 1487: 7696},
{56: 78, 104: 78, 78, 107: 78, 109: 78, 113: 78, 78, 117: 78, 255: 7682, 569: 78, 572: 78, 587: 78, 589: 78, 596: 78, 78, 615: 78, 617: 78, 78, 623: 78, 626: 78, 646: 78, 651: 78, 658: 78, 694: 78, 751: 78, 753: 78, 843: 78, 868: 78, 871: 78, 877: 78, 78, 1292: 7691},
{7690},
{56: 75, 104: 75, 75, 107: 75, 109: 75, 113: 75, 75, 117: 75, 569: 75, 572: 75, 587: 75, 589: 75, 596: 75, 75, 615: 75, 617: 75, 75, 623: 75, 626: 75, 646: 75, 651: 75, 658: 75, 694: 75, 751: 75, 753: 75, 843: 75, 868: 75, 871: 75, 877: 75, 75, 1491: 7686},
{56: 7610, 104: 7602, 3036, 107: 3065, 109: 3186, 113: 7599, 7601, 117: 7688, 569: 3076, 572: 3075, 587: 3074, 589: 3060, 596: 7600, 7441, 615: 3189, 617: 3047, 7603, 623: 3045, 626: 3059, 646: 3073, 651: 7606, 658: 7609, 694: 3069, 751: 3188, 753: 3032, 815: 7583, 843: 3040, 846: 7584, 3070, 3071, 3072, 3081, 3079, 3078, 3077, 856: 3043, 7585, 7594, 862: 3187, 3041, 7589, 866: 7590, 7587, 3046, 871: 7608, 875: 3042, 877: 7611, 7612, 7595, 885: 7596, 7591, 7592, 7586, 897: 7593, 3048, 901: 7597, 7588, 907: 7598, 7607, 7616, 7619, 7620, 7615, 7623, 7621, 7622, 7624, 7618, 7687, 7605, 7604, 7613, 7614, 7617},
// 4665
{7689},
{71, 71, 56: 71},
{56: 74, 104: 74, 74, 107: 74, 109: 74, 113: 74, 74, 117: 74, 569: 74, 572: 74, 587: 74, 589: 74, 596: 74, 74, 615: 74, 617: 74, 74, 623: 74, 626: 74, 646: 74, 651: 74, 658: 74, 694: 74, 751: 74, 753: 74, 843: 74, 868: 74, 871: 74, 877: 74, 74},
{56: 77, 104: 77, 77, 107: 77, 109: 77, 113: 77, 77, 117: 77, 255: 77, 569: 77, 572: 77, 587: 77, 589: 77, 596: 77, 77, 615: 77, 617: 77, 77, 623: 77, 626: 77, 646: 77, 651: 77, 658: 77, 694: 77, 751: 77, 753: 77, 843: 77, 868: 77, 871: 77, 877: 77, 77},
{7692},
// 4670
{56: 76, 104: 76, 76, 107: 76, 109: 76, 113: 76, 76, 117: 76, 255: 76, 569: 76, 572: 76, 587: 76, 589: 76, 596: 76, 76, 615: 76, 617: 76, 76, 623: 76, 626: 76, 646: 76, 651: 76, 658: 76, 694: 76, 751: 76, 753: 76, 843: 76, 868: 76, 871: 76, 877: 76, 76},
{10: 2202, 129: 2202, 133: 2202, 179: 2202, 181: 2202, 2202, 185: 2202, 2202, 189: 2202, 203: 2202, 205: 2202, 207: 2202, 209: 2202, 2202, 213: 2202, 217: 2202, 2202, 2202, 593: 2202, 597: 2202, 625: 2202, 748: 2202, 766: 2202, 768: 2202, 770: 2202, 772: 2202, 774: 2202, 2202, 777: 2202, 2202, 2202, 2202, 2202, 783: 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 1402: 7722},
{10: 106, 129: 106, 133: 106, 179: 106, 181: 106, 106, 185: 106, 106, 189: 106, 203: 106, 205: 106, 207: 106, 209: 106, 106, 213: 106, 217: 106, 106, 106, 593: 106, 597: 106, 625: 106, 748: 106, 766: 106, 768: 106, 770: 106, 772: 106, 774: 106, 106, 777: 106, 106, 106, 106, 106, 783: 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106},
{10: 7716, 129: 5291, 133: 5292, 179: 5281, 181: 5302, 5301, 185: 5304, 5283, 189: 5264, 203: 5303, 205: 5261, 207: 5298, 209: 5270, 5260, 213: 5279, 217: 5287, 5286, 5290, 593: 5285, 597: 5280, 625: 5275, 748: 5284, 766: 5267, 768: 5265, 770: 5262, 772: 5266, 774: 5289, 5288, 777: 5258, 5252, 5276, 5259, 5294, 783: 5268, 5269, 5253, 5254, 5255, 5256, 5257, 5282, 5296, 5300, 5295, 5250, 5299, 5251, 5263, 5249, 5293, 5248, 5297, 976: 5271, 1074: 5273, 1078: 5247, 5277, 5244, 1087: 5242, 1095: 5245, 5246, 1103: 5243, 1107: 5272, 1110: 5240, 5274, 1133: 5241, 1137: 5278, 1140: 7717, 1149: 5305},
{288: 7699},
// 4675
{288: 99},
{288: 98},
{599: 7700},
{576: 7705, 595: 3209, 839: 7707, 1290: 7703, 1293: 7702, 1332: 7706, 7708, 7704, 1488: 7701},
{10: 7714, 56: 7610, 104: 7602, 3036, 107: 3065, 109: 3186, 113: 7599, 7601, 569: 3076, 572: 3075, 587: 3074, 589: 3060, 596: 7600, 7441, 615: 3189, 617: 3047, 7603, 623: 3045, 626: 3059, 646: 3073, 651: 7606, 658: 7609, 694: 3069, 751: 3188, 753: 3032, 815: 7583, 843: 3040, 846: 7584, 3070, 3071, 3072, 3081, 3079, 3078, 3077, 856: 3043, 7585, 7594, 862: 3187, 3041, 7589, 866: 7590, 7587, 3046, 871: 7608, 875: 3042, 877: 7611, 7612, 7595, 885: 7596, 7591, 7592, 7586, 897: 7593, 3048, 901: 7597, 7588, 907: 7598, 7607, 7616, 7619, 7620, 7615, 7623, 7621, 7622, 7624, 7618, 7713, 7605, 7604, 7613, 7614, 7617},
// 4680
{10: 97, 56: 97, 104: 97, 97, 107: 97, 109: 97, 113: 97, 97, 569: 97, 572: 97, 587: 97, 589: 97, 596: 97, 97, 615: 97, 617: 97, 97, 623: 97, 626: 97, 646: 97, 651: 97, 658: 97, 694: 97, 751: 97, 753: 97, 843: 97, 868: 97, 871: 97, 877: 97, 97},
{10: 95, 56: 95, 104: 95, 95, 107: 95, 109: 95, 113: 95, 95, 569: 95, 572: 95, 587: 95, 589: 95, 596: 95, 95, 615: 95, 617: 95, 95, 623: 95, 626: 95, 646: 95, 651: 95, 658: 95, 694: 95, 751: 95, 753: 95, 843: 95, 868: 95, 871: 95, 877: 95, 95},
{10: 94, 56: 94, 104: 94, 94, 107: 94, 109: 94, 113: 94, 94, 569: 94, 572: 94, 587: 94, 589: 94, 596: 94, 94, 615: 94, 617: 94, 94, 623: 94, 626: 94, 646: 94, 651: 94, 658: 94, 694: 94, 751: 94, 753: 94, 843: 94, 868: 94, 871: 94, 877: 94, 94},
{427: 7712},
{10: 92, 56: 92, 104: 92, 92, 107: 92, 109: 92, 113: 92, 92, 569: 92, 572: 92, 587: 92, 589: 92, 596: 92, 92, 615: 92, 617: 92, 92, 623: 92, 626: 92, 646: 92, 651: 92, 658: 92, 694: 92, 751: 92, 753: 92, 843: 92, 868: 92, 871: 92, 877: 92, 92},
// 4685
{10: 91, 56: 91, 104: 91, 91, 107: 91, 109: 91, 113: 91, 91, 569: 91, 572: 91, 587: 91, 589: 91, 596: 91, 91, 615: 91, 617: 91, 91, 623: 91, 626: 91, 646: 91, 651: 91, 658: 91, 694: 91, 751: 91, 753: 91, 843: 91, 868: 91, 871: 91, 877: 91, 91},
{222: 7710, 571: 89, 1467: 7709},
{571: 7711},
{571: 88},
{10: 90, 56: 90, 104: 90, 90, 107: 90, 109: 90, 113: 90, 90, 569: 90, 572: 90, 587: 90, 589: 90, 596: 90, 90, 615: 90, 617: 90, 90, 623: 90, 626: 90, 646: 90, 651: 90, 658: 90, 694: 90, 751: 90, 753: 90, 843: 90, 868: 90, 871: 90, 877: 90, 90},
// 4690
{10: 93, 56: 93, 104: 93, 93, 107: 93, 109: 93, 113: 93, 93, 569: 93, 572: 93, 587: 93, 589: 93, 596: 93, 93, 615: 93, 617: 93, 93, 623: 93, 626: 93, 646: 93, 651: 93, 658: 93, 694: 93, 751: 93, 753: 93, 843: 93, 868: 93, 871: 93, 877: 93, 93},
{100},
{576: 7705, 595: 3209, 839: 7707, 1290: 7703, 1293: 7715, 1332: 7706, 7708, 7704},
{10: 96, 56: 96, 104: 96, 96, 107: 96, 109: 96, 113: 96, 96, 569: 96, 572: 96, 587: 96, 589: 96, 596: 96, 96, 615: 96, 617: 96, 96, 623: 96, 626: 96, 646: 96, 651: 96, 658: 96, 694: 96, 751: 96, 753: 96, 843: 96, 868: 96, 871: 96, 877: 96, 96},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 7721, 3217, 3218, 3216},
// 4695
{104, 575: 7718, 1489: 7719},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3804, 3799, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3796, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3808, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3809, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3812, 3395, 3801, 3667, 3821, 3803, 3819, 3820, 3818, 3814, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3810, 3797, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3800, 3417, 3421, 3806, 3596, 3445, 3825, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3807, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3802, 3675, 3679, 3371, 3297, 3455, 3794, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3817, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3795, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3813, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3827, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3805, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3824, 3221, 3350, 3654, 3655, 3798, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3826, 3674, 3492, 3754, 3755, 3832, 3831, 3833, 3822, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3815, 3816, 3687, 3823, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3828, 3698, 3699, 3403, 3829, 3830, 3723, 3340, 3706, 3707, 3708, 3743, 3811, 3862, 571: 3844, 574: 3860, 3870, 3943, 581: 3875, 3879, 3859, 3858, 3898, 3835, 3871, 589: 3878, 593: 3896, 595: 3839, 618: 3873, 625: 3866, 3897, 651: 3868, 658: 3877, 666: 3834, 3836, 3941, 670: 3880, 674: 3838, 3837, 3842, 678: 3843, 3863, 3948, 3853, 3865, 3872, 685: 3864, 3841, 3869, 3894, 3876, 3881, 3886, 3887, 3888, 695: 3939, 697: 3917, 3856, 3857, 3912, 3913, 3914, 3915, 3916, 3867, 3899, 3909, 3910, 3903, 3918, 3919, 3920, 3904, 3922, 3923, 3905, 3921, 3900, 3908, 3906, 3892, 3924, 3925, 3929, 3882, 3885, 3928, 3934, 3933, 3935, 3932, 3936, 3931, 3930, 3927, 3926, 3884, 3883, 3889, 3890, 750: 3944, 811: 3845, 3217, 3218, 3216, 3861, 3938, 3852, 3840, 3846, 3911, 3849, 3847, 3848, 3891, 3902, 3901, 3895, 3893, 3907, 3949, 3855, 3937, 3854, 3851, 3947, 3946, 3945, 7720},
{102},
{103, 606: 3965, 3963, 3964, 3962, 3960, 841: 3961, 3959},
{10: 105, 129: 105, 133: 105, 179: 105, 181: 105, 105, 185: 105, 105, 189: 105, 203: 105, 205: 105, 207: 105, 209: 105, 105, 213: 105, 217: 105, 105, 105, 593: 105, 597: 105, 625: 105, 748: 105, 766: 105, 768: 105, 770: 105, 772: 105, 774: 105, 105, 777: 105, 105, 105, 105, 105, 783: 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105},
// 4700
{599: 7723},
{569: 3076, 572: 3075, 587: 3074, 646: 3073, 694: 3069, 815: 7724, 846: 7725, 3070, 3071, 3072, 3081, 3079, 3078, 3077, 856: 4066, 7726, 7727, 1482: 7728},
{109, 580: 1080, 590: 1080, 592: 1080, 596: 4079, 598: 4078, 604: 4077, 882: 4080, 4081},
{111, 580: 1081, 590: 1081, 592: 1081},
{110},
// 4705
{108},
{101},
{85, 85},
{56: 7734},
{603: 7733},
// 4710
{56: 82},
{56: 83},
{602: 7735},
{56: 7737, 1486: 7736},
{86, 86, 10: 7738},
// 4715
{81, 81, 10: 81},
{56: 7739},
{80, 80, 10: 80},
{87, 87},
{129: 5291, 133: 5292, 179: 5281, 181: 5302, 5301, 185: 5304, 5283, 189: 5264, 203: 5303, 205: 5261, 207: 5298, 209: 5270, 5260, 213: 5279, 217: 5287, 5286, 5290, 593: 5285, 597: 5280, 625: 5275, 748: 5284, 766: 5267, 768: 5265, 770: 5262, 772: 5266, 774: 5289, 5288, 777: 5258, 5252, 5276, 5259, 5294, 783: 5268, 5269, 5253, 5254, 5255, 5256, 5257, 5282, 5296, 5300, 5295, 5250, 5299, 5251, 5263, 5249, 5293, 5248, 5297, 976: 5271, 1074: 5273, 1078: 5247, 5277, 5244, 1087: 5242, 1095: 5245, 5246, 1103: 5243, 1107: 5272, 1110: 5240, 5274, 1133: 5241, 1137: 5278, 1140: 7742, 1149: 5305},
// 4720
{10: 131, 53: 131},
{2: 130, 130, 130, 130, 130, 130, 130, 130, 11: 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 54: 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 645: 7578, 1243: 7580, 1277: 7579, 1330: 7577, 7744},
{10: 133, 53: 133},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 7746},
{196, 196, 6: 196, 196, 196, 196, 16: 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 106: 7754, 108: 7751, 111: 7757, 7758, 115: 7759, 7752, 118: 7750, 7760, 7756, 7753, 575: 196, 578: 196, 580: 196, 593: 196, 605: 196, 748: 196, 196, 760: 7755, 1065: 7749, 1399: 7747, 1511: 7748},
// 4725
{624, 624, 6: 5004, 5008, 5006, 628, 16: 5025, 2592, 5023, 4960, 5027, 5039, 5014, 5043, 5005, 5010, 5007, 5009, 5012, 5013, 5015, 5022, 628, 5033, 5034, 5044, 5020, 5021, 5026, 5028, 5040, 5048, 5041, 5038, 5031, 5036, 5037, 5030, 5032, 5035, 5024, 5045, 5046, 575: 5003, 578: 2592, 580: 5042, 593: 2592, 605: 5857, 748: 2592, 5011, 906: 5016, 933: 5018, 954: 5017, 980: 5019, 988: 5029, 993: 5047, 1069: 6603, 1192: 7780},
{195, 195, 6: 195, 195, 195, 195, 16: 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 106: 7754, 108: 7751, 111: 7757, 7758, 115: 7759, 7752, 118: 7750, 7760, 7756, 7753, 575: 195, 578: 195, 580: 195, 593: 195, 605: 195, 748: 195, 195, 760: 7755, 1065: 7779},
{194, 194, 6: 194, 194, 194, 194, 16: 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 106: 194, 108: 194, 111: 194, 194, 115: 194, 194, 118: 194, 194, 194, 194, 575: 194, 578: 194, 580: 194, 593: 194, 605: 194, 748: 194, 194, 760: 194},
{583: 2453, 2453, 591: 4828, 595: 2453, 761: 7776, 840: 7775},
{572: 7772, 583: 2453, 2453, 591: 4828, 595: 2453, 840: 7771},
// 4730
{583: 2453, 2453, 591: 4828, 595: 2453, 840: 7769},
{187, 187, 6: 187, 187, 187, 187, 16: 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 106: 187, 108: 187, 111: 187, 187, 115: 187, 187, 118: 187, 187, 187, 187, 187, 575: 187, 578: 187, 580: 187, 593: 187, 605: 187, 748: 187, 187, 760: 187},
{111: 7767, 115: 7768, 7765, 760: 7766},
{583: 2453, 2453, 591: 4828, 595: 2453, 840: 7763},
{184, 184, 6: 184, 184, 184, 184, 16: 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 106: 184, 108: 184, 111: 184, 184, 115: 184, 184, 118: 184, 184, 184, 184, 184, 575: 184, 578: 184, 580: 184, 593: 184, 605: 184, 748: 184, 184, 760: 184},
// 4735
{583: 2453, 2453, 591: 4828, 595: 2453, 840: 7761},
{181, 181, 6: 181, 181, 181, 181, 16: 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 106: 181, 108: 181, 111: 181, 181, 115: 181, 181, 118: 181, 181, 181, 181, 181, 575: 181, 578: 181, 580: 181, 593: 181, 605: 181, 748: 181, 181, 760: 181},
{179, 179, 6: 179, 179, 179, 179, 16: 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 106: 179, 108: 179, 111: 179, 179, 115: 179, 179, 118: 179, 179, 179, 179, 179, 575: 179, 578: 179, 580: 179, 593: 179, 605: 179, 748: 179, 179, 760: 179},
{178, 178, 6: 178, 178, 178, 178, 16: 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 106: 178, 108: 178, 111: 178, 178, 115: 178, 178, 118: 178, 178, 178, 178, 178, 575: 178, 578: 178, 580: 178, 593: 178, 605: 178, 748: 178, 178, 760: 178},
{583: 4781, 4782, 595: 3209, 839: 4778, 865: 4780, 955: 7762},
// 4740
{182, 182, 6: 182, 182, 182, 182, 16: 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 106: 182, 108: 182, 111: 182, 182, 115: 182, 182, 118: 182, 182, 182, 182, 182, 575: 182, 578: 182, 580: 182, 593: 182, 605: 182, 748: 182, 182, 760: 182},
{583: 4781, 4782, 595: 3209, 839: 4778, 865: 4780, 955: 7764},
{185, 185, 6: 185, 185, 185, 185, 16: 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 106: 185, 108: 185, 111: 185, 185, 115: 185, 185, 118: 185, 185, 185, 185, 185, 575: 185, 578: 185, 580: 185, 593: 185, 605: 185, 748: 185, 185, 760: 185},
{186, 186, 6: 186, 186, 186, 186, 16: 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 106: 186, 108: 186, 111: 186, 186, 115: 186, 186, 118: 186, 186, 186, 186, 186, 575: 186, 578: 186, 580: 186, 593: 186, 605: 186, 748: 186, 186, 760: 186},
{183, 183, 6: 183, 183, 183, 183, 16: 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 106: 183, 108: 183, 111: 183, 183, 115: 183, 183, 118: 183, 183, 183, 183, 183, 575: 183, 578: 183, 580: 183, 593: 183, 605: 183, 748: 183, 183, 760: 183},
// 4745
{180, 180, 6: 180, 180, 180, 180, 16: 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 106: 180, 108: 180, 111: 180, 180, 115: 180, 180, 118: 180, 180, 180, 180, 180, 575: 180, 578: 180, 580: 180, 593: 180, 605: 180, 748: 180, 180, 760: 180},
{177, 177, 6: 177, 177, 177, 177, 16: 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 106: 177, 108: 177, 111: 177, 177, 115: 177, 177, 118: 177, 177, 177, 177, 177, 575: 177, 578: 177, 580: 177, 593: 177, 605: 177, 748: 177, 177, 760: 177},
{583: 4781, 4782, 595: 3209, 839: 4778, 865: 4780, 955: 7770},
{188, 188, 6: 188, 188, 188, 188, 16: 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 106: 188, 108: 188, 111: 188, 188, 115: 188, 188, 118: 188, 188, 188, 188, 188, 575: 188, 578: 188, 580: 188, 593: 188, 605: 188, 748: 188, 188, 760: 188},
{583: 4781, 4782, 595: 3209, 839: 4778, 865: 4780, 955: 7774},
// 4750
{583: 4781, 4782, 595: 3209, 839: 4778, 865: 4780, 955: 7773},
{189, 189, 6: 189, 189, 189, 189, 16: 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 106: 189, 108: 189, 111: 189, 189, 115: 189, 189, 118: 189, 189, 189, 189, 189, 575: 189, 578: 189, 580: 189, 593: 189, 605: 189, 748: 189, 189, 760: 189},
{190, 190, 6: 190, 190, 190, 190, 16: 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 106: 190, 108: 190, 111: 190, 190, 115: 190, 190, 118: 190, 190, 190, 190, 190, 575: 190, 578: 190, 580: 190, 593: 190, 605: 190, 748: 190, 190, 760: 190},
{583: 4781, 4782, 595: 3209, 839: 4778, 865: 4780, 955: 7778},
{583: 4781, 4782, 595: 3209, 839: 4778, 865: 4780, 955: 7777},
// 4755
{191, 191, 6: 191, 191, 191, 191, 16: 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 106: 191, 108: 191, 111: 191, 191, 115: 191, 191, 118: 191, 191, 191, 191, 191, 575: 191, 578: 191, 580: 191, 593: 191, 605: 191, 748: 191, 191, 760: 191},
{192, 192, 6: 192, 192, 192, 192, 16: 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 106: 192, 108: 192, 111: 192, 192, 115: 192, 192, 118: 192, 192, 192, 192, 192, 575: 192, 578: 192, 580: 192, 593: 192, 605: 192, 748: 192, 192, 760: 192},
{193, 193, 6: 193, 193, 193, 193, 16: 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 106: 193, 108: 193, 111: 193, 193, 115: 193, 193, 118: 193, 193, 193, 193, 575: 193, 578: 193, 580: 193, 593: 193, 605: 193, 748: 193, 193, 760: 193},
{197, 197},
{2: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 11: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 54: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 575: 2238, 618: 5648, 904: 7782},
// 4760
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 575: 3214, 811: 3213, 3217, 3218, 3216, 962: 7783},
{124: 7790, 7788, 7787, 7789, 7786, 1023: 7784, 1308: 7785},
{3013, 3013, 10: 3013, 124: 3013, 3013, 3013, 3013, 3013},
{202, 202, 10: 7850, 124: 7790, 7788, 7787, 7789, 7786, 1023: 7849},
{245: 2453, 591: 4828, 595: 2453, 840: 7846},
// 4765
{338: 2453, 350: 2453, 2453, 591: 4828, 840: 7841},
{2986, 2986, 10: 2986, 124: 2986, 2986, 2986, 2986, 2986, 238: 2453, 245: 2453, 353: 2453, 591: 4828, 840: 7837},
{569: 2453, 586: 2453, 591: 4828, 840: 7807},
{569: 2453, 586: 2453, 591: 4828, 840: 7791},
{569: 7792, 586: 7793},
// 4770
{53: 7795, 202: 7797, 204: 7798, 1089: 7796, 1502: 7794},
{2977, 2977, 10: 2977, 124: 2977, 2977, 2977, 2977, 2977},
{10: 7805, 53: 7803, 202: 7797, 204: 7798, 1089: 7804},
{2978, 2978, 10: 2978, 124: 2978, 2978, 2978, 2978, 2978},
{10: 2976, 53: 2976, 202: 2976, 204: 2976},
// 4775
{571: 2453, 591: 4828, 840: 7801},
{591: 4828, 595: 2453, 840: 7799},
{595: 3209, 839: 4086, 854: 7800},
{10: 2972, 53: 2972, 202: 2972, 204: 2972},
{571: 7802},
// 4780
{10: 2973, 53: 2973, 202: 2973, 204: 2973},
{2979, 2979, 10: 2979, 124: 2979, 2979, 2979, 2979, 2979},
{10: 2975, 53: 2975, 202: 2975, 204: 2975},
{202: 7797, 204: 7798, 1089: 7806},
{10: 2974, 53: 2974, 202: 2974, 204: 2974},
// 4785
{569: 7808, 586: 7809},
{53: 7817, 110: 7815, 146: 7816, 148: 7812, 150: 7813, 7814, 1090: 7810, 1504: 7811},
{2980, 2980, 10: 2980, 124: 2980, 2980, 2980, 2980, 2980},
{10: 3007, 53: 3007, 110: 3007, 146: 3007, 148: 3007, 150: 3007, 3007},
{10: 7834, 53: 7835, 110: 7815, 146: 7816, 148: 7812, 150: 7813, 7814, 1090: 7833},
// 4790
{571: 2453, 591: 4828, 840: 7831},
{591: 4828, 595: 2453, 840: 7829},
{591: 4828, 595: 2453, 840: 7827},
{253: 2453, 256: 2453, 272: 2453, 591: 4828, 840: 7825, 984: 2453},
{130: 2453, 286: 2453, 298: 2453, 591: 4828, 840: 7818},
// 4795
{2981, 2981, 10: 2981, 124: 2981, 2981, 2981, 2981, 2981},
{130: 4823, 286: 4821, 298: 4822, 1310: 7819},
{10: 2992, 53: 2992, 110: 2992, 134: 7821, 146: 2992, 148: 2992, 150: 2992, 2992, 1566: 7820},
{10: 2993, 53: 2993, 110: 2993, 146: 2993, 148: 2993, 150: 2993, 2993},
{245: 2453, 571: 2453, 591: 4828, 840: 7822},
// 4800
{245: 7824, 571: 7823},
{10: 2991, 53: 2991, 110: 2991, 146: 2991, 148: 2991, 150: 2991, 2991},
{10: 2990, 53: 2990, 110: 2990, 146: 2990, 148: 2990, 150: 2990, 2990},
{253: 4831, 256: 4830, 272: 4833, 984: 4832, 1309: 7826},
{10: 2994, 53: 2994, 110: 2994, 146: 2994, 148: 2994, 150: 2994, 2994},
// 4805
{595: 7828},
{10: 2995, 53: 2995, 110: 2995, 146: 2995, 148: 2995, 150: 2995, 2995},
{595: 7830},
{10: 2996, 53: 2996, 110: 2996, 146: 2996, 148: 2996, 150: 2996, 2996},
{571: 7832},
// 4810
{10: 2997, 53: 2997, 110: 2997, 146: 2997, 148: 2997, 150: 2997, 2997},
{10: 3006, 53: 3006, 110: 3006, 146: 3006, 148: 3006, 150: 3006, 3006},
{110: 7815, 146: 7816, 148: 7812, 150: 7813, 7814, 1090: 7836},
{2982, 2982, 10: 2982, 124: 2982, 2982, 2982, 2982, 2982},
{10: 3005, 53: 3005, 110: 3005, 146: 3005, 148: 3005, 150: 3005, 3005},
// 4815
{238: 7840, 245: 7839, 353: 7838},
{2985, 2985, 10: 2985, 124: 2985, 2985, 2985, 2985, 2985},
{2984, 2984, 10: 2984, 124: 2984, 2984, 2984, 2984, 2984},
{2983, 2983, 10: 2983, 124: 2983, 2983, 2983, 2983, 2983},
{338: 7844, 350: 7842, 7843, 1503: 7845},
// 4820
{3010, 3010, 10: 3010, 124: 3010, 3010, 3010, 3010, 3010},
{3009, 3009, 10: 3009, 124: 3009, 3009, 3009, 3009, 3009},
{3008, 3008, 10: 3008, 124: 3008, 3008, 3008, 3008, 3008},
{2987, 2987, 10: 2987, 124: 2987, 2987, 2987, 2987, 2987},
{245: 7848, 595: 3209, 839: 4086, 854: 7847},
// 4825
{2989, 2989, 10: 2989, 124: 2989, 2989, 2989, 2989, 2989},
{2988, 2988, 10: 2988, 124: 2988, 2988, 2988, 2988, 2988},
{3012, 3012, 10: 3012, 124: 3012, 3012, 3012, 3012, 3012},
{124: 7790, 7788, 7787, 7789, 7786, 1023: 7851},
{3011, 3011, 10: 3011, 124: 3011, 3011, 3011, 3011, 3011},
// 4830
{579: 7854, 599: 7853, 603: 7855},
{569: 3076, 572: 3075, 587: 3074, 589: 3060, 626: 3059, 646: 3073, 694: 3069, 751: 3188, 815: 6761, 843: 6759, 846: 6762, 3070, 3071, 3072, 3081, 3079, 3078, 3077, 856: 6760, 6764, 6763, 862: 3187, 6766, 6767, 866: 6768, 6765, 975: 7862},
{569: 3076, 572: 3075, 587: 3074, 589: 3060, 626: 3059, 646: 3073, 694: 3069, 751: 3188, 815: 6761, 843: 6759, 846: 6762, 3070, 3071, 3072, 3081, 3079, 3078, 3077, 856: 6760, 6764, 6763, 862: 3187, 6766, 6767, 866: 6768, 6765, 975: 7861},
{289: 7856},
{579: 7857},
// 4835
{130: 7858},
{246: 7859},
{571: 7510, 668: 3783, 816: 7511, 1132: 7508, 1339: 7860},
{388, 388, 10: 7512},
{389, 389},
// 4840
{579: 7863},
{569: 3076, 572: 3075, 587: 3074, 589: 3060, 626: 3059, 646: 3073, 694: 3069, 751: 3188, 815: 6761, 843: 6759, 846: 6762, 3070, 3071, 3072, 3081, 3079, 3078, 3077, 856: 6760, 6764, 6763, 862: 3187, 6766, 6767, 866: 6768, 6765, 975: 7864},
{390, 390},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 6728, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 571: 6733, 811: 3957, 3217, 3218, 3216, 845: 6193, 938: 6735, 963: 7867, 6734, 1316: 7868, 1505: 7866},
{465, 465, 10: 7869},
// 4845
{401, 401, 10: 401},
{400, 400, 10: 400},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 6728, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 571: 6733, 811: 3957, 3217, 3218, 3216, 845: 6193, 938: 6735, 963: 7867, 6734, 1316: 7870},
{399, 399, 10: 399},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 571: 3956, 670: 6239, 811: 3957, 3217, 3218, 3216, 845: 6238, 895: 6256, 1041: 6257, 1073: 7872},
// 4850
{447, 447, 6: 447, 10: 6259, 16: 447, 54: 447, 447, 57: 447, 447, 447, 572: 447, 764: 6303, 1124: 6302, 7873},
{455, 455, 6: 455, 16: 455, 54: 455, 455, 57: 455, 455, 455, 572: 7875, 1182: 7874},
{428, 428, 6: 428, 16: 7891, 54: 428, 428, 57: 7890, 7892, 7893, 1116: 7889, 1284: 7888, 7887},
{191: 7880, 7878, 7879, 7881, 1181: 7877, 1396: 7876},
{454, 454, 6: 454, 16: 454, 54: 454, 454, 57: 454, 454, 454, 191: 7880, 7878, 7879, 7881, 1181: 7886},
// 4855
{453, 453, 6: 453, 16: 453, 54: 453, 453, 57: 453, 453, 453, 191: 453, 453, 453, 453},
{595: 3209, 839: 4778, 865: 7885},
{595: 3209, 839: 4778, 865: 7884},
{595: 3209, 839: 4778, 865: 7883},
{595: 3209, 839: 4778, 865: 7882},
// 4860
{448, 448, 6: 448, 16: 448, 54: 448, 448, 57: 448, 448, 448, 191: 448, 448, 448, 448},
{449, 449, 6: 449, 16: 449, 54: 449, 449, 57: 449, 449, 449, 191: 449, 449, 449, 449},
{450, 450, 6: 450, 16: 450, 54: 450, 450, 57: 450, 450, 450, 191: 450, 450, 450, 450},
{451, 451, 6: 451, 16: 451, 54: 451, 451, 57: 451, 451, 451, 191: 451, 451, 451, 451},
{452, 452, 6: 452, 16: 452, 54: 452, 452, 57: 452, 452, 452, 191: 452, 452, 452, 452},
// 4865
{433, 433, 6: 7918, 54: 433, 7919, 1179: 7917},
{427, 427, 6: 427, 16: 7891, 54: 427, 427, 57: 7890, 7892, 7893, 1116: 7916},
{426, 426, 6: 426, 16: 426, 54: 426, 426, 57: 426, 426, 426},
{601: 7915, 1141: 7914},
{289: 7897, 423: 7899, 461: 7898, 764: 7900},
// 4870
{595: 3209, 839: 4778, 865: 7896},
{234: 7895, 595: 3209, 839: 4778, 865: 7894},
{413, 413, 6: 413, 16: 413, 54: 413, 413, 57: 413, 413, 413},
{412, 412, 6: 412, 16: 412, 54: 412, 412, 57: 412, 412, 412},
{414, 414, 6: 414, 16: 414, 54: 414, 414, 57: 414, 414, 414},
// 4875
{575: 7912, 595: 3209, 839: 7913},
{680: 7908},
{418, 418, 6: 418, 16: 418, 54: 418, 418, 57: 418, 418, 418, 439: 7904, 575: 7905, 680: 7903},
{211: 7901},
{575: 7902},
// 4880
{411, 411, 6: 411, 16: 411, 54: 411, 411, 57: 411, 411, 411},
{595: 3209, 839: 4778, 865: 7906},
{416, 416, 6: 416, 16: 416, 54: 416, 416, 57: 416, 416, 416},
{415, 415, 6: 415, 16: 415, 54: 415, 415, 57: 415, 415, 415},
{154: 7907},
// 4885
{417, 417, 6: 417, 16: 417, 54: 417, 417, 57: 417, 417, 417},
{575: 7909, 595: 3209, 839: 7910},
{420, 420, 6: 420, 16: 420, 54: 420, 420, 57: 420, 420, 420},
{154: 7911},
{419, 419, 6: 419, 16: 419, 54: 419, 419, 57: 419, 419, 419},
// 4890
{422, 422, 6: 422, 16: 422, 54: 422, 422, 57: 422, 422, 422},
{421, 421, 6: 421, 16: 421, 54: 421, 421, 57: 421, 421, 421},
{424, 424, 6: 424, 16: 424, 54: 424, 424, 57: 424, 424, 424},
{423, 423, 6: 423, 16: 423, 54: 423, 423, 57: 423, 423, 423},
{425, 425, 6: 425, 16: 425, 54: 425, 425, 57: 425, 425, 425},
// 4895
{430, 430, 54: 7923, 1307: 7922},
{571: 7921},
{571: 7920},
{431, 431, 54: 431},
{432, 432, 54: 432},
// 4900
{466, 466},
{611: 7924},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 575: 3214, 811: 3213, 3217, 3218, 3216, 962: 7925},
{429, 429},
{19: 2501, 103: 2501, 153: 2501, 212: 2501, 696: 2501},
// 4905
{153: 2496, 212: 7979, 696: 2496, 1560: 7978},
{591: 7974},
{240: 7930},
{2: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 11: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 54: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 618: 5648, 904: 7931},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 5874, 3217, 3218, 3216, 1034: 7932},
// 4910
{123: 7936, 135: 7941, 7943, 7937, 7942, 7945, 7939, 7935, 7940, 7946, 7944, 7938, 1022: 7933, 1286: 7934},
{2971, 2971, 10: 2971, 123: 2971, 135: 2971, 2971, 2971, 2971, 2971, 2971, 2971, 2971, 2971, 2971, 2971},
{199, 199, 10: 7972, 123: 7936, 135: 7941, 7943, 7937, 7942, 7945, 7939, 7935, 7940, 7946, 7944, 7938, 1022: 7971},
{571: 2453, 591: 4828, 840: 7969},
{571: 2453, 591: 4828, 840: 7967},
// 4915
{591: 4828, 595: 2453, 840: 7965},
{591: 4828, 595: 2453, 840: 7963},
{591: 4828, 595: 2453, 840: 7961},
{571: 2453, 591: 4828, 840: 7959},
{571: 2453, 591: 4828, 840: 7957},
// 4920
{571: 2453, 591: 4828, 840: 7955},
{571: 2453, 591: 4828, 840: 7953},
{571: 2453, 591: 4828, 840: 7951},
{571: 2453, 591: 4828, 840: 7949},
{571: 2453, 591: 4828, 840: 7947},
// 4925
{571: 7948},
{2957, 2957, 10: 2957, 123: 2957, 135: 2957, 2957, 2957, 2957, 2957, 2957, 2957, 2957, 2957, 2957, 2957},
{571: 7950},
{2958, 2958, 10: 2958, 123: 2958, 135: 2958, 2958, 2958, 2958, 2958, 2958, 2958, 2958, 2958, 2958, 2958},
{571: 7952},
// 4930
{2959, 2959, 10: 2959, 123: 2959, 135: 2959, 2959, 2959, 2959, 2959, 2959, 2959, 2959, 2959, 2959, 2959},
{571: 7954},
{2960, 2960, 10: 2960, 123: 2960, 135: 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960},
{571: 7956},
{2961, 2961, 10: 2961, 123: 2961, 135: 2961, 2961, 2961, 2961, 2961, 2961, 2961, 2961, 2961, 2961, 2961},
// 4935
{571: 7958},
{2962, 2962, 10: 2962, 123: 2962, 135: 2962, 2962, 2962, 2962, 2962, 2962, 2962, 2962, 2962, 2962, 2962},
{571: 7960},
{2963, 2963, 10: 2963, 123: 2963, 135: 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963},
{595: 3209, 839: 4086, 854: 7962},
// 4940
{2964, 2964, 10: 2964, 123: 2964, 135: 2964, 2964, 2964, 2964, 2964, 2964, 2964, 2964, 2964, 2964, 2964},
{595: 3209, 839: 4086, 854: 7964},
{2965, 2965, 10: 2965, 123: 2965, 135: 2965, 2965, 2965, 2965, 2965, 2965, 2965, 2965, 2965, 2965, 2965},
{595: 3209, 839: 4086, 854: 7966},
{2966, 2966, 10: 2966, 123: 2966, 135: 2966, 2966, 2966, 2966, 2966, 2966, 2966, 2966, 2966, 2966, 2966},
// 4945
{571: 7968},
{2967, 2967, 10: 2967, 123: 2967, 135: 2967, 2967, 2967, 2967, 2967, 2967, 2967, 2967, 2967, 2967, 2967},
{571: 7970},
{2968, 2968, 10: 2968, 123: 2968, 135: 2968, 2968, 2968, 2968, 2968, 2968, 2968, 2968, 2968, 2968, 2968},
{2970, 2970, 10: 2970, 123: 2970, 135: 2970, 2970, 2970, 2970, 2970, 2970, 2970, 2970, 2970, 2970, 2970},
// 4950
{123: 7936, 135: 7941, 7943, 7937, 7942, 7945, 7939, 7935, 7940, 7946, 7944, 7938, 1022: 7973},
{2969, 2969, 10: 2969, 123: 2969, 135: 2969, 2969, 2969, 2969, 2969, 2969, 2969, 2969, 2969, 2969, 2969},
{4: 7976, 476: 7977, 485: 7975},
{153: 2499, 212: 2499, 696: 2499},
{153: 2498, 212: 2498, 696: 2498},
// 4955
{153: 2497, 212: 2497, 696: 2497},
{153: 2494, 696: 7983, 1563: 7982},
{591: 7980},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 571: 3956, 670: 6239, 811: 3957, 3217, 3218, 3216, 845: 6238, 895: 7981},
{153: 2495, 696: 2495},
// 4960
{153: 7987},
{464: 7984},
{212: 7985, 432: 7986},
{153: 2493},
{153: 2492},
// 4965
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 7989, 1562: 7988},
{569: 7991, 577: 2490, 1561: 7990},
{569: 2491, 577: 2491},
{577: 7997},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 7993, 3217, 3218, 3216, 1391: 7992},
// 4970
{10: 7995, 53: 7994},
{10: 2488, 53: 2488},
{577: 2489},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 7996, 3217, 3218, 3216},
{10: 2487, 53: 2487},
// 4975
{569: 3076, 572: 3075, 587: 3074, 646: 3073, 694: 3069, 815: 8001, 846: 7999, 3070, 3071, 3072, 3081, 3079, 3078, 3077, 856: 4066, 8000, 7998, 1401: 8002},
{2509, 2509, 572: 2509},
{2508, 2508, 572: 2508, 580: 1081, 590: 1081, 592: 1081},
{2507, 2507, 572: 2507},
{2506, 2506, 572: 2506, 580: 1080, 590: 1080, 592: 1080, 596: 4079, 598: 4078, 604: 4077, 882: 4080, 4081},
// 4980
{2486, 2486, 572: 8004, 1559: 8003},
{2503, 2503},
{60: 8006, 405: 8005},
{742: 8009},
{742: 8007},
// 4985
{1032: 8008},
{2484, 2484},
{1032: 8010},
{2485, 2485},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 6362, 3217, 3218, 3216, 947: 8012},
// 4990
{2601, 2601, 17: 2592, 19: 2592, 23: 2592, 575: 5003, 578: 2592, 593: 2592, 597: 8016, 748: 2592, 906: 8015, 933: 8014, 1004: 8018, 1086: 8017, 1403: 8013},
{2612, 2612},
{17: 4649, 19: 4960, 23: 8026, 578: 8025, 593: 4650, 748: 4648, 893: 8024, 906: 8027},
{2603, 2603, 17: 2603, 19: 2603, 23: 2603, 575: 2603, 578: 2603, 593: 2603, 597: 2603, 748: 2603},
{233: 8020},
// 4995
{2600, 2600, 17: 2592, 19: 2592, 23: 2592, 575: 5003, 578: 2592, 593: 2592, 597: 8016, 748: 2592, 906: 8015, 933: 8014, 1004: 8019},
{2599, 2599, 17: 2599, 19: 2599, 23: 2599, 575: 2599, 578: 2599, 593: 2599, 597: 2599, 748: 2599},
{2598, 2598, 17: 2598, 19: 2598, 23: 2598, 575: 2598, 578: 2598, 593: 2598, 597: 2598, 748: 2598},
{242: 8021},
{595: 3209, 839: 4086, 854: 8022},
// 5000
{2940, 2940, 17: 2940, 19: 2940, 23: 2940, 247: 5847, 575: 2940, 578: 2940, 593: 2940, 597: 2940, 748: 2940, 1106: 8023},
{2602, 2602, 17: 2602, 19: 2602, 23: 2602, 575: 2602, 578: 2602, 593: 2602, 597: 2602, 748: 2602},
{2: 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 11: 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 54: 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 571: 2453, 591: 4828, 625: 2453, 840: 8032},
{2: 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 11: 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 54: 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 571: 2453, 591: 4828, 625: 2453, 840: 8030},
{571: 2453, 591: 4828, 840: 8028},
// 5005
{2604, 2604, 17: 2604, 19: 2604, 23: 2604, 575: 2604, 578: 2604, 593: 2604, 597: 2604, 748: 2604},
{571: 5077, 1218: 8029},
{2605, 2605, 17: 2605, 19: 2605, 23: 2605, 575: 2605, 578: 2605, 593: 2605, 597: 2605, 748: 2605},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 571: 3956, 625: 3955, 811: 3957, 3217, 3218, 3216, 845: 3954, 1020: 8031},
{2606, 2606, 17: 2606, 19: 2606, 23: 2606, 575: 2606, 578: 2606, 593: 2606, 597: 2606, 748: 2606},
// 5010
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 571: 3956, 625: 4577, 811: 3957, 3217, 3218, 3216, 845: 4576, 946: 8033},
{2607, 2607, 17: 2607, 19: 2607, 23: 2607, 575: 2607, 578: 2607, 593: 2607, 597: 2607, 748: 2607},
{2: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 11: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 54: 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 618: 5648, 904: 8035},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 8036, 3217, 3218, 3216},
{97: 5671, 570: 2214, 579: 5670, 969: 8038, 1435: 8037},
// 5015
{570: 8039},
{570: 2213},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 8040},
{569: 8041},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 5403, 811: 4247, 3217, 3218, 3216, 861: 5402, 949: 5401, 959: 8042},
// 5020
{10: 5412, 53: 8043},
{2232, 2232, 6: 2232, 2232, 20: 2232, 2232, 60: 2232, 62: 2232, 97: 2232, 2232, 2232, 2232, 2232, 2232, 2232, 572: 2232, 579: 2232, 594: 2232, 601: 2232, 983: 8044},
{2625, 2625, 6: 5662, 5668, 20: 5658, 5667, 60: 5666, 62: 5665, 97: 5671, 5533, 5211, 5534, 5210, 5659, 4998, 572: 5661, 579: 5670, 594: 5669, 601: 4999, 968: 5663, 5660, 973: 5664, 982: 5657, 1016: 7549, 1030: 7548, 1242: 8045},
{2632, 2632},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 8047, 3217, 3218, 3216},
// 5025
{569: 8048},
{312: 5764, 320: 5766, 323: 5765, 1338: 8049},
{53: 8050},
{570: 8051},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 8052},
// 5030
{569: 8053},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 4247, 3217, 3218, 3216, 861: 4248, 943: 8054},
{10: 4250, 53: 8055},
{2634, 2634},
{2749, 2749},
// 5035
{2772, 2772},
{2778, 2778, 572: 8060, 771: 8059},
{229: 8067, 808: 8066},
{406: 8062, 415: 8061},
{65: 8065},
// 5040
{414: 8063},
{229: 8064},
{2775, 2775},
{2776, 2776},
{2777, 2777},
// 5045
{2774, 2774, 776: 4919, 1042: 8068},
{2773, 2773},
{2780, 2780},
{2779, 2779},
{342: 8073, 646: 8072},
// 5050
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 8085, 924: 8084},
{646: 8074},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 8075},
{573: 8077, 749: 8076},
{1175, 1175, 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 1175, 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 572: 1175, 741: 5902, 811: 5901, 3217, 3218, 3216, 1009: 8082},
// 5055
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 5566, 3217, 3218, 3216, 900: 8078},
{10: 5567, 749: 8079},
{1175, 1175, 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 1175, 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 572: 1175, 741: 5902, 811: 5901, 3217, 3218, 3216, 1009: 8080},
{2794, 2794, 10: 5904, 572: 5885, 942: 8081},
{2802, 2802},
// 5060
{2794, 2794, 10: 5904, 572: 5885, 942: 8083},
{2805, 2805},
{2797, 2797, 10: 4151, 241: 8105, 572: 2797, 755: 8104, 1152: 8115},
{1320, 1320, 10: 1320, 147: 8090, 241: 1320, 572: 1320, 8087, 749: 8086, 751: 8088, 755: 1320, 767: 8089},
{1175, 1175, 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 1175, 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 572: 1175, 741: 5902, 811: 5901, 3217, 3218, 3216, 1009: 8113},
// 5065
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 5566, 3217, 3218, 3216, 900: 8100},
{339: 8096},
{339: 8093},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 6889, 3217, 3218, 3216, 1026: 8091},
{2794, 2794, 10: 6891, 572: 5885, 942: 8092},
// 5070
{2799, 2799},
{570: 8094},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 6889, 3217, 3218, 3216, 1026: 8095},
{2800, 2800, 10: 6891},
{570: 8097},
// 5075
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 6889, 3217, 3218, 3216, 1026: 8098},
{2794, 2794, 10: 6891, 572: 5885, 942: 8099},
{2801, 2801},
{2797, 2797, 10: 5567, 147: 8103, 241: 8105, 572: 2797, 749: 8102, 755: 8104, 1152: 8101},
{2794, 2794, 572: 5885, 942: 8112},
// 5080
{1175, 1175, 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 1175, 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 572: 1175, 741: 5902, 811: 5901, 3217, 3218, 3216, 1009: 8110},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 6889, 3217, 3218, 3216, 1026: 8108},
{147: 8107},
{147: 8106},
{2795, 2795, 572: 2795},
// 5085
{2796, 2796, 572: 2796},
{2794, 2794, 10: 6891, 572: 5885, 942: 8109},
{2798, 2798},
{2794, 2794, 10: 5904, 572: 5885, 942: 8111},
{2803, 2803},
// 5090
{2804, 2804},
{2794, 2794, 10: 5904, 572: 5885, 942: 8114},
{2806, 2806},
{2794, 2794, 572: 5885, 942: 8116},
{2807, 2807},
// 5095
{646: 8122},
{599: 8120},
{646: 2809},
{573: 8121, 646: 2810},
{646: 2808},
// 5100
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 8123},
{573: 6435, 669: 1189, 749: 1189, 761: 1189, 985: 8124},
{669: 5686, 749: 8126, 761: 5687, 1131: 8125},
{2815, 2815},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 8127, 3217, 3218, 3216},
// 5105
{669: 5686, 761: 5687, 1131: 8128},
{2814, 2814},
{216: 8138},
{216: 8136},
{216: 8134},
// 5110
{206: 8133},
{147, 147},
{595: 3209, 839: 4778, 865: 8135},
{2335, 2335},
{595: 3209, 839: 4778, 865: 8137},
// 5115
{2402, 2402},
{595: 3209, 839: 4778, 865: 8139},
{2816, 2816},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 8141},
{366: 1189, 573: 6435, 985: 8142},
// 5120
{366: 8143},
{571: 2453, 591: 4828, 840: 8144},
{571: 8145},
{24: 8146},
{571: 2453, 591: 4828, 840: 8147},
// 5125
{571: 8148},
{2818, 2818, 477: 8149},
{571: 2453, 591: 4828, 840: 8150},
{571: 8151},
{2817, 2817},
// 5130
{804: 8170, 8171},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 8164, 924: 8163},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 6362, 3217, 3218, 3216, 947: 8155},
{2821, 2821, 752: 8158, 804: 8156, 8157, 1227: 8159},
{571: 8162},
// 5135
{595: 3209, 839: 4086, 854: 8161},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 8160, 3217, 3218, 3216},
{2819, 2819},
{2820, 2820},
{2823, 2823},
// 5140
{2826, 2826},
{10: 4151, 804: 8166, 8167},
{2821, 2821, 10: 1320, 752: 8158, 804: 1320, 1320, 1227: 8165},
{2822, 2822},
{571: 8169},
// 5145
{595: 3209, 839: 4086, 854: 8168},
{2824, 2824},
{2827, 2827},
{571: 8173},
{595: 3209, 839: 4086, 854: 8172},
// 5150
{2825, 2825},
{2828, 2828},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 761: 8175, 811: 4147, 3217, 3218, 3216, 844: 8176},
{216: 8178},
{2830, 2830, 595: 3209, 839: 4778, 865: 8177},
// 5155
{2829, 2829},
{595: 3209, 839: 4778, 865: 8179},
{2831, 2831},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 8191, 1347: 8190, 1546: 8189},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 571: 3956, 670: 6239, 811: 3957, 3217, 3218, 3216, 845: 6238, 895: 8184, 1356: 8183, 1553: 8182},
// 5160
{2835, 2835, 10: 8187},
{2834, 2834, 10: 2834},
{752: 8185},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 571: 3956, 670: 6239, 811: 3957, 3217, 3218, 3216, 845: 6238, 895: 8186},
{2832, 2832, 10: 2832},
// 5165
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 571: 3956, 670: 6239, 811: 3957, 3217, 3218, 3216, 845: 6238, 895: 8184, 1356: 8188},
{2833, 2833, 10: 2833},
{2839, 2839, 10: 8194},
{2838, 2838, 10: 2838},
{752: 8192},
// 5170
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 8193},
{2836, 2836, 10: 2836},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 8191, 1347: 8195},
{2837, 2837, 10: 2837},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 2592, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 575: 5003, 578: 2592, 593: 2592, 597: 8016, 748: 2592, 811: 6362, 3217, 3218, 3216, 906: 8015, 933: 8014, 947: 8245, 1004: 8018, 1086: 8246},
// 5175
{2: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 11: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 54: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 571: 2240, 618: 5233, 670: 2240, 899: 8231},
{363: 8225, 1437: 8224},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 8222, 3217, 3218, 3216},
{611: 8218},
{240: 8214},
// 5180
{2: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 11: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 54: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 600: 2240, 618: 5233, 899: 8203},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 600: 4148, 811: 4147, 3217, 3218, 3216, 844: 8204},
{106: 7754, 108: 7751, 111: 7757, 7758, 115: 7759, 7752, 118: 7750, 7760, 7756, 7753, 8208, 760: 7755, 1065: 8207, 1160: 8206, 1370: 8205},
{172, 172, 106: 7754, 108: 7751, 111: 7757, 7758, 115: 7759, 7752, 118: 7750, 7760, 7756, 7753, 8208, 760: 7755, 1065: 8207, 1160: 8213},
{171, 171, 106: 171, 108: 171, 111: 171, 171, 115: 171, 171, 118: 171, 171, 171, 171, 171, 760: 171},
// 5185
{169, 169, 106: 169, 108: 169, 111: 169, 169, 115: 169, 169, 118: 169, 169, 169, 169, 169, 760: 169},
{168, 168, 106: 168, 108: 168, 111: 168, 168, 115: 168, 168, 118: 168, 168, 168, 168, 168, 572: 8210, 583: 2453, 2453, 591: 4828, 595: 2453, 760: 168, 840: 8209},
{583: 4781, 4782, 595: 3209, 839: 4778, 865: 4780, 955: 8212},
{583: 4781, 4782, 595: 3209, 839: 4778, 865: 4780, 955: 8211},
{166, 166, 106: 166, 108: 166, 111: 166, 166, 115: 166, 166, 118: 166, 166, 166, 166, 166, 760: 166},
// 5190
{167, 167, 106: 167, 108: 167, 111: 167, 167, 115: 167, 167, 118: 167, 167, 167, 167, 167, 760: 167},
{170, 170, 106: 170, 108: 170, 111: 170, 170, 115: 170, 170, 118: 170, 170, 170, 170, 170, 760: 170},
{2: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 11: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 54: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 618: 5233, 899: 8215},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 811: 5874, 3217, 3218, 3216, 1034: 8216},
{123: 7936, 135: 7941, 7943, 7937, 7942, 7945, 7939, 7935, 7940, 7946, 7944, 7938, 1022: 7933, 1286: 8217},
// 5195
{198, 198, 10: 7972, 123: 7936, 135: 7941, 7943, 7937, 7942, 7945, 7939, 7935, 7940, 7946, 7944, 7938, 1022: 7971},
{2: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 11: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 54: 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 575: 2240, 618: 5233, 899: 8219},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 3352, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 575: 3214, 811: 3213, 3217, 3218, 3216, 962: 8220},
{124: 7790, 7788, 7787, 7789, 7786, 1023: 7784, 1308: 8221},
{201, 201, 10: 7850, 124: 7790, 7788, 7787, 7789, 7786, 1023: 7849},
// 5200
{19: 4960, 906: 8223},
{461, 461},
{462, 462},
{478: 8226},
{460, 460, 106: 8227},
// 5205
{107: 8228},
{570: 8229},
{285: 8230},
{459, 459},
{2: 3475, 3644, 3439, 3311, 3355, 3272, 3477, 3232, 11: 3283, 3233, 3378, 3496, 3489, 3303, 3248, 3358, 3688, 3360, 3305, 3331, 3266, 3269, 3258, 3271, 3294, 3362, 3363, 3471, 3357, 3497, 3632, 3638, 3580, 3231, 3356, 3359, 3370, 3301, 3366, 3481, 3321, 3406, 3229, 3230, 3405, 3479, 3228, 3494, 3581, 3582, 54: 3313, 3224, 3215, 3451, 3583, 3584, 3296, 3606, 3290, 3320, 3568, 3323, 3550, 3547, 3603, 3604, 3605, 3539, 3551, 3554, 3555, 3552, 3556, 3557, 3553, 3607, 3768, 3763, 3601, 3546, 3602, 3558, 3541, 3542, 3767, 3545, 3548, 3765, 3549, 3559, 3766, 3600, 3599, 3509, 3576, 3507, 3577, 3508, 3220, 3436, 3237, 3252, 3392, 3316, 3324, 3339, 3219, 3524, 3523, 3326, 3246, 3525, 3520, 3267, 3519, 3526, 3521, 3522, 3314, 3648, 3778, 3761, 3757, 3777, 3756, 3346, 3689, 3329, 3400, 3506, 3670, 3745, 3750, 3737, 3749, 3751, 3740, 3746, 3747, 3748, 3752, 3744, 3775, 3249, 3769, 3491, 3770, 3771, 8232, 3395, 3261, 3667, 3420, 3293, 3413, 3414, 3409, 3367, 3498, 3499, 3500, 3501, 3502, 3503, 3505, 3348, 3222, 3242, 3325, 3330, 3495, 3281, 3693, 3695, 3515, 3372, 3575, 3260, 3259, 3417, 3421, 3334, 3596, 3445, 3661, 3284, 3447, 3425, 3426, 3427, 3428, 3416, 3251, 3446, 3579, 3672, 3288, 3700, 3779, 3336, 3782, 3240, 3623, 3332, 3397, 3238, 3239, 3257, 3437, 3273, 3291, 3353, 3624, 3364, 3365, 3299, 3374, 3315, 3344, 3537, 3268, 3286, 3295, 3640, 3510, 3377, 3419, 3573, 3333, 3642, 3341, 3396, 3487, 3724, 3569, 3300, 3561, 3692, 3512, 3631, 3433, 3780, 3585, 3513, 3690, 3304, 3342, 3562, 3241, 3773, 3617, 3587, 3772, 3287, 3675, 3679, 3371, 3297, 3455, 3532, 3570, 3391, 3571, 3486, 3628, 3527, 3319, 3424, 3774, 3722, 3484, 3381, 3225, 3612, 3243, 3253, 3386, 3622, 3263, 3265, 3388, 3274, 3728, 3285, 3588, 3469, 3540, 3347, 3567, 3415, 3384, 3444, 3490, 3373, 3776, 3630, 3328, 3641, 3485, 3608, 3609, 3236, 3393, 3456, 3762, 3659, 3610, 3590, 3613, 3247, 3563, 3614, 3408, 3254, 3458, 3662, 3616, 3453, 3262, 3618, 3467, 3493, 3478, 3620, 3621, 3668, 3651, 3264, 3488, 3278, 3518, 3731, 3289, 3292, 3758, 3468, 3516, 3275, 3452, 3383, 3676, 3511, 3677, 3462, 3514, 3574, 3760, 3759, 3764, 3781, 3398, 3533, 3402, 3460, 3572, 3308, 3309, 3310, 3312, 3432, 3543, 3434, 3318, 3652, 3694, 3627, 3482, 3483, 3422, 3322, 3431, 3464, 3633, 3227, 3705, 3463, 3753, 3712, 3713, 3714, 3715, 3717, 3716, 3718, 3719, 3720, 3643, 3337, 3465, 3742, 3741, 3345, 3591, 3517, 3536, 3234, 3223, 3538, 3564, 3226, 3611, 3443, 3244, 3245, 3430, 3354, 3597, 3615, 3375, 3250, 3255, 3256, 3619, 3387, 3669, 3389, 3270, 3399, 3277, 3450, 3725, 3280, 3461, 3589, 3394, 3368, 3639, 3678, 3438, 3457, 3504, 3380, 3470, 3680, 3361, 3449, 3401, 3594, 3593, 3595, 3645, 3726, 3302, 3473, 3476, 3566, 3646, 3327, 3578, 3411, 3412, 3418, 3684, 3649, 3685, 3686, 3544, 3586, 3317, 3480, 3442, 3379, 3629, 3474, 3634, 3635, 3636, 3637, 3459, 3565, 3472, 3709, 3440, 3335, 3735, 3721, 3592, 3598, 3338, 3369, 3376, 3441, 3343, 3647, 3448, 3653, 3221, 3350, 3654, 3655, 3235, 3656, 3657, 3658, 3727, 3660, 3664, 3663, 3665, 3666, 3276, 3435, 3404, 3279, 3671, 3282, 3736, 3673, 3674, 3492, 3754, 3755, 3733, 3732, 3734, 3534, 3738, 3739, 3682, 3529, 3528, 3454, 3681, 3298, 3625, 3626, 3683, 3531, 3530, 3691, 3410, 3306, 3307, 3560, 3429, 3650, 3390, 3407, 3687, 3535, 3423, 3351, 3466, 3382, 3385, 3729, 3701, 3702, 3703, 3704, 3696, 3730, 3697, 3698, 3699, 3403, 3710, 3711, 3723, 3340, 3706, 3707, 3708, 3743, 3349, 571: 3956, 670: 6239, 811: 3957, 3217, 3218, 3216, 845: 6238, 895: 6256, 1041: 6257, 1073: 8233},
// 5210
{2065, 2065, 6: 2065, 10: 2065, 16: 2065, 54: 2065, 2065, 57: 2065, 2065, 2065, 215: 2065, 569: 8239, 572: 2065, 668: 2065, 764: 2065, 2065},
{447, 447, 6: 447, 10: 6259, 16: 447, 54: 447, 447, 57: 447, 447, 447, 572: 447, 764: 6303, 1124: 6302, 8234},
{455, 455, 6: 455, 16: 455, 54: 455, 455, 57: 455, 455, 455, 572: 7875, 1182: 8235},
{428, 428, 6: 428, 16: 7891, 54: 428, 428, 57: 7890, 7892, 7893, 1116: 7889, 1284: 7888, 8236},
{433, 433, 6: 7918, 54: 433, 7919, 1179: 8237},
// 5215
{430, 430, 54: 7923, 1307: 8238},
{464, 464},
{53: 8240},
{215: 8241},
{761: 8242},
// 5220
{571: 6272, 1044: 8243},
{463, 463},
{17: 1729, 19: 1729, 23: 1729, 240: 5867, 575: 1729, 578: 1729, 593: 1729, 597: 1729, 748: 1729},
{17: 2592, 19: 2592, 23: 2592, 575: 5003, 578: 2592, 593: 2592, 597: 8016, 748: 2592, 906: 8015, 933: 8014, 1004: 8018, 1086: 8247},
{2613, 2613, 17: 2592, 19: 2592, 23: 2592, 575: 5003, 578: 2592, 593: 2592, 597: 8016, 748: 2592, 906: 8015, 933: 8014, 1004: 8019},
// 5225
{2614, 2614, 17: 2592, 19: 2592, 23: 2592, 575: 5003, 578: 2592, 593: 2592, 597: 8016, 748: 2592, 906: 8015, 933: 8014, 1004: 8019},
{2451, 2451, 3: 3031, 64: 3054, 104: 3033, 3036, 107: 3065, 3034, 3186, 122: 3067, 130: 3202, 149: 3194, 183: 3205, 223: 3051, 230: 3049, 249: 3061, 273: 3203, 277: 3030, 282: 3039, 287: 3085, 292: 3053, 295: 3027, 303: 3084, 3197, 306: 3035, 311: 3204, 322: 3064, 327: 3029, 333: 3062, 335: 3028, 337: 3068, 358: 3055, 360: 3190, 362: 3201, 364: 3057, 373: 3066, 378: 3052, 391: 3044, 569: 3076, 572: 3075, 587: 3074, 589: 3060, 597: 3083, 601: 3196, 615: 3189, 617: 3047, 623: 3045, 626: 3059, 646: 3073, 694: 3069, 751: 3188, 753: 3032, 762: 3025, 767: 3038, 782: 3037, 806: 3198, 3026, 815: 3080, 843: 3040, 846: 3082, 3070, 3071, 3072, 3081, 3079, 3078, 3077, 856: 3043, 3164, 3163, 862: 3187, 3041, 3145, 866: 3156, 3173, 3046, 875: 3042, 879: 3102, 885: 3096, 3100, 3153, 3165, 897: 3104, 3048, 901: 3172, 3174, 937: 3050, 945: 3089, 948: 3144, 950: 3193, 984: 3200, 990: 3056, 995: 3097, 1007: 3191, 1010: 3147, 1012: 3158, 1014: 3162, 1085: 3109, 1141: 3195, 1150: 3117, 3087, 1153: 3088, 3091, 1157: 3094, 3092, 3095, 1161: 3093, 1163: 3090, 1165: 3098, 3099, 1168: 3105, 3058, 3143, 3106, 3183, 1183: 3113, 3107, 3108, 3114, 3115, 3116, 3112, 3118, 3119, 1193: 3111, 3110, 1196: 3101, 3063, 1199: 3120, 3121, 3135, 3122, 3123, 3126, 3125, 3131, 3130, 3132, 3127, 3133, 3134, 3124, 3129, 3128, 1217: 3086, 1220: 3103, 1225: 3139, 3137, 1228: 3138, 3136, 1233: 3141, 3142, 3140, 1239: 3180, 1247: 3199, 3146, 1257: 3148, 3149, 3176, 1261: 3181, 1270: 3182, 1287: 3151, 3152, 1298: 3179, 3157, 1302: 3161, 1304: 3154, 3155, 1311: 3178, 3192, 3160, 3159, 1320: 3166, 1322: 3168, 3167, 1325: 3170, 1327: 3177, 1329: 3169, 1335: 8249, 1349: 3171, 1352: 3184, 3150, 3175},
{680, 680},
}
)
var yyDebug = 0
type yyLexer interface {
Lex(lval *yySymType) int
Errorf(format string, a ...interface{}) error
AppendError(err error)
AppendWarn(err error)
Errors() (warns []error, errs []error)
}
type yyLexerEx interface {
yyLexer
Reduced(rule, state int, lval *yySymType) bool
}
func yySymName(c int) (s string) {
x, ok := yyXLAT[c]
if ok {
return yySymNames[x]
}
return __yyfmt__.Sprintf("%d", c)
}
func yylex1(yylex yyLexer, lval *yySymType) (n int) {
n = yylex.Lex(lval)
if n <= 0 {
n = yyEOFCode
}
if yyDebug >= 3 {
__yyfmt__.Printf("\nlex %s(%#x %d), lval: %+v\n", yySymName(n), n, n, lval)
}
return n
}
func yyParse(yylex yyLexer, parser *Parser) int {
const yyError = 1583
yyEx, _ := yylex.(yyLexerEx)
var yyn int
parser.yylval = yySymType{}
yyS := parser.cache
Nerrs := 0 /* number of errors */
Errflag := 0 /* error recovery flag */
yyerrok := func() {
if yyDebug >= 2 {
__yyfmt__.Printf("yyerrok()\n")
}
Errflag = 0
}
_ = yyerrok
yystate := 0
yychar := -1
var yyxchar int
var yyshift int
yyp := -1
goto yystack
ret0:
return 0
ret1:
return 1
yystack:
/* put a state and value onto the stack */
yyp++
if yyp+1 >= len(yyS) {
nyys := make([]yySymType, len(yyS)*2)
copy(nyys, yyS)
yyS = nyys
parser.cache = yyS
}
parser.yyVAL = &yyS[yyp+1]
yyS[yyp].yys = yystate
yynewstate:
if yychar < 0 {
yychar = yylex1(yylex, &parser.yylval)
var ok bool
if yyxchar, ok = yyXLAT[yychar]; !ok {
yyxchar = len(yySymNames) // > tab width
}
}
if yyDebug >= 4 {
var a []int
for _, v := range yyS[:yyp+1] {
a = append(a, v.yys)
}
__yyfmt__.Printf("state stack %v\n", a)
}
row := yyParseTab[yystate]
yyn = 0
if yyxchar < len(row) {
if yyn = int(row[yyxchar]); yyn != 0 {
yyn += yyTabOfs
}
}
switch {
case yyn > 0: // shift
yychar = -1
*parser.yyVAL = parser.yylval
yystate = yyn
yyshift = yyn
if yyDebug >= 2 {
__yyfmt__.Printf("shift, and goto state %d\n", yystate)
}
if Errflag > 0 {
Errflag--
}
goto yystack
case yyn < 0: // reduce
case yystate == 1: // accept
if yyDebug >= 2 {
__yyfmt__.Println("accept")
}
goto ret0
}
if yyn == 0 {
/* error ... attempt to resume parsing */
switch Errflag {
case 0: /* brand new error */
if yyDebug >= 1 {
__yyfmt__.Printf("no action for %s in state %d\n", yySymName(yychar), yystate)
}
msg, ok := yyXErrors[yyXError{yystate, yyxchar}]
if !ok {
msg, ok = yyXErrors[yyXError{yystate, -1}]
}
if !ok && yyshift != 0 {
msg, ok = yyXErrors[yyXError{yyshift, yyxchar}]
}
if !ok {
msg, ok = yyXErrors[yyXError{yyshift, -1}]
}
if !ok || msg == "" {
msg = "syntax error"
}
// ignore goyacc error message
yylex.AppendError(yylex.Errorf(""))
Nerrs++
fallthrough
case 1, 2: /* incompletely recovered error ... try again */
Errflag = 3
/* find a state where "error" is a legal shift action */
for yyp >= 0 {
row := yyParseTab[yyS[yyp].yys]
if yyError < len(row) {
yyn = int(row[yyError]) + yyTabOfs
if yyn > 0 { // hit
if yyDebug >= 2 {
__yyfmt__.Printf("error recovery found error shift in state %d\n", yyS[yyp].yys)
}
yystate = yyn /* simulate a shift of "error" */
goto yystack
}
}
/* the current p has no shift on "error", pop stack */
if yyDebug >= 2 {
__yyfmt__.Printf("error recovery pops state %d\n", yyS[yyp].yys)
}
yyp--
}
/* there is no state on the stack with an error shift ... abort */
if yyDebug >= 2 {
__yyfmt__.Printf("error recovery failed\n")
}
goto ret1
case 3: /* no shift yet; clobber input char */
if yyDebug >= 2 {
__yyfmt__.Printf("error recovery discards %s\n", yySymName(yychar))
}
if yychar == yyEOFCode {
goto ret1
}
yychar = -1
goto yynewstate /* try again in the same state */
}
}
r := -yyn
x0 := yyReductions[r]
x, n := x0.xsym, x0.components
yypt := yyp
_ = yypt // guard against "declared and not used"
yyp -= n
if yyp+1 >= len(yyS) {
nyys := make([]yySymType, len(yyS)*2)
copy(nyys, yyS)
yyS = nyys
parser.cache = yyS
}
parser.yyVAL = &yyS[yyp+1]
/* consult goto table to find next state */
exState := yystate
yystate = int(yyParseTab[yyS[yyp].yys][x]) + yyTabOfs
/* reduction by production r */
if yyDebug >= 2 {
__yyfmt__.Printf("reduce using rule %v (%s), and goto state %d\n", r, yySymNames[x], yystate)
}
switch r {
case 2:
{
specs := yyS[yypt-1].item.([]*ast.AlterTableSpec)
if yyS[yypt-0].item != nil {
specs = append(specs, yyS[yypt-0].item.(*ast.AlterTableSpec))
}
parser.yyVAL.statement = &ast.AlterTableStmt{
Table: yyS[yypt-2].item.(*ast.TableName),
Specs: specs,
}
}
case 3:
{
parser.yyVAL.statement = &ast.AnalyzeTableStmt{TableNames: []*ast.TableName{yyS[yypt-4].item.(*ast.TableName)}, PartitionNames: yyS[yypt-1].item.([]ast.CIStr), AnalyzeOpts: yyS[yypt-0].item.([]ast.AnalyzeOpt)}
}
case 4:
{
parser.yyVAL.statement = &ast.AnalyzeTableStmt{
TableNames: []*ast.TableName{yyS[yypt-6].item.(*ast.TableName)},
PartitionNames: yyS[yypt-3].item.([]ast.CIStr),
IndexNames: yyS[yypt-1].item.([]ast.CIStr),
IndexFlag: true,
AnalyzeOpts: yyS[yypt-0].item.([]ast.AnalyzeOpt),
}
}
case 5:
{
parser.yyVAL.statement = &ast.CompactTableStmt{
Table: yyS[yypt-1].item.(*ast.TableName),
ReplicaKind: ast.CompactReplicaKindAll,
}
}
case 6:
{
parser.yyVAL.statement = &ast.CompactTableStmt{
Table: yyS[yypt-3].item.(*ast.TableName),
ReplicaKind: ast.CompactReplicaKindTiFlash,
}
}
case 7:
{
parser.yyVAL.statement = &ast.CompactTableStmt{
Table: yyS[yypt-3].item.(*ast.TableName),
PartitionNames: yyS[yypt-0].item.([]ast.CIStr),
ReplicaKind: ast.CompactReplicaKindAll,
}
}
case 8:
{
parser.yyVAL.statement = &ast.CompactTableStmt{
Table: yyS[yypt-5].item.(*ast.TableName),
PartitionNames: yyS[yypt-2].item.([]ast.CIStr),
ReplicaKind: ast.CompactReplicaKindTiFlash,
}
}
case 9:
{
parser.yyVAL.item = []*ast.ResourceGroupOption{yyS[yypt-0].item.(*ast.ResourceGroupOption)}
}
case 10:
{
if !ast.CheckAppend(yyS[yypt-1].item.([]*ast.ResourceGroupOption), yyS[yypt-0].item.(*ast.ResourceGroupOption)) {
yylex.AppendError(yylex.Errorf("Dupliated options specified"))
return 1
}
parser.yyVAL.item = append(yyS[yypt-1].item.([]*ast.ResourceGroupOption), yyS[yypt-0].item.(*ast.ResourceGroupOption))
}
case 11:
{
if !ast.CheckAppend(yyS[yypt-2].item.([]*ast.ResourceGroupOption), yyS[yypt-0].item.(*ast.ResourceGroupOption)) {
yylex.AppendError(yylex.Errorf("Dupliated options specified"))
return 1
}
parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.ResourceGroupOption), yyS[yypt-0].item.(*ast.ResourceGroupOption))
}
case 12:
{
parser.yyVAL.item = uint64(1)
}
case 13:
{
parser.yyVAL.item = uint64(8)
}
case 14:
{
parser.yyVAL.item = uint64(16)
}
case 15:
{
parser.yyVAL.item = []*ast.ResourceGroupRunawayOption{yyS[yypt-0].item.(*ast.ResourceGroupRunawayOption)}
}
case 16:
{
if !ast.CheckRunawayAppend(yyS[yypt-1].item.([]*ast.ResourceGroupRunawayOption), yyS[yypt-0].item.(*ast.ResourceGroupRunawayOption)) {
yylex.AppendError(yylex.Errorf("Dupliated runaway options specified"))
return 1
}
parser.yyVAL.item = append(yyS[yypt-1].item.([]*ast.ResourceGroupRunawayOption), yyS[yypt-0].item.(*ast.ResourceGroupRunawayOption))
}
case 17:
{
if !ast.CheckRunawayAppend(yyS[yypt-2].item.([]*ast.ResourceGroupRunawayOption), yyS[yypt-0].item.(*ast.ResourceGroupRunawayOption)) {
yylex.AppendError(yylex.Errorf("Dupliated runaway options specified"))
return 1
}
parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.ResourceGroupRunawayOption), yyS[yypt-0].item.(*ast.ResourceGroupRunawayOption))
}
case 18:
{
parser.yyVAL.item = ast.WatchExact
}
case 19:
{
parser.yyVAL.item = ast.WatchSimilar
}
case 20:
{
parser.yyVAL.item = ast.WatchPlan
}
case 21:
{
parser.yyVAL.item = &ast.ResourceGroupRunawayActionOption{Type: ast.RunawayActionDryRun}
}
case 22:
{
parser.yyVAL.item = &ast.ResourceGroupRunawayActionOption{Type: ast.RunawayActionCooldown}
}
case 23:
{
parser.yyVAL.item = &ast.ResourceGroupRunawayActionOption{Type: ast.RunawayActionKill}
}
case 24:
{
parser.yyVAL.item = &ast.ResourceGroupRunawayActionOption{
Type: ast.RunawayActionSwitchGroup,
SwitchGroupName: ast.NewCIStr(yyS[yypt-1].ident),
}
}
case 25:
{
_, err := time.ParseDuration(yyS[yypt-0].ident)
if err != nil {
yylex.AppendError(yylex.Errorf("The EXEC_ELAPSED option is not a valid duration: %s", err.Error()))
return 1
}
parser.yyVAL.item = &ast.ResourceGroupRunawayOption{
Tp: ast.RunawayRule,
RuleOption: &ast.ResourceGroupRunawayRuleOption{Tp: ast.RunawayRuleExecElapsed, ExecElapsed: yyS[yypt-0].ident},
}
}
case 26:
{
parser.yyVAL.item = &ast.ResourceGroupRunawayOption{
Tp: ast.RunawayRule,
RuleOption: &ast.ResourceGroupRunawayRuleOption{Tp: ast.RunawayRuleProcessedKeys, ProcessedKeys: yyS[yypt-0].item.(int64)},
}
}
case 27:
{
parser.yyVAL.item = &ast.ResourceGroupRunawayOption{
Tp: ast.RunawayRule,
RuleOption: &ast.ResourceGroupRunawayRuleOption{Tp: ast.RunawayRuleRequestUnit, RequestUnit: yyS[yypt-0].item.(int64)},
}
}
case 28:
{
parser.yyVAL.item = &ast.ResourceGroupRunawayOption{
Tp: ast.RunawayAction,
ActionOption: yyS[yypt-0].item.(*ast.ResourceGroupRunawayActionOption),
}
}
case 29:
{
dur := strings.ToLower(yyS[yypt-0].item.(string))
if dur == "unlimited" {
dur = ""
}
if len(dur) > 0 {
_, err := time.ParseDuration(dur)
if err != nil {
yylex.AppendError(yylex.Errorf("The WATCH DURATION option is not a valid duration: %s", err.Error()))
return 1
}
}
parser.yyVAL.item = &ast.ResourceGroupRunawayOption{
Tp: ast.RunawayWatch,
WatchOption: &ast.ResourceGroupRunawayWatchOption{
Type: yyS[yypt-1].item.(ast.RunawayWatchType),
Duration: dur,
},
}
}
case 30:
{
parser.yyVAL.item = ""
}
case 31:
{
parser.yyVAL.item = yyS[yypt-0].ident
}
case 32:
{
parser.yyVAL.item = ""
}
case 33:
{
parser.yyVAL.item = &ast.ResourceGroupOption{Tp: ast.ResourceRURate, UintValue: yyS[yypt-0].item.(uint64)}
}
case 34:
{
parser.yyVAL.item = &ast.ResourceGroupOption{Tp: ast.ResourceRURate, Burstable: ast.BurstableUnlimited}
}
case 35:
{
parser.yyVAL.item = &ast.ResourceGroupOption{Tp: ast.ResourcePriority, UintValue: yyS[yypt-0].item.(uint64)}
}
case 36:
{
parser.yyVAL.item = &ast.ResourceGroupOption{Tp: ast.ResourceBurstable, Burstable: ast.BurstableModerated}
}
case 37:
{
parser.yyVAL.item = &ast.ResourceGroupOption{Tp: ast.ResourceBurstable, Burstable: ast.BurstableModerated}
}
case 38:
{
parser.yyVAL.item = &ast.ResourceGroupOption{Tp: ast.ResourceBurstable, Burstable: ast.BurstableUnlimited}
}
case 39:
{
parser.yyVAL.item = &ast.ResourceGroupOption{Tp: ast.ResourceBurstable, Burstable: ast.BurstableDisable}
}
case 40:
{
parser.yyVAL.item = &ast.ResourceGroupOption{Tp: ast.ResourceGroupRunaway, RunawayOptionList: yyS[yypt-1].item.([]*ast.ResourceGroupRunawayOption)}
}
case 41:
{
parser.yyVAL.item = &ast.ResourceGroupOption{Tp: ast.ResourceGroupRunaway, RunawayOptionList: nil}
}
case 42:
{
parser.yyVAL.item = &ast.ResourceGroupOption{Tp: ast.ResourceGroupRunaway, RunawayOptionList: nil}
}
case 43:
{
parser.yyVAL.item = &ast.ResourceGroupOption{Tp: ast.ResourceGroupBackground, BackgroundOptions: yyS[yypt-1].item.([]*ast.ResourceGroupBackgroundOption)}
}
case 44:
{
parser.yyVAL.item = &ast.ResourceGroupOption{Tp: ast.ResourceGroupBackground, BackgroundOptions: nil}
}
case 45:
{
parser.yyVAL.item = &ast.ResourceGroupOption{Tp: ast.ResourceGroupBackground, BackgroundOptions: nil}
}
case 46:
{
parser.yyVAL.item = []*ast.ResourceGroupBackgroundOption{yyS[yypt-0].item.(*ast.ResourceGroupBackgroundOption)}
}
case 47:
{
if !ast.CheckBackgroundAppend(yyS[yypt-1].item.([]*ast.ResourceGroupBackgroundOption), yyS[yypt-0].item.(*ast.ResourceGroupBackgroundOption)) {
yylex.AppendError(yylex.Errorf("Dupliated background options specified"))
return 1
}
parser.yyVAL.item = append(yyS[yypt-1].item.([]*ast.ResourceGroupBackgroundOption), yyS[yypt-0].item.(*ast.ResourceGroupBackgroundOption))
}
case 48:
{
if !ast.CheckBackgroundAppend(yyS[yypt-2].item.([]*ast.ResourceGroupBackgroundOption), yyS[yypt-0].item.(*ast.ResourceGroupBackgroundOption)) {
yylex.AppendError(yylex.Errorf("Dupliated background options specified"))
return 1
}
parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.ResourceGroupBackgroundOption), yyS[yypt-0].item.(*ast.ResourceGroupBackgroundOption))
}
case 49:
{
parser.yyVAL.item = &ast.ResourceGroupBackgroundOption{Type: ast.BackgroundOptionTaskNames, StrValue: yyS[yypt-0].ident}
}
case 50:
{
parser.yyVAL.item = &ast.ResourceGroupBackgroundOption{Type: ast.BackgroundUtilizationLimit, UintValue: yyS[yypt-0].item.(uint64)}
}
case 51:
{
parser.yyVAL.item = []*ast.PlacementOption{yyS[yypt-0].item.(*ast.PlacementOption)}
}
case 52:
{
parser.yyVAL.item = append(yyS[yypt-1].item.([]*ast.PlacementOption), yyS[yypt-0].item.(*ast.PlacementOption))
}
case 53:
{
parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.PlacementOption), yyS[yypt-0].item.(*ast.PlacementOption))
}
case 54:
{
parser.yyVAL.item = &ast.PlacementOption{Tp: ast.PlacementOptionPrimaryRegion, StrValue: yyS[yypt-0].ident}
}
case 55:
{
parser.yyVAL.item = &ast.PlacementOption{Tp: ast.PlacementOptionRegions, StrValue: yyS[yypt-0].ident}
}
case 56:
{
cnt := yyS[yypt-0].item.(uint64)
if cnt == 0 {
yylex.AppendError(yylex.Errorf("FOLLOWERS must be positive"))
return 1
}
parser.yyVAL.item = &ast.PlacementOption{Tp: ast.PlacementOptionFollowerCount, UintValue: cnt}
}
case 57:
{
parser.yyVAL.item = &ast.PlacementOption{Tp: ast.PlacementOptionVoterCount, UintValue: yyS[yypt-0].item.(uint64)}
}
case 58:
{
parser.yyVAL.item = &ast.PlacementOption{Tp: ast.PlacementOptionLearnerCount, UintValue: yyS[yypt-0].item.(uint64)}
}
case 59:
{
parser.yyVAL.item = &ast.PlacementOption{Tp: ast.PlacementOptionSchedule, StrValue: yyS[yypt-0].ident}
}
case 60:
{
parser.yyVAL.item = &ast.PlacementOption{Tp: ast.PlacementOptionConstraints, StrValue: yyS[yypt-0].ident}
}
case 61:
{
parser.yyVAL.item = &ast.PlacementOption{Tp: ast.PlacementOptionLeaderConstraints, StrValue: yyS[yypt-0].ident}
}
case 62:
{
parser.yyVAL.item = &ast.PlacementOption{Tp: ast.PlacementOptionFollowerConstraints, StrValue: yyS[yypt-0].ident}
}
case 63:
{
parser.yyVAL.item = &ast.PlacementOption{Tp: ast.PlacementOptionVoterConstraints, StrValue: yyS[yypt-0].ident}
}
case 64:
{
parser.yyVAL.item = &ast.PlacementOption{Tp: ast.PlacementOptionLearnerConstraints, StrValue: yyS[yypt-0].ident}
}
case 65:
{
parser.yyVAL.item = &ast.PlacementOption{Tp: ast.PlacementOptionSurvivalPreferences, StrValue: yyS[yypt-0].ident}
}
case 66:
{
parser.yyVAL.item = &ast.PlacementOption{Tp: ast.PlacementOptionPolicy, StrValue: yyS[yypt-0].ident}
}
case 67:
{
parser.yyVAL.item = &ast.PlacementOption{Tp: ast.PlacementOptionPolicy, StrValue: yyS[yypt-0].ident}
}
case 68:
{
parser.yyVAL.item = &ast.PlacementOption{Tp: ast.PlacementOptionPolicy, StrValue: yyS[yypt-0].ident}
}
case 69:
{
parser.yyVAL.item = &ast.PlacementOption{Tp: ast.PlacementOptionPolicy, StrValue: yyS[yypt-0].ident}
}
case 70:
{
parser.yyVAL.item = &ast.AttributesSpec{Default: true}
}
case 71:
{
parser.yyVAL.item = &ast.AttributesSpec{Default: false, Attributes: yyS[yypt-0].ident}
}
case 72:
{
parser.yyVAL.item = &ast.StatsOptionsSpec{Default: true}
}
case 73:
{
parser.yyVAL.item = &ast.StatsOptionsSpec{Default: false, StatsOptions: yyS[yypt-0].ident}
}
case 74:
{
if yyS[yypt-0].item != nil {
parser.yyVAL.item = &ast.AlterTableSpec{
Tp: ast.AlterTablePartition,
Partition: yyS[yypt-0].item.(*ast.PartitionOptions),
}
} else {
parser.yyVAL.item = nil
}
}
case 75:
{
parser.yyVAL.item = &ast.AlterTableSpec{
Tp: ast.AlterTableRemovePartitioning,
}
}
case 76:
{
ret := yyS[yypt-0].item.(*ast.AlterTableSpec)
ret.NoWriteToBinlog = yyS[yypt-1].item.(bool)
parser.yyVAL.item = ret
}
case 77:
{
partitionMethod := ast.PartitionMethod{Expr: yyS[yypt-1].expr}
startOffset := parser.yyVAL.offset
endOffset := parser.yylval.offset
partitionMethod.SetText(parser.lexer.client, parser.src[startOffset:endOffset])
parser.yyVAL.item = &ast.AlterTableSpec{
Tp: ast.AlterTableReorganizeLastPartition,
Partition: &ast.PartitionOptions{PartitionMethod: partitionMethod},
}
}
case 78:
{
partitionMethod := ast.PartitionMethod{Expr: yyS[yypt-1].expr}
startOffset := parser.yyVAL.offset
endOffset := parser.yylval.offset
partitionMethod.SetText(parser.lexer.client, parser.src[startOffset:endOffset])
parser.yyVAL.item = &ast.AlterTableSpec{
Tp: ast.AlterTableReorganizeFirstPartition,
Partition: &ast.PartitionOptions{PartitionMethod: partitionMethod},
}
}
case 79:
{
parser.yyVAL.item = &ast.AlterTableSpec{
Tp: ast.AlterTablePartitionAttributes,
PartitionNames: []ast.CIStr{ast.NewCIStr(yyS[yypt-1].ident)},
AttributesSpec: yyS[yypt-0].item.(*ast.AttributesSpec),
}
}
case 80:
{
parser.yyVAL.item = &ast.AlterTableSpec{
Tp: ast.AlterTablePartitionOptions,
PartitionNames: []ast.CIStr{ast.NewCIStr(yyS[yypt-1].ident)},
Options: yyS[yypt-0].item.([]*ast.TableOption),
}
}
case 81:
{
parser.yyVAL.item = &ast.AlterTableSpec{
Tp: ast.AlterTableRemoveTTL,
}
}
case 82:
{
parser.yyVAL.item = []string{}
}
case 83:
{
parser.yyVAL.item = yyS[yypt-0].item
}
case 84:
{
parser.yyVAL.item = &ast.AlterTableSpec{
Tp: ast.AlterTableOption,
Options: yyS[yypt-0].item.([]*ast.TableOption),
}
}
case 85:
{
tiflashReplicaSpec := &ast.TiFlashReplicaSpec{
Count: yyS[yypt-1].item.(uint64),
Labels: yyS[yypt-0].item.([]string),
}
parser.yyVAL.item = &ast.AlterTableSpec{
Tp: ast.AlterTableSetTiFlashReplica,
TiFlashReplica: tiflashReplicaSpec,
}
}
case 86:
{
tiflashReplicaSpec := &ast.TiFlashReplicaSpec{
Count: yyS[yypt-1].item.(uint64),
Labels: yyS[yypt-0].item.([]string),
Hypo: true,
}
parser.yyVAL.item = &ast.AlterTableSpec{
Tp: ast.AlterTableSetTiFlashReplica,
TiFlashReplica: tiflashReplicaSpec,
}
}
case 87:
{
op := &ast.AlterTableSpec{
Tp: ast.AlterTableOption,
Options: []*ast.TableOption{{Tp: ast.TableOptionCharset, StrValue: yyS[yypt-1].ident,
UintValue: ast.TableOptionCharsetWithConvertTo}},
}
if yyS[yypt-0].ident != "" {
op.Options = append(op.Options, &ast.TableOption{Tp: ast.TableOptionCollate, StrValue: yyS[yypt-0].ident})
}
parser.yyVAL.item = op
}
case 88:
{
op := &ast.AlterTableSpec{
Tp: ast.AlterTableOption,
Options: []*ast.TableOption{{Tp: ast.TableOptionCharset, Default: true,
UintValue: ast.TableOptionCharsetWithConvertTo}},
}
if yyS[yypt-0].ident != "" {
op.Options = append(op.Options, &ast.TableOption{Tp: ast.TableOptionCollate, StrValue: yyS[yypt-0].ident})
}
parser.yyVAL.item = op
}
case 89:
{
parser.yyVAL.item = &ast.AlterTableSpec{
IfNotExists: yyS[yypt-2].item.(bool),
Tp: ast.AlterTableAddColumns,
NewColumns: []*ast.ColumnDef{yyS[yypt-1].item.(*ast.ColumnDef)},
Position: yyS[yypt-0].item.(*ast.ColumnPosition),
}
}
case 90:
{
tes := yyS[yypt-1].item.([]interface{})
var columnDefs []*ast.ColumnDef
var constraints []*ast.Constraint
for _, te := range tes {
switch te := te.(type) {
case *ast.ColumnDef:
columnDefs = append(columnDefs, te)
case *ast.Constraint:
constraints = append(constraints, te)
}
}
parser.yyVAL.item = &ast.AlterTableSpec{
IfNotExists: yyS[yypt-3].item.(bool),
Tp: ast.AlterTableAddColumns,
NewColumns: columnDefs,
NewConstraints: constraints,
}
}
case 91:
{
constraint := yyS[yypt-0].item.(*ast.Constraint)
parser.yyVAL.item = &ast.AlterTableSpec{
Tp: ast.AlterTableAddConstraint,
Constraint: constraint,
}
}
case 92:
{
var defs []*ast.PartitionDefinition
if yyS[yypt-0].item != nil {
defs = yyS[yypt-0].item.([]*ast.PartitionDefinition)
}
noWriteToBinlog := yyS[yypt-1].item.(bool)
if noWriteToBinlog {
yylex.AppendError(yylex.Errorf("The NO_WRITE_TO_BINLOG option is parsed but ignored for now."))
parser.lastErrorAsWarn()
}
parser.yyVAL.item = &ast.AlterTableSpec{
IfNotExists: yyS[yypt-2].item.(bool),
NoWriteToBinlog: noWriteToBinlog,
Tp: ast.AlterTableAddPartitions,
PartDefinitions: defs,
}
}
case 93:
{
noWriteToBinlog := yyS[yypt-2].item.(bool)
if noWriteToBinlog {
yylex.AppendError(yylex.Errorf("The NO_WRITE_TO_BINLOG option is parsed but ignored for now."))
parser.lastErrorAsWarn()
}
parser.yyVAL.item = &ast.AlterTableSpec{
IfNotExists: yyS[yypt-3].item.(bool),
NoWriteToBinlog: noWriteToBinlog,
Tp: ast.AlterTableAddPartitions,
Num: getUint64FromNUM(yyS[yypt-0].item),
}
}
case 94:
{
noWriteToBinlog := yyS[yypt-0].item.(bool)
if noWriteToBinlog {
yylex.AppendError(yylex.Errorf("The NO_WRITE_TO_BINLOG option is parsed but ignored for now."))
parser.lastErrorAsWarn()
}
partitionMethod := ast.PartitionMethod{Expr: yyS[yypt-2].expr}
startOffset := parser.yyVAL.offset
endOffset := parser.yylval.offset
partitionMethod.SetText(parser.lexer.client, parser.src[startOffset:endOffset])
parser.yyVAL.item = &ast.AlterTableSpec{
NoWriteToBinlog: noWriteToBinlog,
Tp: ast.AlterTableAddLastPartition,
Partition: &ast.PartitionOptions{PartitionMethod: partitionMethod},
}
}
case 95:
{
statsSpec := &ast.StatisticsSpec{
StatsName: yyS[yypt-4].ident,
StatsType: yyS[yypt-3].item.(uint8),
Columns: yyS[yypt-1].item.([]*ast.ColumnName),
}
parser.yyVAL.item = &ast.AlterTableSpec{
Tp: ast.AlterTableAddStatistics,
IfNotExists: yyS[yypt-5].item.(bool),
Statistics: statsSpec,
}
}
case 96:
{
parser.yyVAL.item = &ast.AlterTableSpec{
Tp: ast.AlterTableAttributes,
AttributesSpec: yyS[yypt-0].item.(*ast.AttributesSpec),
}
}
case 97:
{
parser.yyVAL.item = &ast.AlterTableSpec{
Tp: ast.AlterTableStatsOptions,
StatsOptionsSpec: yyS[yypt-0].item.(*ast.StatsOptionsSpec),
}
}
case 98:
{
yylex.AppendError(yylex.Errorf("The CHECK PARTITIONING clause is parsed but not implement yet."))
parser.lastErrorAsWarn()
ret := &ast.AlterTableSpec{
Tp: ast.AlterTableCheckPartitions,
}
if yyS[yypt-0].item == nil {
ret.OnAllPartitions = true
} else {
ret.PartitionNames = yyS[yypt-0].item.([]ast.CIStr)
}
parser.yyVAL.item = ret
}
case 99:
{
noWriteToBinlog := yyS[yypt-1].item.(bool)
if noWriteToBinlog {
yylex.AppendError(yylex.Errorf("The NO_WRITE_TO_BINLOG option is parsed but ignored for now."))
parser.lastErrorAsWarn()
}
parser.yyVAL.item = &ast.AlterTableSpec{
Tp: ast.AlterTableCoalescePartitions,
NoWriteToBinlog: noWriteToBinlog,
Num: getUint64FromNUM(yyS[yypt-0].item),
}
}
case 100:
{
parser.yyVAL.item = &ast.AlterTableSpec{
IfExists: yyS[yypt-2].item.(bool),
Tp: ast.AlterTableDropColumn,
OldColumnName: yyS[yypt-1].item.(*ast.ColumnName),
}
}
case 101:
{
parser.yyVAL.item = &ast.AlterTableSpec{Tp: ast.AlterTableDropPrimaryKey}
}
case 102:
{
parser.yyVAL.item = &ast.AlterTableSpec{
IfExists: yyS[yypt-1].item.(bool),
Tp: ast.AlterTableDropPartition,
PartitionNames: yyS[yypt-0].item.([]ast.CIStr),
}
}
case 103:
{
partitionMethod := ast.PartitionMethod{Expr: yyS[yypt-2].expr}
startOffset := parser.yyVAL.offset
endOffset := parser.yylval.offset
partitionMethod.SetText(parser.lexer.client, parser.src[startOffset:endOffset])
parser.yyVAL.item = &ast.AlterTableSpec{
IfExists: yyS[yypt-0].item.(bool),
Tp: ast.AlterTableDropFirstPartition,
Partition: &ast.PartitionOptions{PartitionMethod: partitionMethod},
}
}
case 104:
{
statsSpec := &ast.StatisticsSpec{
StatsName: yyS[yypt-0].ident,
}
parser.yyVAL.item = &ast.AlterTableSpec{
Tp: ast.AlterTableDropStatistics,
IfExists: yyS[yypt-1].item.(bool),
Statistics: statsSpec,
}
}
case 105:
{
parser.yyVAL.item = &ast.AlterTableSpec{
Tp: ast.AlterTableExchangePartition,
PartitionNames: []ast.CIStr{ast.NewCIStr(yyS[yypt-4].ident)},
NewTable: yyS[yypt-1].item.(*ast.TableName),
WithValidation: yyS[yypt-0].item.(bool),
}
}
case 106:
{
ret := &ast.AlterTableSpec{
Tp: ast.AlterTableTruncatePartition,
}
if yyS[yypt-0].item == nil {
ret.OnAllPartitions = true
} else {
ret.PartitionNames = yyS[yypt-0].item.([]ast.CIStr)
}
parser.yyVAL.item = ret
}
case 107:
{
ret := &ast.AlterTableSpec{
NoWriteToBinlog: yyS[yypt-1].item.(bool),
Tp: ast.AlterTableOptimizePartition,
}
if yyS[yypt-0].item == nil {
ret.OnAllPartitions = true
} else {
ret.PartitionNames = yyS[yypt-0].item.([]ast.CIStr)
}
parser.yyVAL.item = ret
}
case 108:
{
ret := &ast.AlterTableSpec{
NoWriteToBinlog: yyS[yypt-1].item.(bool),
Tp: ast.AlterTableRepairPartition,
}
if yyS[yypt-0].item == nil {
ret.OnAllPartitions = true
} else {
ret.PartitionNames = yyS[yypt-0].item.([]ast.CIStr)
}
parser.yyVAL.item = ret
}
case 109:
{
ret := &ast.AlterTableSpec{
Tp: ast.AlterTableImportPartitionTablespace,
}
if yyS[yypt-1].item == nil {
ret.OnAllPartitions = true
} else {
ret.PartitionNames = yyS[yypt-1].item.([]ast.CIStr)
}
parser.yyVAL.item = ret
yylex.AppendError(yylex.Errorf("The IMPORT PARTITION TABLESPACE clause is parsed but ignored by all storage engines."))
parser.lastErrorAsWarn()
}
case 110:
{
ret := &ast.AlterTableSpec{
Tp: ast.AlterTableDiscardPartitionTablespace,
}
if yyS[yypt-1].item == nil {
ret.OnAllPartitions = true
} else {
ret.PartitionNames = yyS[yypt-1].item.([]ast.CIStr)
}
parser.yyVAL.item = ret
yylex.AppendError(yylex.Errorf("The DISCARD PARTITION TABLESPACE clause is parsed but ignored by all storage engines."))
parser.lastErrorAsWarn()
}
case 111:
{
ret := &ast.AlterTableSpec{
Tp: ast.AlterTableImportTablespace,
}
parser.yyVAL.item = ret
yylex.AppendError(yylex.Errorf("The IMPORT TABLESPACE clause is parsed but ignored by all storage engines."))
parser.lastErrorAsWarn()
}
case 112:
{
ret := &ast.AlterTableSpec{
Tp: ast.AlterTableDiscardTablespace,
}
parser.yyVAL.item = ret
yylex.AppendError(yylex.Errorf("The DISCARD TABLESPACE clause is parsed but ignored by all storage engines."))
parser.lastErrorAsWarn()
}
case 113:
{
ret := &ast.AlterTableSpec{
Tp: ast.AlterTableRebuildPartition,
NoWriteToBinlog: yyS[yypt-1].item.(bool),
}
if yyS[yypt-0].item == nil {
ret.OnAllPartitions = true
} else {
ret.PartitionNames = yyS[yypt-0].item.([]ast.CIStr)
}
parser.yyVAL.item = ret
}
case 114:
{
parser.yyVAL.item = &ast.AlterTableSpec{
IfExists: yyS[yypt-1].item.(bool),
Tp: ast.AlterTableDropIndex,
Name: yyS[yypt-0].ident,
}
}
case 115:
{
parser.yyVAL.item = &ast.AlterTableSpec{
Tp: ast.AlterTableDropForeignKey,
Name: yyS[yypt-0].ident,
}
}
case 116:
{
parser.yyVAL.item = &ast.AlterTableSpec{
Tp: ast.AlterTableOrderByColumns,
OrderByList: yyS[yypt-0].item.([]*ast.AlterOrderItem),
}
}
case 117:
{
parser.yyVAL.item = &ast.AlterTableSpec{
Tp: ast.AlterTableDisableKeys,
}
}
case 118:
{
parser.yyVAL.item = &ast.AlterTableSpec{
Tp: ast.AlterTableEnableKeys,
}
}
case 119:
{
parser.yyVAL.item = &ast.AlterTableSpec{
IfExists: yyS[yypt-2].item.(bool),
Tp: ast.AlterTableModifyColumn,
NewColumns: []*ast.ColumnDef{yyS[yypt-1].item.(*ast.ColumnDef)},
Position: yyS[yypt-0].item.(*ast.ColumnPosition),
}
}
case 120:
{
parser.yyVAL.item = &ast.AlterTableSpec{
IfExists: yyS[yypt-3].item.(bool),
Tp: ast.AlterTableChangeColumn,
OldColumnName: yyS[yypt-2].item.(*ast.ColumnName),
NewColumns: []*ast.ColumnDef{yyS[yypt-1].item.(*ast.ColumnDef)},
Position: yyS[yypt-0].item.(*ast.ColumnPosition),
}
}
case 121:
{
option := &ast.ColumnOption{Expr: yyS[yypt-0].expr}
colDef := &ast.ColumnDef{
Name: yyS[yypt-3].item.(*ast.ColumnName),
Options: []*ast.ColumnOption{option},
}
parser.yyVAL.item = &ast.AlterTableSpec{
Tp: ast.AlterTableAlterColumn,
NewColumns: []*ast.ColumnDef{colDef},
}
}
case 122:
{
option := &ast.ColumnOption{Expr: yyS[yypt-1].expr}
colDef := &ast.ColumnDef{
Name: yyS[yypt-5].item.(*ast.ColumnName),
Options: []*ast.ColumnOption{option},
}
parser.yyVAL.item = &ast.AlterTableSpec{
Tp: ast.AlterTableAlterColumn,
NewColumns: []*ast.ColumnDef{colDef},
}
}
case 123:
{
colDef := &ast.ColumnDef{
Name: yyS[yypt-2].item.(*ast.ColumnName),
}
parser.yyVAL.item = &ast.AlterTableSpec{
Tp: ast.AlterTableAlterColumn,
NewColumns: []*ast.ColumnDef{colDef},
}
}
case 124:
{
oldColName := &ast.ColumnName{Name: ast.NewCIStr(yyS[yypt-2].ident)}
newColName := &ast.ColumnName{Name: ast.NewCIStr(yyS[yypt-0].ident)}
parser.yyVAL.item = &ast.AlterTableSpec{
Tp: ast.AlterTableRenameColumn,
OldColumnName: oldColName,
NewColumnName: newColName,
}
}
case 125:
{
parser.yyVAL.item = &ast.AlterTableSpec{
Tp: ast.AlterTableRenameTable,
NewTable: yyS[yypt-0].item.(*ast.TableName),
}
}
case 126:
{
parser.yyVAL.item = &ast.AlterTableSpec{
Tp: ast.AlterTableRenameTable,
NewTable: yyS[yypt-0].item.(*ast.TableName),
}
}
case 127:
{
parser.yyVAL.item = &ast.AlterTableSpec{
Tp: ast.AlterTableRenameTable,
NewTable: yyS[yypt-0].item.(*ast.TableName),
}
}
case 128:
{
parser.yyVAL.item = &ast.AlterTableSpec{
Tp: ast.AlterTableRenameIndex,
FromKey: ast.NewCIStr(yyS[yypt-2].ident),
ToKey: ast.NewCIStr(yyS[yypt-0].ident),
}
}
case 129:
{
parser.yyVAL.item = &ast.AlterTableSpec{
Tp: ast.AlterTableLock,
LockType: yyS[yypt-0].item.(ast.LockType),
}
}
case 130:
{
parser.yyVAL.item = &ast.AlterTableSpec{
Tp: ast.AlterTableWriteable,
Writeable: yyS[yypt-0].item.(bool),
}
}
case 131:
{
// Parse it and ignore it. Just for compatibility.
parser.yyVAL.item = &ast.AlterTableSpec{
Tp: ast.AlterTableAlgorithm,
Algorithm: yyS[yypt-0].item.(ast.AlgorithmType),
}
}
case 132:
{
// Parse it and ignore it. Just for compatibility.
parser.yyVAL.item = &ast.AlterTableSpec{
Tp: ast.AlterTableForce,
}
}
case 133:
{
// Parse it and ignore it. Just for compatibility.
parser.yyVAL.item = &ast.AlterTableSpec{
Tp: ast.AlterTableWithValidation,
}
}
case 134:
{
// Parse it and ignore it. Just for compatibility.
parser.yyVAL.item = &ast.AlterTableSpec{
Tp: ast.AlterTableWithoutValidation,
}
}
case 135:
{
// Parse it and ignore it. Just for compatibility.
parser.yyVAL.item = &ast.AlterTableSpec{
Tp: ast.AlterTableSecondaryLoad,
}
yylex.AppendError(yylex.Errorf("The SECONDARY_LOAD clause is parsed but not implement yet."))
parser.lastErrorAsWarn()
}
case 136:
{
// Parse it and ignore it. Just for compatibility.
parser.yyVAL.item = &ast.AlterTableSpec{
Tp: ast.AlterTableSecondaryUnload,
}
yylex.AppendError(yylex.Errorf("The SECONDARY_UNLOAD VALIDATION clause is parsed but not implement yet."))
parser.lastErrorAsWarn()
}
case 137:
{
c := &ast.Constraint{
Name: yyS[yypt-1].ident,
Enforced: yyS[yypt-0].item.(bool),
}
parser.yyVAL.item = &ast.AlterTableSpec{
Tp: ast.AlterTableAlterCheck,
Constraint: c,
}
}
case 138:
{
// Parse it and ignore it. Just for compatibility.
c := &ast.Constraint{
Name: yyS[yypt-0].ident,
}
parser.yyVAL.item = &ast.AlterTableSpec{
Tp: ast.AlterTableDropCheck,
Constraint: c,
}
}
case 139:
{
parser.yyVAL.item = &ast.AlterTableSpec{
Tp: ast.AlterTableIndexInvisible,
IndexName: ast.NewCIStr(yyS[yypt-1].ident),
Visibility: yyS[yypt-0].item.(ast.IndexVisibility),
}
}
case 140:
{
parser.yyVAL.item = &ast.AlterTableSpec{
Tp: ast.AlterTableCache,
}
}
case 141:
{
parser.yyVAL.item = &ast.AlterTableSpec{
Tp: ast.AlterTableNoCache,
}
}
case 142:
{
ret := &ast.AlterTableSpec{
Tp: ast.AlterTableReorganizePartition,
OnAllPartitions: true,
}
parser.yyVAL.item = ret
}
case 143:
{
ret := &ast.AlterTableSpec{
Tp: ast.AlterTableReorganizePartition,
PartitionNames: yyS[yypt-4].item.([]ast.CIStr),
PartDefinitions: yyS[yypt-1].item.([]*ast.PartitionDefinition),
}
parser.yyVAL.item = ret
}
case 144:
{
parser.yyVAL.item = nil
}
case 146:
{
parser.yyVAL.item = true
}
case 148:
{
parser.yyVAL.item = true
}
case 149:
{
parser.yyVAL.item = false
}
case 150:
{
parser.yyVAL.item = ast.PrimaryKeyTypeClustered
}
case 151:
{
parser.yyVAL.item = ast.PrimaryKeyTypeNonClustered
}
case 152:
{
parser.yyVAL.ident = ""
}
case 153:
{
parser.yyVAL.ident = ""
}
case 154:
{
parser.yyVAL.ident = "Global"
}
case 155:
{
parser.yyVAL.item = ast.AlgorithmTypeDefault
}
case 156:
{
parser.yyVAL.item = ast.AlgorithmTypeCopy
}
case 157:
{
parser.yyVAL.item = ast.AlgorithmTypeInplace
}
case 158:
{
parser.yyVAL.item = ast.AlgorithmTypeInstant
}
case 159:
{
yylex.AppendError(ErrUnknownAlterAlgorithm.GenWithStackByArgs(yyS[yypt-2].ident))
return 1
}
case 160:
{
parser.yyVAL.item = ast.LockTypeDefault
}
case 161:
{
id := strings.ToUpper(yyS[yypt-0].ident)
if id == "NONE" {
parser.yyVAL.item = ast.LockTypeNone
} else if id == "SHARED" {
parser.yyVAL.item = ast.LockTypeShared
} else if id == "EXCLUSIVE" {
parser.yyVAL.item = ast.LockTypeExclusive
} else {
yylex.AppendError(ErrUnknownAlterLock.GenWithStackByArgs(yyS[yypt-0].ident))
return 1
}
}
case 162:
{
parser.yyVAL.item = true
}
case 163:
{
parser.yyVAL.item = false
}
case 170:
{
parser.yyVAL.item = &ast.ColumnPosition{Tp: ast.ColumnPositionNone}
}
case 171:
{
parser.yyVAL.item = &ast.ColumnPosition{Tp: ast.ColumnPositionFirst}
}
case 172:
{
parser.yyVAL.item = &ast.ColumnPosition{
Tp: ast.ColumnPositionAfter,
RelativeColumn: yyS[yypt-0].item.(*ast.ColumnName),
}
}
case 173:
{
parser.yyVAL.item = make([]*ast.AlterTableSpec, 0, 1)
}
case 175:
{
parser.yyVAL.item = []*ast.AlterTableSpec{yyS[yypt-0].item.(*ast.AlterTableSpec)}
}
case 176:
{
parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.AlterTableSpec), yyS[yypt-0].item.(*ast.AlterTableSpec))
}
case 177:
{
parser.yyVAL.item = []ast.CIStr{ast.NewCIStr(yyS[yypt-0].ident)}
}
case 178:
{
parser.yyVAL.item = append(yyS[yypt-2].item.([]ast.CIStr), ast.NewCIStr(yyS[yypt-0].ident))
}
case 179:
{
parser.yyVAL.item = nil
}
case 180:
{
parser.yyVAL.item = nil
}
case 181:
{
parser.yyVAL.item = yyS[yypt-0].ident
}
case 183:
{
parser.yyVAL.statement = &ast.RenameTableStmt{
TableToTables: yyS[yypt-0].item.([]*ast.TableToTable),
}
}
case 184:
{
parser.yyVAL.item = []*ast.TableToTable{yyS[yypt-0].item.(*ast.TableToTable)}
}
case 185:
{
parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.TableToTable), yyS[yypt-0].item.(*ast.TableToTable))
}
case 186:
{
parser.yyVAL.item = &ast.TableToTable{
OldTable: yyS[yypt-2].item.(*ast.TableName),
NewTable: yyS[yypt-0].item.(*ast.TableName),
}
}
case 187:
{
parser.yyVAL.statement = &ast.RenameUserStmt{
UserToUsers: yyS[yypt-0].item.([]*ast.UserToUser),
}
}
case 188:
{
parser.yyVAL.item = []*ast.UserToUser{yyS[yypt-0].item.(*ast.UserToUser)}
}
case 189:
{
parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.UserToUser), yyS[yypt-0].item.(*ast.UserToUser))
}
case 190:
{
parser.yyVAL.item = &ast.UserToUser{
OldUser: yyS[yypt-2].item.(*auth.UserIdentity),
NewUser: yyS[yypt-0].item.(*auth.UserIdentity),
}
}
case 191:
{
parser.yyVAL.statement = &ast.RecoverTableStmt{
JobID: yyS[yypt-0].item.(int64),
}
}
case 192:
{
parser.yyVAL.statement = &ast.RecoverTableStmt{
Table: yyS[yypt-0].item.(*ast.TableName),
}
}
case 193:
{
parser.yyVAL.statement = &ast.RecoverTableStmt{
Table: yyS[yypt-1].item.(*ast.TableName),
JobNum: yyS[yypt-0].item.(int64),
}
}
case 194:
{
parser.yyVAL.statement = &ast.FlashBackToTimestampStmt{
FlashbackTS: ast.NewValueExpr(yyS[yypt-0].ident, "", ""),
FlashbackTSO: 0,
}
}
case 195:
{
parser.yyVAL.statement = &ast.FlashBackToTimestampStmt{
Tables: yyS[yypt-2].item.([]*ast.TableName),
FlashbackTS: ast.NewValueExpr(yyS[yypt-0].ident, "", ""),
FlashbackTSO: 0,
}
}
case 196:
{
parser.yyVAL.statement = &ast.FlashBackToTimestampStmt{
DBName: ast.NewCIStr(yyS[yypt-2].ident),
FlashbackTS: ast.NewValueExpr(yyS[yypt-0].ident, "", ""),
FlashbackTSO: 0,
}
}
case 197:
{
if tsoValue, ok := yyS[yypt-0].item.(uint64); ok && tsoValue > 0 {
parser.yyVAL.statement = &ast.FlashBackToTimestampStmt{
FlashbackTSO: tsoValue,
}
} else {
yylex.AppendError(yylex.Errorf("Invalid TSO value provided: %d", yyS[yypt-0].item))
return 1
}
}
case 198:
{
if tsoValue, ok := yyS[yypt-0].item.(uint64); ok && tsoValue > 0 {
parser.yyVAL.statement = &ast.FlashBackToTimestampStmt{
Tables: yyS[yypt-2].item.([]*ast.TableName),
FlashbackTSO: tsoValue,
}
} else {
yylex.AppendError(yylex.Errorf("Invalid TSO value provided: %d", yyS[yypt-0].item))
return 1
}
}
case 199:
{
if tsoValue, ok := yyS[yypt-0].item.(uint64); ok && tsoValue > 0 {
parser.yyVAL.statement = &ast.FlashBackToTimestampStmt{
DBName: ast.NewCIStr(yyS[yypt-2].ident),
FlashbackTSO: tsoValue,
}
} else {
yylex.AppendError(yylex.Errorf("Invalid TSO value provided: %d", yyS[yypt-0].item))
return 1
}
}
case 200:
{
parser.yyVAL.statement = &ast.FlashBackTableStmt{
Table: yyS[yypt-1].item.(*ast.TableName),
NewName: yyS[yypt-0].ident,
}
}
case 201:
{
parser.yyVAL.ident = ""
}
case 202:
{
parser.yyVAL.ident = yyS[yypt-0].ident
}
case 203:
{
parser.yyVAL.statement = &ast.FlashBackDatabaseStmt{
DBName: ast.NewCIStr(yyS[yypt-1].ident),
NewName: yyS[yypt-0].ident,
}
}
case 204:
{
parser.yyVAL.statement = &ast.DistributeTableStmt{
Table: yyS[yypt-7].item.(*ast.TableName),
PartitionNames: yyS[yypt-6].item.([]ast.CIStr),
Rule: yyS[yypt-3].ident,
Engine: yyS[yypt-0].ident,
}
}
case 205:
{
parser.yyVAL.statement = &ast.DistributeTableStmt{
Table: yyS[yypt-10].item.(*ast.TableName),
PartitionNames: yyS[yypt-9].item.([]ast.CIStr),
Rule: yyS[yypt-6].ident,
Engine: yyS[yypt-3].ident,
Timeout: yyS[yypt-0].ident,
}
}
case 206:
{
parser.yyVAL.statement = &ast.CancelDistributionJobStmt{
JobID: yyS[yypt-0].item.(int64),
}
}
case 207:
{
parser.yyVAL.statement = &ast.SplitRegionStmt{
SplitSyntaxOpt: yyS[yypt-4].item.(*ast.SplitSyntaxOption),
Table: yyS[yypt-2].item.(*ast.TableName),
PartitionNames: yyS[yypt-1].item.([]ast.CIStr),
SplitOpt: yyS[yypt-0].item.(*ast.SplitOption),
}
}
case 208:
{
parser.yyVAL.statement = &ast.SplitRegionStmt{
SplitSyntaxOpt: yyS[yypt-6].item.(*ast.SplitSyntaxOption),
Table: yyS[yypt-4].item.(*ast.TableName),
PartitionNames: yyS[yypt-3].item.([]ast.CIStr),
IndexName: ast.NewCIStr(yyS[yypt-1].ident),
SplitOpt: yyS[yypt-0].item.(*ast.SplitOption),
}
}
case 209:
{
parser.yyVAL.item = &ast.SplitOption{
Lower: yyS[yypt-4].item.([]ast.ExprNode),
Upper: yyS[yypt-2].item.([]ast.ExprNode),
Num: yyS[yypt-0].item.(int64),
}
}
case 210:
{
parser.yyVAL.item = &ast.SplitOption{
ValueLists: yyS[yypt-0].item.([][]ast.ExprNode),
}
}
case 211:
{
parser.yyVAL.item = &ast.SplitSyntaxOption{}
}
case 212:
{
parser.yyVAL.item = &ast.SplitSyntaxOption{
HasRegionFor: true,
}
}
case 213:
{
parser.yyVAL.item = &ast.SplitSyntaxOption{
HasPartition: true,
}
}
case 214:
{
parser.yyVAL.item = &ast.SplitSyntaxOption{
HasRegionFor: true,
HasPartition: true,
}
}
case 215:
{
parser.yyVAL.statement = &ast.AnalyzeTableStmt{TableNames: yyS[yypt-2].item.([]*ast.TableName), NoWriteToBinLog: yyS[yypt-4].item.(bool), ColumnChoice: yyS[yypt-1].item.(ast.ColumnChoice), AnalyzeOpts: yyS[yypt-0].item.([]ast.AnalyzeOpt)}
}
case 216:
{
parser.yyVAL.statement = &ast.AnalyzeTableStmt{TableNames: []*ast.TableName{yyS[yypt-3].item.(*ast.TableName)}, NoWriteToBinLog: yyS[yypt-5].item.(bool), IndexNames: yyS[yypt-1].item.([]ast.CIStr), IndexFlag: true, AnalyzeOpts: yyS[yypt-0].item.([]ast.AnalyzeOpt)}
}
case 217:
{
parser.yyVAL.statement = &ast.AnalyzeTableStmt{TableNames: []*ast.TableName{yyS[yypt-3].item.(*ast.TableName)}, NoWriteToBinLog: yyS[yypt-6].item.(bool), IndexNames: yyS[yypt-1].item.([]ast.CIStr), IndexFlag: true, Incremental: true, AnalyzeOpts: yyS[yypt-0].item.([]ast.AnalyzeOpt)}
}
case 218:
{
parser.yyVAL.statement = &ast.AnalyzeTableStmt{TableNames: []*ast.TableName{yyS[yypt-4].item.(*ast.TableName)}, NoWriteToBinLog: yyS[yypt-6].item.(bool), PartitionNames: yyS[yypt-2].item.([]ast.CIStr), ColumnChoice: yyS[yypt-1].item.(ast.ColumnChoice), AnalyzeOpts: yyS[yypt-0].item.([]ast.AnalyzeOpt)}
}
case 219:
{
parser.yyVAL.statement = &ast.AnalyzeTableStmt{
TableNames: []*ast.TableName{yyS[yypt-5].item.(*ast.TableName)},
NoWriteToBinLog: yyS[yypt-7].item.(bool),
PartitionNames: yyS[yypt-3].item.([]ast.CIStr),
IndexNames: yyS[yypt-1].item.([]ast.CIStr),
IndexFlag: true,
AnalyzeOpts: yyS[yypt-0].item.([]ast.AnalyzeOpt),
}
}
case 220:
{
parser.yyVAL.statement = &ast.AnalyzeTableStmt{
TableNames: []*ast.TableName{yyS[yypt-5].item.(*ast.TableName)},
NoWriteToBinLog: yyS[yypt-8].item.(bool),
PartitionNames: yyS[yypt-3].item.([]ast.CIStr),
IndexNames: yyS[yypt-1].item.([]ast.CIStr),
IndexFlag: true,
Incremental: true,
AnalyzeOpts: yyS[yypt-0].item.([]ast.AnalyzeOpt),
}
}
case 221:
{
parser.yyVAL.statement = &ast.AnalyzeTableStmt{
TableNames: []*ast.TableName{yyS[yypt-5].item.(*ast.TableName)},
NoWriteToBinLog: yyS[yypt-7].item.(bool),
ColumnNames: yyS[yypt-1].item.([]ast.CIStr),
AnalyzeOpts: yyS[yypt-0].item.([]ast.AnalyzeOpt),
HistogramOperation: ast.HistogramOperationUpdate,
}
}
case 222:
{
parser.yyVAL.statement = &ast.AnalyzeTableStmt{
TableNames: []*ast.TableName{yyS[yypt-4].item.(*ast.TableName)},
NoWriteToBinLog: yyS[yypt-6].item.(bool),
ColumnNames: yyS[yypt-0].item.([]ast.CIStr),
HistogramOperation: ast.HistogramOperationDrop,
}
}
case 223:
{
parser.yyVAL.statement = &ast.AnalyzeTableStmt{
TableNames: []*ast.TableName{yyS[yypt-3].item.(*ast.TableName)},
NoWriteToBinLog: yyS[yypt-5].item.(bool),
ColumnNames: yyS[yypt-1].item.([]ast.CIStr),
ColumnChoice: ast.ColumnList,
AnalyzeOpts: yyS[yypt-0].item.([]ast.AnalyzeOpt)}
}
case 224:
{
parser.yyVAL.statement = &ast.AnalyzeTableStmt{
TableNames: []*ast.TableName{yyS[yypt-5].item.(*ast.TableName)},
NoWriteToBinLog: yyS[yypt-7].item.(bool),
PartitionNames: yyS[yypt-3].item.([]ast.CIStr),
ColumnNames: yyS[yypt-1].item.([]ast.CIStr),
ColumnChoice: ast.ColumnList,
AnalyzeOpts: yyS[yypt-0].item.([]ast.AnalyzeOpt)}
}
case 225:
{
parser.yyVAL.item = ast.DefaultChoice
}
case 226:
{
parser.yyVAL.item = ast.AllColumns
}
case 227:
{
parser.yyVAL.item = ast.PredicateColumns
}
case 228:
{
parser.yyVAL.item = []ast.AnalyzeOpt{}
}
case 229:
{
parser.yyVAL.item = yyS[yypt-0].item.([]ast.AnalyzeOpt)
}
case 230:
{
parser.yyVAL.item = []ast.AnalyzeOpt{yyS[yypt-0].item.(ast.AnalyzeOpt)}
}
case 231:
{
parser.yyVAL.item = append(yyS[yypt-2].item.([]ast.AnalyzeOpt), yyS[yypt-0].item.(ast.AnalyzeOpt))
}
case 232:
{
parser.yyVAL.item = ast.AnalyzeOpt{Type: ast.AnalyzeOptNumBuckets, Value: ast.NewValueExpr(yyS[yypt-1].item, "", "")}
}
case 233:
{
parser.yyVAL.item = ast.AnalyzeOpt{Type: ast.AnalyzeOptNumTopN, Value: ast.NewValueExpr(yyS[yypt-1].item, "", "")}
}
case 234:
{
parser.yyVAL.item = ast.AnalyzeOpt{Type: ast.AnalyzeOptCMSketchDepth, Value: ast.NewValueExpr(yyS[yypt-2].item, "", "")}
}
case 235:
{
parser.yyVAL.item = ast.AnalyzeOpt{Type: ast.AnalyzeOptCMSketchWidth, Value: ast.NewValueExpr(yyS[yypt-2].item, "", "")}
}
case 236:
{
parser.yyVAL.item = ast.AnalyzeOpt{Type: ast.AnalyzeOptNumSamples, Value: ast.NewValueExpr(yyS[yypt-1].item, "", "")}
}
case 237:
{
parser.yyVAL.item = ast.AnalyzeOpt{Type: ast.AnalyzeOptSampleRate, Value: ast.NewValueExpr(yyS[yypt-1].item, "", "")}
}
case 238:
{
parser.yyVAL.item = &ast.Assignment{Column: yyS[yypt-2].item.(*ast.ColumnName), Expr: yyS[yypt-0].expr}
}
case 239:
{
parser.yyVAL.item = []*ast.Assignment{yyS[yypt-0].item.(*ast.Assignment)}
}
case 240:
{
parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.Assignment), yyS[yypt-0].item.(*ast.Assignment))
}
case 241:
{
parser.yyVAL.statement = &ast.BeginStmt{}
}
case 242:
{
parser.yyVAL.statement = &ast.BeginStmt{
Mode: ast.Pessimistic,
}
}
case 243:
{
parser.yyVAL.statement = &ast.BeginStmt{
Mode: ast.Optimistic,
}
}
case 244:
{
parser.yyVAL.statement = &ast.BeginStmt{}
}
case 245:
{
parser.yyVAL.statement = &ast.BeginStmt{}
}
case 246:
{
parser.yyVAL.statement = &ast.BeginStmt{}
}
case 247:
{
parser.yyVAL.statement = &ast.BeginStmt{
CausalConsistencyOnly: true,
}
}
case 248:
{
parser.yyVAL.statement = &ast.BeginStmt{
ReadOnly: true,
}
}
case 249:
{
parser.yyVAL.statement = &ast.BeginStmt{
ReadOnly: true,
AsOf: yyS[yypt-0].item.(*ast.AsOfClause),
}
}
case 250:
{
parser.yyVAL.statement = &ast.BinlogStmt{Str: yyS[yypt-0].ident}
}
case 251:
{
colDef := &ast.ColumnDef{Name: yyS[yypt-2].item.(*ast.ColumnName), Tp: yyS[yypt-1].item.(*types.FieldType), Options: yyS[yypt-0].item.(ast.ColumnOptionList).Options}
if err := colDef.Validate(); err != nil {
yylex.AppendError(err)
return 1
}
parser.yyVAL.item = colDef
}
case 252:
{
// TODO: check flen 0
tp := types.NewFieldType(mysql.TypeLonglong)
options := []*ast.ColumnOption{{Tp: ast.ColumnOptionNotNull}, {Tp: ast.ColumnOptionAutoIncrement}, {Tp: ast.ColumnOptionUniqKey}}
options = append(options, yyS[yypt-0].item.(ast.ColumnOptionList).Options...)
tp.AddFlag(mysql.UnsignedFlag)
colDef := &ast.ColumnDef{Name: yyS[yypt-2].item.(*ast.ColumnName), Tp: tp, Options: options}
if err := colDef.Validate(); err != nil {
yylex.AppendError(err)
return 1
}
parser.yyVAL.item = colDef
}
case 253:
{
parser.yyVAL.item = &ast.ColumnName{Name: ast.NewCIStr(yyS[yypt-0].ident)}
}
case 254:
{
parser.yyVAL.item = &ast.ColumnName{Table: ast.NewCIStr(yyS[yypt-2].ident), Name: ast.NewCIStr(yyS[yypt-0].ident)}
}
case 255:
{
parser.yyVAL.item = &ast.ColumnName{Schema: ast.NewCIStr(yyS[yypt-4].ident), Table: ast.NewCIStr(yyS[yypt-2].ident), Name: ast.NewCIStr(yyS[yypt-0].ident)}
}
case 256:
{
parser.yyVAL.item = []*ast.ColumnName{yyS[yypt-0].item.(*ast.ColumnName)}
}
case 257:
{
parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.ColumnName), yyS[yypt-0].item.(*ast.ColumnName))
}
case 258:
{
parser.yyVAL.item = []*ast.ColumnName{}
}
case 260:
{
parser.yyVAL.item = []ast.CIStr{}
}
case 261:
{
parser.yyVAL.item = yyS[yypt-1].item
}
case 262:
{
parser.yyVAL.item = []ast.CIStr{ast.NewCIStr(yyS[yypt-0].ident)}
}
case 263:
{
parser.yyVAL.item = append(yyS[yypt-2].item.([]ast.CIStr), ast.NewCIStr(yyS[yypt-0].ident))
}
case 264:
{
parser.yyVAL.item = []*ast.ColumnNameOrUserVar{}
}
case 266:
{
parser.yyVAL.item = []*ast.ColumnNameOrUserVar{yyS[yypt-0].item.(*ast.ColumnNameOrUserVar)}
}
case 267:
{
parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.ColumnNameOrUserVar), yyS[yypt-0].item.(*ast.ColumnNameOrUserVar))
}
case 268:
{
parser.yyVAL.item = &ast.ColumnNameOrUserVar{ColumnName: yyS[yypt-0].item.(*ast.ColumnName)}
}
case 269:
{
parser.yyVAL.item = &ast.ColumnNameOrUserVar{UserVar: yyS[yypt-0].expr.(*ast.VariableExpr)}
}
case 270:
{
parser.yyVAL.item = []*ast.ColumnNameOrUserVar{}
}
case 271:
{
parser.yyVAL.item = yyS[yypt-1].item.([]*ast.ColumnNameOrUserVar)
}
case 272:
{
parser.yyVAL.statement = &ast.CommitStmt{}
}
case 273:
{
parser.yyVAL.statement = &ast.CommitStmt{CompletionType: yyS[yypt-0].item.(ast.CompletionType)}
}
case 277:
{
parser.yyVAL.ident = "NOT"
}
case 278:
{
parser.yyVAL.item = true
}
case 279:
{
parser.yyVAL.item = false
}
case 280:
{
parser.yyVAL.item = true
}
case 282:
{
parser.yyVAL.item = 0
}
case 283:
{
if yyS[yypt-0].item.(bool) {
parser.yyVAL.item = 1
} else {
parser.yyVAL.item = 2
}
}
case 284:
{
parser.yyVAL.item = &ast.ColumnOption{Tp: ast.ColumnOptionNotNull}
}
case 285:
{
parser.yyVAL.item = &ast.ColumnOption{Tp: ast.ColumnOptionNull}
}
case 286:
{
parser.yyVAL.item = &ast.ColumnOption{Tp: ast.ColumnOptionAutoIncrement}
}
case 287:
{
// KEY is normally a synonym for INDEX. The key attribute PRIMARY KEY
// can also be specified as just KEY when given in a column definition.
// See http://dev.mysql.com/doc/refman/5.7/en/create-table.html
parser.yyVAL.item = &ast.ColumnOption{Tp: ast.ColumnOptionPrimaryKey, StrValue: yyS[yypt-0].ident}
}
case 288:
{
// KEY is normally a synonym for INDEX. The key attribute PRIMARY KEY
// can also be specified as just KEY when given in a column definition.
// See http://dev.mysql.com/doc/refman/5.7/en/create-table.html
parser.yyVAL.item = &ast.ColumnOption{Tp: ast.ColumnOptionPrimaryKey, PrimaryKeyTp: yyS[yypt-1].item.(ast.PrimaryKeyType), StrValue: yyS[yypt-0].ident}
}
case 289:
{
parser.yyVAL.item = &ast.ColumnOption{Tp: ast.ColumnOptionUniqKey, StrValue: "Global"}
}
case 290:
{
parser.yyVAL.item = &ast.ColumnOption{Tp: ast.ColumnOptionUniqKey}
}
case 291:
{
parser.yyVAL.item = &ast.ColumnOption{Tp: ast.ColumnOptionUniqKey}
}
case 292:
{
parser.yyVAL.item = &ast.ColumnOption{Tp: ast.ColumnOptionUniqKey, StrValue: yyS[yypt-0].ident}
}
case 293:
{
parser.yyVAL.item = &ast.ColumnOption{Tp: ast.ColumnOptionDefaultValue, Expr: yyS[yypt-0].expr}
}
case 294:
{
parser.yyVAL.item = ast.ColumnOptionList{
Options: []*ast.ColumnOption{{Tp: ast.ColumnOptionNotNull}, {Tp: ast.ColumnOptionAutoIncrement}, {Tp: ast.ColumnOptionUniqKey}},
}
}
case 295:
{
parser.yyVAL.item = &ast.ColumnOption{Tp: ast.ColumnOptionOnUpdate, Expr: yyS[yypt-0].expr}
}
case 296:
{
parser.yyVAL.item = &ast.ColumnOption{Tp: ast.ColumnOptionComment, Expr: ast.NewValueExpr(yyS[yypt-0].ident, "", "")}
}
case 297:
{
// See https://dev.mysql.com/doc/refman/5.7/en/create-table.html
// The CHECK clause is parsed but ignored by all storage engines.
// See the branch named `EnforcedOrNotOrNotNullOpt`.
optionCheck := &ast.ColumnOption{
Tp: ast.ColumnOptionCheck,
Expr: yyS[yypt-2].expr,
Enforced: true,
}
// Keep the column type check constraint name.
if yyS[yypt-5].item != nil {
optionCheck.ConstraintName = yyS[yypt-5].item.(string)
}
switch yyS[yypt-0].item.(int) {
case 0:
parser.yyVAL.item = ast.ColumnOptionList{
Options: []*ast.ColumnOption{optionCheck, {Tp: ast.ColumnOptionNotNull}},
}
case 1:
optionCheck.Enforced = true
parser.yyVAL.item = optionCheck
case 2:
optionCheck.Enforced = false
parser.yyVAL.item = optionCheck
default:
}
}
case 298:
{
startOffset := parser.startOffset(&yyS[yypt-2])
endOffset := parser.endOffset(&yyS[yypt-1])
expr := yyS[yypt-2].expr
expr.SetText(parser.lexer.client, parser.src[startOffset:endOffset])
parser.yyVAL.item = &ast.ColumnOption{
Tp: ast.ColumnOptionGenerated,
Expr: expr,
Stored: yyS[yypt-0].item.(bool),
}
}
case 299:
{
parser.yyVAL.item = &ast.ColumnOption{
Tp: ast.ColumnOptionReference,
Refer: yyS[yypt-0].item.(*ast.ReferenceDef),
}
}
case 300:
{
parser.yyVAL.item = &ast.ColumnOption{Tp: ast.ColumnOptionCollate, StrValue: yyS[yypt-0].ident}
}
case 301:
{
parser.yyVAL.item = &ast.ColumnOption{Tp: ast.ColumnOptionColumnFormat, StrValue: yyS[yypt-0].ident}
}
case 302:
{
parser.yyVAL.item = &ast.ColumnOption{Tp: ast.ColumnOptionStorage, StrValue: yyS[yypt-0].ident}
yylex.AppendError(yylex.Errorf("The STORAGE clause is parsed but ignored by all storage engines."))
parser.lastErrorAsWarn()
}
case 303:
{
parser.yyVAL.item = &ast.ColumnOption{Tp: ast.ColumnOptionAutoRandom, AutoRandOpt: yyS[yypt-0].item.(ast.AutoRandomOption)}
}
case 304:
{
parser.yyVAL.item = &ast.ColumnOption{
Tp: ast.ColumnOptionSecondaryEngineAttribute,
StrValue: yyS[yypt-0].ident,
}
}
case 305:
{
parser.yyVAL.item = ast.AutoRandomOption{ShardBits: types.UnspecifiedLength, RangeBits: types.UnspecifiedLength}
}
case 306:
{
parser.yyVAL.item = ast.AutoRandomOption{ShardBits: int(yyS[yypt-1].item.(uint64)), RangeBits: types.UnspecifiedLength}
}
case 307:
{
parser.yyVAL.item = ast.AutoRandomOption{ShardBits: int(yyS[yypt-3].item.(uint64)), RangeBits: int(yyS[yypt-1].item.(uint64))}
}
case 311:
{
parser.yyVAL.ident = "DEFAULT"
}
case 312:
{
parser.yyVAL.ident = "FIXED"
}
case 313:
{
parser.yyVAL.ident = "DYNAMIC"
}
case 316:
{
parser.yyVAL.item = false
}
case 317:
{
parser.yyVAL.item = false
}
case 318:
{
parser.yyVAL.item = true
}
case 319:
{
if columnOption, ok := yyS[yypt-0].item.(*ast.ColumnOption); ok {
hasCollateOption := false
if columnOption.Tp == ast.ColumnOptionCollate {
hasCollateOption = true
}
parser.yyVAL.item = ast.ColumnOptionList{
HasCollateOption: hasCollateOption,
Options: []*ast.ColumnOption{columnOption},
}
} else {
parser.yyVAL.item = yyS[yypt-0].item
}
}
case 320:
{
columnOptionList := yyS[yypt-1].item.(ast.ColumnOptionList)
if columnOption, ok := yyS[yypt-0].item.(*ast.ColumnOption); ok {
if columnOption.Tp == ast.ColumnOptionCollate && columnOptionList.HasCollateOption {
yylex.AppendError(ErrParse.GenWithStackByArgs("Multiple COLLATE clauses", yylex.Errorf("").Error()))
return 1
}
columnOptionList.Options = append(columnOptionList.Options, columnOption)
} else {
if columnOptionList.HasCollateOption && yyS[yypt-0].item.(ast.ColumnOptionList).HasCollateOption {
yylex.AppendError(ErrParse.GenWithStackByArgs("Multiple COLLATE clauses", yylex.Errorf("").Error()))
return 1
}
columnOptionList.Options = append(columnOptionList.Options, yyS[yypt-0].item.(ast.ColumnOptionList).Options...)
}
parser.yyVAL.item = columnOptionList
}
case 321:
{
parser.yyVAL.item = ast.ColumnOptionList{}
}
case 323:
{
c := &ast.Constraint{
Tp: ast.ConstraintPrimaryKey,
Keys: yyS[yypt-2].item.([]*ast.IndexPartSpecification),
Name: yyS[yypt-4].item.([]interface{})[0].(*ast.NullString).String,
IsEmptyIndex: yyS[yypt-4].item.([]interface{})[0].(*ast.NullString).Empty,
}
if yyS[yypt-0].item != nil {
c.Option = yyS[yypt-0].item.(*ast.IndexOption)
}
if indexType := yyS[yypt-4].item.([]interface{})[1]; indexType != nil {
if c.Option == nil {
c.Option = &ast.IndexOption{}
}
c.Option.Tp = indexType.(ast.IndexType)
}
parser.yyVAL.item = c
}
case 324:
{
c := &ast.Constraint{
Tp: ast.ConstraintFulltext,
Keys: yyS[yypt-2].item.([]*ast.IndexPartSpecification),
Name: yyS[yypt-4].item.(*ast.NullString).String,
IsEmptyIndex: yyS[yypt-4].item.(*ast.NullString).Empty,
}
if yyS[yypt-0].item != nil {
c.Option = yyS[yypt-0].item.(*ast.IndexOption)
} else {
c.Option = &ast.IndexOption{}
}
parser.yyVAL.item = c
}
case 325:
{
c := &ast.Constraint{
IfNotExists: yyS[yypt-5].item.(bool),
Tp: ast.ConstraintIndex,
Keys: yyS[yypt-2].item.([]*ast.IndexPartSpecification),
Name: yyS[yypt-4].item.([]interface{})[0].(*ast.NullString).String,
IsEmptyIndex: yyS[yypt-4].item.([]interface{})[0].(*ast.NullString).Empty,
}
if yyS[yypt-0].item != nil {
c.Option = yyS[yypt-0].item.(*ast.IndexOption)
}
if indexType := yyS[yypt-4].item.([]interface{})[1]; indexType != nil {
if c.Option == nil {
c.Option = &ast.IndexOption{}
}
c.Option.Tp = indexType.(ast.IndexType)
}
parser.yyVAL.item = c
}
case 326:
{
c := &ast.Constraint{
Tp: ast.ConstraintUniq,
Keys: yyS[yypt-2].item.([]*ast.IndexPartSpecification),
Name: yyS[yypt-4].item.([]interface{})[0].(*ast.NullString).String,
IsEmptyIndex: yyS[yypt-4].item.([]interface{})[0].(*ast.NullString).Empty,
}
if yyS[yypt-0].item != nil {
c.Option = yyS[yypt-0].item.(*ast.IndexOption)
}
if indexType := yyS[yypt-4].item.([]interface{})[1]; indexType != nil {
if c.Option == nil {
c.Option = &ast.IndexOption{}
}
c.Option.Tp = indexType.(ast.IndexType)
}
parser.yyVAL.item = c
}
case 327:
{
parser.yyVAL.item = &ast.Constraint{
IfNotExists: yyS[yypt-5].item.(bool),
Tp: ast.ConstraintForeignKey,
Keys: yyS[yypt-2].item.([]*ast.IndexPartSpecification),
Name: yyS[yypt-4].item.(*ast.NullString).String,
Refer: yyS[yypt-0].item.(*ast.ReferenceDef),
IsEmptyIndex: yyS[yypt-4].item.(*ast.NullString).Empty,
}
}
case 328:
{
parser.yyVAL.item = &ast.Constraint{
Tp: ast.ConstraintCheck,
Expr: yyS[yypt-2].expr.(ast.ExprNode),
Enforced: yyS[yypt-0].item.(bool),
}
}
case 329:
{
parser.yyVAL.item = ast.MatchFull
}
case 330:
{
parser.yyVAL.item = ast.MatchPartial
}
case 331:
{
parser.yyVAL.item = ast.MatchSimple
}
case 332:
{
parser.yyVAL.item = ast.MatchNone
}
case 333:
{
parser.yyVAL.item = yyS[yypt-0].item
yylex.AppendError(yylex.Errorf("The MATCH clause is parsed but ignored by all storage engines."))
parser.lastErrorAsWarn()
}
case 334:
{
onDeleteUpdate := yyS[yypt-0].item.([2]interface{})
parser.yyVAL.item = &ast.ReferenceDef{
Table: yyS[yypt-3].item.(*ast.TableName),
IndexPartSpecifications: yyS[yypt-2].item.([]*ast.IndexPartSpecification),
OnDelete: onDeleteUpdate[0].(*ast.OnDeleteOpt),
OnUpdate: onDeleteUpdate[1].(*ast.OnUpdateOpt),
Match: yyS[yypt-1].item.(ast.MatchType),
}
}
case 335:
{
parser.yyVAL.item = &ast.OnDeleteOpt{ReferOpt: yyS[yypt-0].item.(ast.ReferOptionType)}
}
case 336:
{
parser.yyVAL.item = &ast.OnUpdateOpt{ReferOpt: yyS[yypt-0].item.(ast.ReferOptionType)}
}
case 337:
{
parser.yyVAL.item = [2]interface{}{&ast.OnDeleteOpt{}, &ast.OnUpdateOpt{}}
}
case 338:
{
parser.yyVAL.item = [2]interface{}{yyS[yypt-0].item, &ast.OnUpdateOpt{}}
}
case 339:
{
parser.yyVAL.item = [2]interface{}{&ast.OnDeleteOpt{}, yyS[yypt-0].item}
}
case 340:
{
parser.yyVAL.item = [2]interface{}{yyS[yypt-1].item, yyS[yypt-0].item}
}
case 341:
{
parser.yyVAL.item = [2]interface{}{yyS[yypt-0].item, yyS[yypt-1].item}
}
case 342:
{
parser.yyVAL.item = ast.ReferOptionRestrict
}
case 343:
{
parser.yyVAL.item = ast.ReferOptionCascade
}
case 344:
{
parser.yyVAL.item = ast.ReferOptionSetNull
}
case 345:
{
parser.yyVAL.item = ast.ReferOptionNoAction
}
case 346:
{
parser.yyVAL.item = ast.ReferOptionSetDefault
yylex.AppendError(yylex.Errorf("The SET DEFAULT clause is parsed but ignored by all storage engines."))
parser.lastErrorAsWarn()
}
case 351:
{
parser.yyVAL.expr = &ast.ColumnNameExpr{Name: &ast.ColumnName{
Name: ast.NewCIStr(yyS[yypt-1].ident),
}}
}
case 352:
{
parser.yyVAL.expr = yyS[yypt-1].expr
}
case 353:
{
parser.yyVAL.expr = yyS[yypt-1].expr.(*ast.FuncCallExpr)
}
case 354:
{
parser.yyVAL.expr = &ast.FuncCallExpr{
FnName: ast.NewCIStr(yyS[yypt-2].ident),
}
}
case 355:
{
parser.yyVAL.expr = &ast.FuncCallExpr{
FnName: ast.NewCIStr(yyS[yypt-3].ident),
Args: yyS[yypt-1].item.([]ast.ExprNode),
}
}
case 356:
{
parser.yyVAL.expr = &ast.FuncCallExpr{
FnName: ast.NewCIStr(yyS[yypt-3].ident),
Args: yyS[yypt-1].item.([]ast.ExprNode),
}
}
case 357:
{
parser.yyVAL.expr = yyS[yypt-1].expr.(*ast.FuncCallExpr)
}
case 359:
{
parser.yyVAL.expr = &ast.FuncCallExpr{FnName: ast.NewCIStr("CURRENT_TIMESTAMP")}
}
case 360:
{
parser.yyVAL.expr = &ast.FuncCallExpr{FnName: ast.NewCIStr("CURRENT_TIMESTAMP")}
}
case 361:
{
parser.yyVAL.expr = &ast.FuncCallExpr{FnName: ast.NewCIStr("CURRENT_TIMESTAMP"), Args: []ast.ExprNode{ast.NewValueExpr(yyS[yypt-1].item, parser.charset, parser.collation)}}
}
case 362:
{
parser.yyVAL.expr = &ast.FuncCallExpr{FnName: ast.NewCIStr("CURRENT_DATE")}
}
case 363:
{
parser.yyVAL.expr = &ast.FuncCallExpr{FnName: ast.NewCIStr("CURRENT_DATE")}
}
case 364:
{
parser.yyVAL.expr = yyS[yypt-1].expr.(*ast.FuncCallExpr)
}
case 366:
{
objNameExpr := &ast.TableNameExpr{
Name: yyS[yypt-0].item.(*ast.TableName),
}
parser.yyVAL.expr = &ast.FuncCallExpr{
FnName: ast.NewCIStr(ast.NextVal),
Args: []ast.ExprNode{objNameExpr},
}
}
case 367:
{
objNameExpr := &ast.TableNameExpr{
Name: yyS[yypt-1].item.(*ast.TableName),
}
parser.yyVAL.expr = &ast.FuncCallExpr{
FnName: ast.NewCIStr(ast.NextVal),
Args: []ast.ExprNode{objNameExpr},
}
}
case 377:
{
parser.yyVAL.expr = ast.NewValueExpr(yyS[yypt-0].expr, parser.charset, parser.collation)
}
case 378:
{
parser.yyVAL.expr = &ast.UnaryOperationExpr{Op: opcode.Plus, V: ast.NewValueExpr(yyS[yypt-0].item, parser.charset, parser.collation)}
}
case 379:
{
parser.yyVAL.expr = &ast.UnaryOperationExpr{Op: opcode.Minus, V: ast.NewValueExpr(yyS[yypt-0].item, parser.charset, parser.collation)}
}
case 383:
{
parser.yyVAL.item = ast.StatsTypeCardinality
}
case 384:
{
parser.yyVAL.item = ast.StatsTypeDependency
}
case 385:
{
parser.yyVAL.item = ast.StatsTypeCorrelation
}
case 386:
{
parser.yyVAL.item = ast.BindingStatusTypeEnabled
}
case 387:
{
parser.yyVAL.item = ast.BindingStatusTypeDisabled
}
case 388:
{
parser.yyVAL.statement = &ast.CreateStatisticsStmt{
IfNotExists: yyS[yypt-9].item.(bool),
StatsName: yyS[yypt-8].ident,
StatsType: yyS[yypt-6].item.(uint8),
Table: yyS[yypt-3].item.(*ast.TableName),
Columns: yyS[yypt-1].item.([]*ast.ColumnName),
}
}
case 389:
{
parser.yyVAL.statement = &ast.DropStatisticsStmt{StatsName: yyS[yypt-0].ident}
}
case 390:
{
var indexOption *ast.IndexOption
if yyS[yypt-1].item != nil {
indexOption = yyS[yypt-1].item.(*ast.IndexOption)
if indexOption.Tp == ast.IndexTypeInvalid {
if yyS[yypt-7].item != nil {
indexOption.Tp = yyS[yypt-7].item.(ast.IndexType)
}
}
} else {
indexOption = &ast.IndexOption{}
if yyS[yypt-7].item != nil {
indexOption.Tp = yyS[yypt-7].item.(ast.IndexType)
}
}
var indexLockAndAlgorithm *ast.IndexLockAndAlgorithm
if yyS[yypt-0].item != nil {
indexLockAndAlgorithm = yyS[yypt-0].item.(*ast.IndexLockAndAlgorithm)
if indexLockAndAlgorithm.LockTp == ast.LockTypeDefault && indexLockAndAlgorithm.AlgorithmTp == ast.AlgorithmTypeDefault {
indexLockAndAlgorithm = nil
}
}
parser.yyVAL.statement = &ast.CreateIndexStmt{
IfNotExists: yyS[yypt-9].item.(bool),
IndexName: yyS[yypt-8].ident,
Table: yyS[yypt-5].item.(*ast.TableName),
IndexPartSpecifications: yyS[yypt-3].item.([]*ast.IndexPartSpecification),
IndexOption: indexOption,
KeyType: yyS[yypt-11].item.(ast.IndexKeyType),
LockAlg: indexLockAndAlgorithm,
}
}
case 391:
{
parser.yyVAL.item = ([]*ast.IndexPartSpecification)(nil)
}
case 392:
{
parser.yyVAL.item = yyS[yypt-1].item
}
case 393:
{
parser.yyVAL.item = []*ast.IndexPartSpecification{yyS[yypt-0].item.(*ast.IndexPartSpecification)}
}
case 394:
{
parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.IndexPartSpecification), yyS[yypt-0].item.(*ast.IndexPartSpecification))
}
case 395:
{
parser.yyVAL.item = &ast.IndexPartSpecification{Column: yyS[yypt-2].item.(*ast.ColumnName), Length: yyS[yypt-1].item.(int), Desc: yyS[yypt-0].item.(bool)}
}
case 396:
{
parser.yyVAL.item = &ast.IndexPartSpecification{Expr: yyS[yypt-2].expr, Desc: yyS[yypt-0].item.(bool)}
}
case 397:
{
parser.yyVAL.item = nil
}
case 398:
{
parser.yyVAL.item = &ast.IndexLockAndAlgorithm{
LockTp: yyS[yypt-0].item.(ast.LockType),
AlgorithmTp: ast.AlgorithmTypeDefault,
}
}
case 399:
{
parser.yyVAL.item = &ast.IndexLockAndAlgorithm{
LockTp: ast.LockTypeDefault,
AlgorithmTp: yyS[yypt-0].item.(ast.AlgorithmType),
}
}
case 400:
{
parser.yyVAL.item = &ast.IndexLockAndAlgorithm{
LockTp: yyS[yypt-1].item.(ast.LockType),
AlgorithmTp: yyS[yypt-0].item.(ast.AlgorithmType),
}
}
case 401:
{
parser.yyVAL.item = &ast.IndexLockAndAlgorithm{
LockTp: yyS[yypt-0].item.(ast.LockType),
AlgorithmTp: yyS[yypt-1].item.(ast.AlgorithmType),
}
}
case 402:
{
parser.yyVAL.item = ast.IndexKeyTypeNone
}
case 403:
{
parser.yyVAL.item = ast.IndexKeyTypeUnique
}
case 404:
{
parser.yyVAL.item = ast.IndexKeyTypeSpatial
}
case 405:
{
parser.yyVAL.item = ast.IndexKeyTypeFulltext
}
case 406:
{
parser.yyVAL.item = ast.IndexKeyTypeVector
}
case 407:
{
parser.yyVAL.item = ast.IndexKeyTypeColumnar
}
case 408:
{
parser.yyVAL.statement = &ast.AlterDatabaseStmt{
Name: ast.NewCIStr(yyS[yypt-1].ident),
AlterDefaultDatabase: false,
Options: yyS[yypt-0].item.([]*ast.DatabaseOption),
}
}
case 409:
{
parser.yyVAL.statement = &ast.AlterDatabaseStmt{
Name: ast.NewCIStr(""),
AlterDefaultDatabase: true,
Options: yyS[yypt-0].item.([]*ast.DatabaseOption),
}
}
case 410:
{
parser.yyVAL.statement = &ast.CreateDatabaseStmt{
IfNotExists: yyS[yypt-2].item.(bool),
Name: ast.NewCIStr(yyS[yypt-1].ident),
Options: yyS[yypt-0].item.([]*ast.DatabaseOption),
}
}
case 415:
{
parser.yyVAL.item = &ast.DatabaseOption{Tp: ast.DatabaseOptionCharset, Value: yyS[yypt-0].ident}
}
case 416:
{
parser.yyVAL.item = &ast.DatabaseOption{Tp: ast.DatabaseOptionCollate, Value: yyS[yypt-0].ident}
}
case 417:
{
parser.yyVAL.item = &ast.DatabaseOption{Tp: ast.DatabaseOptionEncryption, Value: yyS[yypt-0].ident}
}
case 418:
{
placementOptions := yyS[yypt-0].item.(*ast.PlacementOption)
parser.yyVAL.item = &ast.DatabaseOption{
// offset trick, enums are identical but of different type
Tp: ast.DatabaseOptionType(placementOptions.Tp),
Value: placementOptions.StrValue,
UintValue: placementOptions.UintValue,
}
}
case 419:
{
placementOptions := yyS[yypt-0].item.(*ast.PlacementOption)
parser.yyVAL.item = &ast.DatabaseOption{
// offset trick, enums are identical but of different type
Tp: ast.DatabaseOptionType(placementOptions.Tp),
Value: placementOptions.StrValue,
UintValue: placementOptions.UintValue,
}
}
case 420:
{
tiflashReplicaSpec := &ast.TiFlashReplicaSpec{
Count: yyS[yypt-1].item.(uint64),
Labels: yyS[yypt-0].item.([]string),
}
parser.yyVAL.item = &ast.DatabaseOption{
Tp: ast.DatabaseSetTiFlashReplica,
TiFlashReplica: tiflashReplicaSpec,
}
}
case 421:
{
parser.yyVAL.item = []*ast.DatabaseOption{}
}
case 423:
{
parser.yyVAL.item = []*ast.DatabaseOption{yyS[yypt-0].item.(*ast.DatabaseOption)}
}
case 424:
{
parser.yyVAL.item = append(yyS[yypt-1].item.([]*ast.DatabaseOption), yyS[yypt-0].item.(*ast.DatabaseOption))
}
case 425:
{
stmt := yyS[yypt-6].item.(*ast.CreateTableStmt)
stmt.Table = yyS[yypt-7].item.(*ast.TableName)
stmt.IfNotExists = yyS[yypt-8].item.(bool)
stmt.TemporaryKeyword = yyS[yypt-10].item.(ast.TemporaryKeyword)
stmt.Options = yyS[yypt-5].item.([]*ast.TableOption)
if yyS[yypt-4].item != nil {
stmt.Partition = yyS[yypt-4].item.(*ast.PartitionOptions)
}
stmt.OnDuplicate = yyS[yypt-3].item.(ast.OnDuplicateKeyHandlingType)
stmt.Select = yyS[yypt-1].item.(*ast.CreateTableStmt).Select
if (yyS[yypt-0].item != nil && stmt.TemporaryKeyword != ast.TemporaryGlobal) || (stmt.TemporaryKeyword == ast.TemporaryGlobal && yyS[yypt-0].item == nil) {
yylex.AppendError(yylex.Errorf("GLOBAL TEMPORARY and ON COMMIT DELETE ROWS must appear together"))
} else {
if stmt.TemporaryKeyword == ast.TemporaryGlobal {
stmt.OnCommitDelete = yyS[yypt-0].item.(bool)
}
}
parser.yyVAL.statement = stmt
}
case 426:
{
tmp := &ast.CreateTableStmt{
Table: yyS[yypt-2].item.(*ast.TableName),
ReferTable: yyS[yypt-1].item.(*ast.TableName),
IfNotExists: yyS[yypt-3].item.(bool),
TemporaryKeyword: yyS[yypt-5].item.(ast.TemporaryKeyword),
}
if (yyS[yypt-0].item != nil && tmp.TemporaryKeyword != ast.TemporaryGlobal) || (tmp.TemporaryKeyword == ast.TemporaryGlobal && yyS[yypt-0].item == nil) {
yylex.AppendError(yylex.Errorf("GLOBAL TEMPORARY and ON COMMIT DELETE ROWS must appear together"))
} else {
if tmp.TemporaryKeyword == ast.TemporaryGlobal {
tmp.OnCommitDelete = yyS[yypt-0].item.(bool)
}
}
parser.yyVAL.statement = tmp
}
case 427:
{
parser.yyVAL.item = nil
}
case 428:
{
parser.yyVAL.item = true
}
case 429:
{
parser.yyVAL.item = false
}
case 432:
{
parser.yyVAL.item = nil
}
case 433:
{
method := yyS[yypt-4].item.(*ast.PartitionMethod)
method.Num = yyS[yypt-3].item.(uint64)
sub, _ := yyS[yypt-2].item.(*ast.PartitionMethod)
defs, _ := yyS[yypt-1].item.([]*ast.PartitionDefinition)
UpdateIndexes, _ := yyS[yypt-0].item.([]*ast.Constraint)
opt := &ast.PartitionOptions{
PartitionMethod: *method,
Sub: sub,
Definitions: defs,
UpdateIndexes: UpdateIndexes,
}
if err := opt.Validate(); err != nil {
yylex.AppendError(err)
return 1
}
parser.yyVAL.item = opt
}
case 434:
{
parser.yyVAL.item = false
}
case 435:
{
parser.yyVAL.item = true
}
case 436:
{
opt := &ast.IndexOption{Global: yyS[yypt-0].item.(bool)}
parser.yyVAL.item = &ast.Constraint{
Name: yyS[yypt-1].ident,
Option: opt,
}
}
case 437:
{
parser.yyVAL.item = []*ast.Constraint{yyS[yypt-0].item.(*ast.Constraint)}
}
case 438:
{
parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.Constraint), yyS[yypt-0].item.(*ast.Constraint))
}
case 439:
{
parser.yyVAL.item = nil
}
case 440:
{
parser.yyVAL.item = yyS[yypt-1].item
}
case 441:
{
keyAlgorithm, _ := yyS[yypt-3].item.(*ast.PartitionKeyAlgorithm)
parser.yyVAL.item = &ast.PartitionMethod{
Tp: ast.PartitionTypeKey,
Linear: len(yyS[yypt-5].ident) != 0,
ColumnNames: yyS[yypt-1].item.([]*ast.ColumnName),
KeyAlgorithm: keyAlgorithm,
}
}
case 442:
{
parser.yyVAL.item = &ast.PartitionMethod{
Tp: ast.PartitionTypeHash,
Linear: len(yyS[yypt-4].ident) != 0,
Expr: yyS[yypt-1].expr.(ast.ExprNode),
}
}
case 443:
{
parser.yyVAL.item = nil
}
case 444:
{
tp := getUint64FromNUM(yyS[yypt-0].item)
if tp != 1 && tp != 2 {
yylex.AppendError(ErrSyntax)
return 1
}
parser.yyVAL.item = &ast.PartitionKeyAlgorithm{
Type: tp,
}
}
case 446:
{
partitionInterval, _ := yyS[yypt-0].item.(*ast.PartitionInterval)
parser.yyVAL.item = &ast.PartitionMethod{
Tp: ast.PartitionTypeRange,
Expr: yyS[yypt-2].expr.(ast.ExprNode),
Interval: partitionInterval,
}
}
case 447:
{
partitionInterval, _ := yyS[yypt-0].item.(*ast.PartitionInterval)
parser.yyVAL.item = &ast.PartitionMethod{
Tp: ast.PartitionTypeRange,
ColumnNames: yyS[yypt-2].item.([]*ast.ColumnName),
Interval: partitionInterval,
}
}
case 448:
{
parser.yyVAL.item = &ast.PartitionMethod{
Tp: ast.PartitionTypeList,
Expr: yyS[yypt-1].expr.(ast.ExprNode),
}
}
case 449:
{
parser.yyVAL.item = &ast.PartitionMethod{
Tp: ast.PartitionTypeList,
ColumnNames: yyS[yypt-1].item.([]*ast.ColumnName),
}
}
case 450:
{
parser.yyVAL.item = &ast.PartitionMethod{
Tp: ast.PartitionTypeSystemTime,
Expr: yyS[yypt-1].expr.(ast.ExprNode),
Unit: yyS[yypt-0].item.(ast.TimeUnitType),
}
}
case 451:
{
parser.yyVAL.item = &ast.PartitionMethod{
Tp: ast.PartitionTypeSystemTime,
Limit: yyS[yypt-0].item.(uint64),
}
}
case 452:
{
parser.yyVAL.item = &ast.PartitionMethod{
Tp: ast.PartitionTypeSystemTime,
}
}
case 453:
{
parser.yyVAL.item = nil
}
case 454:
{
partitionInterval := &ast.PartitionInterval{
IntervalExpr: yyS[yypt-4].item.(ast.PartitionIntervalExpr),
FirstRangeEnd: yyS[yypt-2].item.(ast.PartitionInterval).FirstRangeEnd,
LastRangeEnd: yyS[yypt-2].item.(ast.PartitionInterval).LastRangeEnd,
NullPart: yyS[yypt-1].item.(bool),
MaxValPart: yyS[yypt-0].item.(bool),
}
startOffset := parser.yyVAL.offset
endOffset := parser.yylval.offset
partitionInterval.SetText(parser.lexer.client, parser.src[startOffset:endOffset])
parser.yyVAL.item = partitionInterval
}
case 455:
{
parser.yyVAL.item = ast.PartitionIntervalExpr{Expr: yyS[yypt-0].expr, TimeUnit: ast.TimeUnitInvalid}
}
case 456:
{
parser.yyVAL.item = ast.PartitionIntervalExpr{Expr: yyS[yypt-1].expr, TimeUnit: yyS[yypt-0].item.(ast.TimeUnitType)}
}
case 457:
{
parser.yyVAL.item = false
}
case 458:
{
parser.yyVAL.item = true
}
case 459:
{
parser.yyVAL.item = false
}
case 460:
{
parser.yyVAL.item = true
}
case 461:
{
parser.yyVAL.item = ast.PartitionInterval{} // First/LastRangeEnd defaults to nil
}
case 462:
{
first := yyS[yypt-8].expr.(ast.ExprNode)
last := yyS[yypt-1].expr.(ast.ExprNode)
parser.yyVAL.item = ast.PartitionInterval{
FirstRangeEnd: &first,
LastRangeEnd: &last,
}
}
case 463:
{
parser.yyVAL.ident = ""
}
case 465:
{
parser.yyVAL.item = nil
}
case 466:
{
method := yyS[yypt-1].item.(*ast.PartitionMethod)
method.Num = yyS[yypt-0].item.(uint64)
parser.yyVAL.item = method
}
case 467:
{
parser.yyVAL.item = uint64(0)
}
case 468:
{
res := yyS[yypt-0].item.(uint64)
if res == 0 {
yylex.AppendError(ast.ErrNoParts.GenWithStackByArgs("subpartitions"))
return 1
}
parser.yyVAL.item = res
}
case 469:
{
parser.yyVAL.item = uint64(0)
}
case 470:
{
res := yyS[yypt-0].item.(uint64)
if res == 0 {
yylex.AppendError(ast.ErrNoParts.GenWithStackByArgs("partitions"))
return 1
}
parser.yyVAL.item = res
}
case 471:
{
parser.yyVAL.item = nil
}
case 472:
{
parser.yyVAL.item = yyS[yypt-1].item.([]*ast.PartitionDefinition)
}
case 473:
{
parser.yyVAL.item = []*ast.PartitionDefinition{yyS[yypt-0].item.(*ast.PartitionDefinition)}
}
case 474:
{
parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.PartitionDefinition), yyS[yypt-0].item.(*ast.PartitionDefinition))
}
case 475:
{
parser.yyVAL.item = &ast.PartitionDefinition{
Name: ast.NewCIStr(yyS[yypt-3].ident),
Clause: yyS[yypt-2].item.(ast.PartitionDefinitionClause),
Options: yyS[yypt-1].item.([]*ast.TableOption),
Sub: yyS[yypt-0].item.([]*ast.SubPartitionDefinition),
}
}
case 476:
{
parser.yyVAL.item = make([]*ast.SubPartitionDefinition, 0)
}
case 477:
{
parser.yyVAL.item = yyS[yypt-1].item
}
case 478:
{
parser.yyVAL.item = []*ast.SubPartitionDefinition{yyS[yypt-0].item.(*ast.SubPartitionDefinition)}
}
case 479:
{
list := yyS[yypt-2].item.([]*ast.SubPartitionDefinition)
parser.yyVAL.item = append(list, yyS[yypt-0].item.(*ast.SubPartitionDefinition))
}
case 480:
{
parser.yyVAL.item = &ast.SubPartitionDefinition{
Name: ast.NewCIStr(yyS[yypt-1].ident),
Options: yyS[yypt-0].item.([]*ast.TableOption),
}
}
case 481:
{
parser.yyVAL.item = make([]*ast.TableOption, 0)
}
case 482:
{
list := yyS[yypt-1].item.([]*ast.TableOption)
parser.yyVAL.item = append(list, yyS[yypt-0].item.(*ast.TableOption))
}
case 483:
{
parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionComment, StrValue: yyS[yypt-0].ident}
}
case 484:
{
parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionEngine, StrValue: yyS[yypt-0].ident}
}
case 485:
{
parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionEngine, StrValue: yyS[yypt-0].ident}
}
case 486:
{
parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionEngineAttribute, StrValue: yyS[yypt-0].ident}
}
case 487:
{
parser.yyVAL.item = &ast.TableOption{
Tp: ast.TableOptionSecondaryEngineAttribute,
StrValue: yyS[yypt-0].ident,
}
}
case 488:
{
parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionInsertMethod, StrValue: yyS[yypt-0].ident}
}
case 489:
{
parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionDataDirectory, StrValue: yyS[yypt-0].ident}
}
case 490:
{
parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionIndexDirectory, StrValue: yyS[yypt-0].ident}
}
case 491:
{
parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionMaxRows, UintValue: yyS[yypt-0].item.(uint64)}
}
case 492:
{
parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionMinRows, UintValue: yyS[yypt-0].item.(uint64)}
}
case 493:
{
parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionTablespace, StrValue: yyS[yypt-0].ident}
}
case 494:
{
parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionNodegroup, UintValue: yyS[yypt-0].item.(uint64)}
}
case 495:
{
placementOptions := yyS[yypt-0].item.(*ast.PlacementOption)
parser.yyVAL.item = &ast.TableOption{
// offset trick, enums are identical but of different type
Tp: ast.TableOptionType(placementOptions.Tp),
StrValue: placementOptions.StrValue,
UintValue: placementOptions.UintValue,
}
}
case 496:
{
parser.yyVAL.item = &ast.PartitionDefinitionClauseNone{}
}
case 497:
{
parser.yyVAL.item = &ast.PartitionDefinitionClauseLessThan{
Exprs: []ast.ExprNode{&ast.MaxValueExpr{}},
}
}
case 498:
{
parser.yyVAL.item = &ast.PartitionDefinitionClauseLessThan{
Exprs: yyS[yypt-1].item.([]ast.ExprNode),
}
}
case 499:
{
parser.yyVAL.item = &ast.PartitionDefinitionClauseIn{
Values: [][]ast.ExprNode{{&ast.DefaultExpr{}}},
}
}
case 500:
{
exprs := yyS[yypt-1].item.([]ast.ExprNode)
values := make([][]ast.ExprNode, 0, len(exprs))
for _, expr := range exprs {
if row, ok := expr.(*ast.RowExpr); ok {
values = append(values, row.Values)
} else {
values = append(values, []ast.ExprNode{expr})
}
}
parser.yyVAL.item = &ast.PartitionDefinitionClauseIn{Values: values}
}
case 501:
{
parser.yyVAL.item = &ast.PartitionDefinitionClauseHistory{Current: false}
}
case 502:
{
parser.yyVAL.item = &ast.PartitionDefinitionClauseHistory{Current: true}
}
case 503:
{
parser.yyVAL.item = ast.OnDuplicateKeyHandlingError
}
case 504:
{
parser.yyVAL.item = ast.OnDuplicateKeyHandlingIgnore
}
case 505:
{
parser.yyVAL.item = ast.OnDuplicateKeyHandlingReplace
}
case 508:
{
parser.yyVAL.item = &ast.CreateTableStmt{}
}
case 509:
{
parser.yyVAL.item = &ast.CreateTableStmt{Select: yyS[yypt-0].statement.(ast.ResultSetNode)}
}
case 510:
{
parser.yyVAL.item = &ast.CreateTableStmt{Select: yyS[yypt-0].statement.(ast.ResultSetNode)}
}
case 511:
{
parser.yyVAL.item = &ast.CreateTableStmt{Select: yyS[yypt-0].statement.(ast.ResultSetNode)}
}
case 512:
{
var sel ast.ResultSetNode
switch x := yyS[yypt-0].expr.(*ast.SubqueryExpr).Query.(type) {
case *ast.SelectStmt:
x.IsInBraces = true
sel = x
case *ast.SetOprStmt:
x.IsInBraces = true
sel = x
}
parser.yyVAL.item = &ast.CreateTableStmt{Select: sel}
}
case 516:
{
var sel ast.StmtNode
switch x := yyS[yypt-0].expr.(*ast.SubqueryExpr).Query.(type) {
case *ast.SelectStmt:
x.IsInBraces = true
sel = x
case *ast.SetOprStmt:
x.IsInBraces = true
sel = x
}
parser.yyVAL.statement = sel
}
case 517:
{
parser.yyVAL.item = yyS[yypt-0].item
}
case 518:
{
parser.yyVAL.item = yyS[yypt-1].item
}
case 519:
{
startOffset := parser.startOffset(&yyS[yypt-1])
endOffset := parser.yylval.offset
selStmt := yyS[yypt-1].statement.(ast.StmtNode)
x := &ast.CreateViewStmt{
OrReplace: yyS[yypt-9].item.(bool),
ViewName: yyS[yypt-4].item.(*ast.TableName),
Select: selStmt,
Algorithm: yyS[yypt-8].item.(ast.ViewAlgorithm),
Definer: yyS[yypt-7].item.(*auth.UserIdentity),
Security: yyS[yypt-6].item.(ast.ViewSecurity),
}
if yyS[yypt-3].item != nil {
x.Cols = yyS[yypt-3].item.([]ast.CIStr)
}
if yyS[yypt-0].item != nil {
x.CheckOption = yyS[yypt-0].item.(ast.ViewCheckOption)
endOffset = parser.startOffset(&yyS[yypt])
} else {
x.CheckOption = ast.CheckOptionCascaded
}
selStmt.SetText(parser.lexer.client, strings.TrimSpace(parser.src[startOffset:endOffset]))
parser.yyVAL.statement = x
}
case 520:
{
parser.yyVAL.item = false
}
case 521:
{
parser.yyVAL.item = true
}
case 522:
{
parser.yyVAL.item = ast.AlgorithmUndefined
}
case 523:
{
parser.yyVAL.item = ast.AlgorithmUndefined
}
case 524:
{
parser.yyVAL.item = ast.AlgorithmMerge
}
case 525:
{
parser.yyVAL.item = ast.AlgorithmTemptable
}
case 526:
{
parser.yyVAL.item = &auth.UserIdentity{CurrentUser: true}
}
case 527:
{
parser.yyVAL.item = yyS[yypt-0].item
}
case 528:
{
parser.yyVAL.item = ast.SecurityDefiner
}
case 529:
{
parser.yyVAL.item = ast.SecurityDefiner
}
case 530:
{
parser.yyVAL.item = ast.SecurityInvoker
}
case 532:
{
parser.yyVAL.item = nil
}
case 533:
{
parser.yyVAL.item = yyS[yypt-1].item.([]ast.CIStr)
}
case 534:
{
parser.yyVAL.item = []ast.CIStr{ast.NewCIStr(yyS[yypt-0].ident)}
}
case 535:
{
parser.yyVAL.item = append(yyS[yypt-2].item.([]ast.CIStr), ast.NewCIStr(yyS[yypt-0].ident))
}
case 536:
{
parser.yyVAL.item = nil
}
case 537:
{
parser.yyVAL.item = ast.CheckOptionCascaded
}
case 538:
{
parser.yyVAL.item = ast.CheckOptionLocal
}
case 539:
{
parser.yyVAL.statement = &ast.DoStmt{
Exprs: yyS[yypt-0].item.([]ast.ExprNode),
}
}
case 540:
{
// Single Table
tn := yyS[yypt-6].item.(*ast.TableName)
tn.IndexHints = yyS[yypt-3].item.([]*ast.IndexHint)
tn.PartitionNames = yyS[yypt-5].item.([]ast.CIStr)
join := &ast.Join{Left: &ast.TableSource{Source: tn, AsName: yyS[yypt-4].item.(ast.CIStr)}, Right: nil}
x := &ast.DeleteStmt{
TableRefs: &ast.TableRefsClause{TableRefs: join},
Priority: yyS[yypt-10].item.(mysql.PriorityEnum),
Quick: yyS[yypt-9].item.(bool),
IgnoreErr: yyS[yypt-8].item.(bool),
}
if yyS[yypt-11].item != nil {
x.TableHints = yyS[yypt-11].item.([]*ast.TableOptimizerHint)
}
if yyS[yypt-2].item != nil {
x.Where = yyS[yypt-2].item.(ast.ExprNode)
}
if yyS[yypt-1].item != nil {
x.Order = yyS[yypt-1].item.(*ast.OrderByClause)
}
if yyS[yypt-0].item != nil {
x.Limit = yyS[yypt-0].item.(*ast.Limit)
}
parser.yyVAL.statement = x
}
case 541:
{
// Multiple Table
x := &ast.DeleteStmt{
Priority: yyS[yypt-6].item.(mysql.PriorityEnum),
Quick: yyS[yypt-5].item.(bool),
IgnoreErr: yyS[yypt-4].item.(bool),
IsMultiTable: true,
BeforeFrom: true,
Tables: &ast.DeleteTableList{Tables: yyS[yypt-3].item.([]*ast.TableName)},
TableRefs: &ast.TableRefsClause{TableRefs: yyS[yypt-1].item.(*ast.Join)},
}
if yyS[yypt-7].item != nil {
x.TableHints = yyS[yypt-7].item.([]*ast.TableOptimizerHint)
}
if yyS[yypt-0].item != nil {
x.Where = yyS[yypt-0].item.(ast.ExprNode)
}
parser.yyVAL.statement = x
}
case 542:
{
// Multiple Table
x := &ast.DeleteStmt{
Priority: yyS[yypt-7].item.(mysql.PriorityEnum),
Quick: yyS[yypt-6].item.(bool),
IgnoreErr: yyS[yypt-5].item.(bool),
IsMultiTable: true,
Tables: &ast.DeleteTableList{Tables: yyS[yypt-3].item.([]*ast.TableName)},
TableRefs: &ast.TableRefsClause{TableRefs: yyS[yypt-1].item.(*ast.Join)},
}
if yyS[yypt-8].item != nil {
x.TableHints = yyS[yypt-8].item.([]*ast.TableOptimizerHint)
}
if yyS[yypt-0].item != nil {
x.Where = yyS[yypt-0].item.(ast.ExprNode)
}
parser.yyVAL.statement = x
}
case 545:
{
d := yyS[yypt-0].statement.(*ast.DeleteStmt)
d.With = yyS[yypt-1].item.(*ast.WithClause)
parser.yyVAL.statement = d
}
case 546:
{
d := yyS[yypt-0].statement.(*ast.DeleteStmt)
d.With = yyS[yypt-1].item.(*ast.WithClause)
parser.yyVAL.statement = d
}
case 548:
{
parser.yyVAL.statement = &ast.DropDatabaseStmt{IfExists: yyS[yypt-1].item.(bool), Name: ast.NewCIStr(yyS[yypt-0].ident)}
}
case 549:
{
var indexLockAndAlgorithm *ast.IndexLockAndAlgorithm
if yyS[yypt-0].item != nil {
indexLockAndAlgorithm = yyS[yypt-0].item.(*ast.IndexLockAndAlgorithm)
if indexLockAndAlgorithm.LockTp == ast.LockTypeDefault && indexLockAndAlgorithm.AlgorithmTp == ast.AlgorithmTypeDefault {
indexLockAndAlgorithm = nil
}
}
parser.yyVAL.statement = &ast.DropIndexStmt{IfExists: yyS[yypt-4].item.(bool), IndexName: yyS[yypt-3].ident, Table: yyS[yypt-1].item.(*ast.TableName), LockAlg: indexLockAndAlgorithm}
}
case 550:
{
parser.yyVAL.statement = &ast.DropIndexStmt{IfExists: yyS[yypt-3].item.(bool), IndexName: yyS[yypt-2].ident, Table: yyS[yypt-0].item.(*ast.TableName), IsHypo: true}
}
case 551:
{
parser.yyVAL.statement = &ast.DropTableStmt{IfExists: yyS[yypt-2].item.(bool), Tables: yyS[yypt-1].item.([]*ast.TableName), IsView: false, TemporaryKeyword: yyS[yypt-4].item.(ast.TemporaryKeyword)}
}
case 552:
{
parser.yyVAL.item = ast.TemporaryNone
}
case 553:
{
parser.yyVAL.item = ast.TemporaryLocal
}
case 554:
{
parser.yyVAL.item = ast.TemporaryGlobal
}
case 555:
{
parser.yyVAL.statement = &ast.DropTableStmt{Tables: yyS[yypt-1].item.([]*ast.TableName), IsView: true}
}
case 556:
{
parser.yyVAL.statement = &ast.DropTableStmt{IfExists: true, Tables: yyS[yypt-1].item.([]*ast.TableName), IsView: true}
}
case 557:
{
parser.yyVAL.statement = &ast.DropUserStmt{IsDropRole: false, IfExists: false, UserList: yyS[yypt-0].item.([]*auth.UserIdentity)}
}
case 558:
{
parser.yyVAL.statement = &ast.DropUserStmt{IsDropRole: false, IfExists: true, UserList: yyS[yypt-0].item.([]*auth.UserIdentity)}
}
case 559:
{
tmp := make([]*auth.UserIdentity, 0, 10)
roleList := yyS[yypt-0].item.([]*auth.RoleIdentity)
for _, r := range roleList {
tmp = append(tmp, &auth.UserIdentity{Username: r.Username, Hostname: r.Hostname})
}
parser.yyVAL.statement = &ast.DropUserStmt{IsDropRole: true, IfExists: false, UserList: tmp}
}
case 560:
{
tmp := make([]*auth.UserIdentity, 0, 10)
roleList := yyS[yypt-0].item.([]*auth.RoleIdentity)
for _, r := range roleList {
tmp = append(tmp, &auth.UserIdentity{Username: r.Username, Hostname: r.Hostname})
}
parser.yyVAL.statement = &ast.DropUserStmt{IsDropRole: true, IfExists: true, UserList: tmp}
}
case 561:
{
parser.yyVAL.statement = &ast.DropStatsStmt{Tables: yyS[yypt-0].item.([]*ast.TableName)}
}
case 562:
{
yylex.AppendError(ErrWarnDeprecatedSyntaxNoReplacement.FastGenByArgs("'DROP STATS ... PARTITION ...'", ""))
parser.lastErrorAsWarn()
parser.yyVAL.statement = &ast.DropStatsStmt{
Tables: []*ast.TableName{yyS[yypt-2].item.(*ast.TableName)},
PartitionNames: yyS[yypt-0].item.([]ast.CIStr),
}
}
case 563:
{
yylex.AppendError(ErrWarnDeprecatedSyntax.FastGenByArgs("DROP STATS ... GLOBAL", "DROP STATS ..."))
parser.lastErrorAsWarn()
parser.yyVAL.statement = &ast.DropStatsStmt{
Tables: []*ast.TableName{yyS[yypt-1].item.(*ast.TableName)},
IsGlobalStats: true,
}
}
case 571:
{
parser.yyVAL.statement = nil
}
case 572:
{
parser.yyVAL.statement = &ast.TraceStmt{
Stmt: yyS[yypt-0].statement,
Format: "row",
TracePlan: false,
}
startOffset := parser.startOffset(&yyS[yypt])
yyS[yypt-0].statement.SetText(parser.lexer.client, string(parser.src[startOffset:]))
}
case 573:
{
parser.yyVAL.statement = &ast.TraceStmt{
Stmt: yyS[yypt-0].statement,
Format: yyS[yypt-1].ident,
TracePlan: false,
}
startOffset := parser.startOffset(&yyS[yypt])
yyS[yypt-0].statement.SetText(parser.lexer.client, string(parser.src[startOffset:]))
}
case 574:
{
parser.yyVAL.statement = &ast.TraceStmt{
Stmt: yyS[yypt-0].statement,
TracePlan: true,
}
startOffset := parser.startOffset(&yyS[yypt])
yyS[yypt-0].statement.SetText(parser.lexer.client, string(parser.src[startOffset:]))
}
case 575:
{
parser.yyVAL.statement = &ast.TraceStmt{
Stmt: yyS[yypt-0].statement,
TracePlan: true,
TracePlanTarget: yyS[yypt-1].ident,
}
startOffset := parser.startOffset(&yyS[yypt])
yyS[yypt-0].statement.SetText(parser.lexer.client, string(parser.src[startOffset:]))
}
case 579:
{
startOffset := parser.startOffset(&yyS[yypt])
stmt := yyS[yypt-0].statement
stmt.SetText(parser.lexer.client, strings.TrimSpace(parser.src[startOffset:]))
parser.yyVAL.statement = &ast.ExplainStmt{
Stmt: stmt,
Explore: true,
}
}
case 580:
{
parser.yyVAL.statement = &ast.ExplainStmt{
SQLDigest: yyS[yypt-0].ident,
Explore: true,
}
}
case 581:
{
startOffset := parser.startOffset(&yyS[yypt])
stmt := yyS[yypt-0].statement
stmt.SetText(parser.lexer.client, strings.TrimSpace(parser.src[startOffset:]))
parser.yyVAL.statement = &ast.ExplainStmt{
Stmt: stmt,
Explore: true,
Analyze: true,
}
}
case 582:
{
parser.yyVAL.statement = &ast.ExplainStmt{
SQLDigest: yyS[yypt-0].ident,
Explore: true,
Analyze: true,
}
}
case 583:
{
parser.yyVAL.statement = &ast.ExplainStmt{
Stmt: &ast.ShowStmt{
Tp: ast.ShowColumns,
Table: yyS[yypt-0].item.(*ast.TableName),
},
}
}
case 584:
{
parser.yyVAL.statement = &ast.ExplainStmt{
Stmt: &ast.ShowStmt{
Tp: ast.ShowColumns,
Table: yyS[yypt-1].item.(*ast.TableName),
Column: yyS[yypt-0].item.(*ast.ColumnName),
},
}
}
case 585:
{
parser.yyVAL.statement = &ast.ExplainStmt{
Stmt: yyS[yypt-0].statement,
Format: "row",
}
}
case 586:
{
parser.yyVAL.statement = &ast.ExplainStmt{
PlanDigest: yyS[yypt-0].ident,
Format: "row",
}
}
case 587:
{
parser.yyVAL.statement = &ast.ExplainForStmt{
Format: "row",
ConnectionID: getUint64FromNUM(yyS[yypt-0].item),
}
}
case 588:
{
parser.yyVAL.statement = &ast.ExplainForStmt{
Format: yyS[yypt-3].ident,
ConnectionID: getUint64FromNUM(yyS[yypt-0].item),
}
}
case 589:
{
parser.yyVAL.statement = &ast.ExplainStmt{
Stmt: yyS[yypt-0].statement,
Format: yyS[yypt-1].ident,
}
}
case 590:
{
parser.yyVAL.statement = &ast.ExplainForStmt{
Format: yyS[yypt-3].ident,
ConnectionID: getUint64FromNUM(yyS[yypt-0].item),
}
}
case 591:
{
parser.yyVAL.statement = &ast.ExplainStmt{
Stmt: yyS[yypt-0].statement,
Format: yyS[yypt-1].ident,
}
}
case 592:
{
parser.yyVAL.statement = &ast.ExplainStmt{
PlanDigest: yyS[yypt-0].ident,
Format: yyS[yypt-1].ident,
}
}
case 593:
{
parser.yyVAL.statement = &ast.ExplainStmt{
PlanDigest: yyS[yypt-0].ident,
Format: yyS[yypt-1].ident,
}
}
case 594:
{
parser.yyVAL.statement = &ast.ExplainStmt{
Stmt: yyS[yypt-0].statement,
Format: "row",
Analyze: true,
}
}
case 595:
{
parser.yyVAL.statement = &ast.ExplainStmt{
PlanDigest: yyS[yypt-0].ident,
Format: "row",
Analyze: true,
}
}
case 596:
{
parser.yyVAL.statement = &ast.ExplainStmt{
Stmt: yyS[yypt-0].statement,
Format: yyS[yypt-1].ident,
Analyze: true,
}
}
case 597:
{
parser.yyVAL.statement = &ast.ExplainStmt{
PlanDigest: yyS[yypt-0].ident,
Format: yyS[yypt-1].ident,
Analyze: true,
}
}
case 598:
{
parser.yyVAL.statement = &ast.ExplainStmt{
PlanDigest: yyS[yypt-0].ident,
Format: yyS[yypt-1].ident,
Analyze: true,
}
}
case 599:
{
parser.yyVAL.statement = &ast.ExplainStmt{
Stmt: yyS[yypt-0].statement,
Format: yyS[yypt-1].ident,
Analyze: true,
}
}
case 608:
{
parser.yyVAL.statement = &ast.SavepointStmt{Name: yyS[yypt-0].ident}
}
case 609:
{
parser.yyVAL.statement = &ast.ReleaseSavepointStmt{Name: yyS[yypt-0].ident}
}
case 610:
{
stmt := yyS[yypt-3].item.(*ast.BRIEStmt)
stmt.Kind = ast.BRIEKindBackup
stmt.Storage = yyS[yypt-1].ident
stmt.Options = yyS[yypt-0].item.([]*ast.BRIEOption)
parser.yyVAL.statement = stmt
}
case 611:
{
stmt := &ast.BRIEStmt{}
stmt.Kind = ast.BRIEKindStreamStart
stmt.Storage = yyS[yypt-1].ident
stmt.Options = yyS[yypt-0].item.([]*ast.BRIEOption)
parser.yyVAL.statement = stmt
}
case 612:
{
stmt := &ast.BRIEStmt{}
stmt.Kind = ast.BRIEKindStreamStop
parser.yyVAL.statement = stmt
}
case 613:
{
stmt := &ast.BRIEStmt{}
stmt.Kind = ast.BRIEKindStreamPause
stmt.Options = yyS[yypt-0].item.([]*ast.BRIEOption)
parser.yyVAL.statement = stmt
}
case 614:
{
stmt := &ast.BRIEStmt{}
stmt.Kind = ast.BRIEKindStreamResume
parser.yyVAL.statement = stmt
}
case 615:
{
stmt := &ast.BRIEStmt{}
stmt.Kind = ast.BRIEKindStreamPurge
stmt.Storage = yyS[yypt-1].ident
stmt.Options = yyS[yypt-0].item.([]*ast.BRIEOption)
parser.yyVAL.statement = stmt
}
case 616:
{
stmt := &ast.BRIEStmt{}
stmt.Kind = ast.BRIEKindStreamStatus
parser.yyVAL.statement = stmt
}
case 617:
{
stmt := &ast.BRIEStmt{}
stmt.Kind = ast.BRIEKindStreamMetaData
stmt.Storage = yyS[yypt-0].ident
parser.yyVAL.statement = stmt
}
case 618:
{
stmt := &ast.BRIEStmt{}
stmt.Kind = ast.BRIEKindShowJob
stmt.JobID = yyS[yypt-0].item.(int64)
parser.yyVAL.statement = stmt
}
case 619:
{
stmt := &ast.BRIEStmt{}
stmt.Kind = ast.BRIEKindShowQuery
stmt.JobID = yyS[yypt-0].item.(int64)
parser.yyVAL.statement = stmt
}
case 620:
{
stmt := &ast.BRIEStmt{}
stmt.Kind = ast.BRIEKindCancelJob
stmt.JobID = yyS[yypt-0].item.(int64)
parser.yyVAL.statement = stmt
}
case 621:
{
stmt := &ast.BRIEStmt{}
stmt.Kind = ast.BRIEKindShowBackupMeta
stmt.Storage = yyS[yypt-0].ident
parser.yyVAL.statement = stmt
}
case 622:
{
stmt := yyS[yypt-3].item.(*ast.BRIEStmt)
stmt.Kind = ast.BRIEKindRestore
stmt.Storage = yyS[yypt-1].ident
stmt.Options = yyS[yypt-0].item.([]*ast.BRIEOption)
parser.yyVAL.statement = stmt
}
case 623:
{
stmt := &ast.BRIEStmt{}
stmt.Kind = ast.BRIEKindRestorePIT
stmt.Storage = yyS[yypt-1].ident
stmt.Options = yyS[yypt-0].item.([]*ast.BRIEOption)
parser.yyVAL.statement = stmt
}
case 624:
{
parser.yyVAL.item = &ast.BRIEStmt{}
}
case 625:
{
parser.yyVAL.item = &ast.BRIEStmt{Schemas: yyS[yypt-0].item.([]string)}
}
case 626:
{
parser.yyVAL.item = &ast.BRIEStmt{Tables: yyS[yypt-0].item.([]*ast.TableName)}
}
case 627:
{
parser.yyVAL.item = []string{yyS[yypt-0].ident}
}
case 628:
{
parser.yyVAL.item = append(yyS[yypt-2].item.([]string), yyS[yypt-0].ident)
}
case 629:
{
parser.yyVAL.item = []*ast.BRIEOption{}
}
case 630:
{
parser.yyVAL.item = append(yyS[yypt-1].item.([]*ast.BRIEOption), yyS[yypt-0].item.(*ast.BRIEOption))
}
case 631:
{
parser.yyVAL.item = ast.BRIEOptionConcurrency
}
case 632:
{
parser.yyVAL.item = ast.BRIEOptionResume
}
case 633:
{
parser.yyVAL.item = ast.BRIEOptionChecksumConcurrency
}
case 634:
{
parser.yyVAL.item = ast.BRIEOptionCompressionLevel
}
case 635:
{
parser.yyVAL.item = ast.BRIEOptionSendCreds
}
case 636:
{
parser.yyVAL.item = ast.BRIEOptionOnline
}
case 637:
{
parser.yyVAL.item = ast.BRIEOptionCheckpoint
}
case 638:
{
parser.yyVAL.item = ast.BRIEOptionSkipSchemaFiles
}
case 639:
{
parser.yyVAL.item = ast.BRIEOptionStrictFormat
}
case 640:
{
parser.yyVAL.item = ast.BRIEOptionCSVNotNull
}
case 641:
{
parser.yyVAL.item = ast.BRIEOptionCSVBackslashEscape
}
case 642:
{
parser.yyVAL.item = ast.BRIEOptionCSVTrimLastSeparators
}
case 643:
{
parser.yyVAL.item = ast.BRIEOptionWaitTiflashReady
}
case 644:
{
parser.yyVAL.item = ast.BRIEOptionWithSysTable
}
case 645:
{
parser.yyVAL.item = ast.BRIEOptionIgnoreStats
}
case 646:
{
parser.yyVAL.item = ast.BRIEOptionLoadStats
}
case 647:
{
parser.yyVAL.item = ast.BRIEOptionTiKVImporter
}
case 648:
{
parser.yyVAL.item = ast.BRIEOptionCSVSeparator
}
case 649:
{
parser.yyVAL.item = ast.BRIEOptionCSVDelimiter
}
case 650:
{
parser.yyVAL.item = ast.BRIEOptionCSVNull
}
case 651:
{
parser.yyVAL.item = ast.BRIEOptionCompression
}
case 652:
{
parser.yyVAL.item = ast.BRIEOptionEncryptionMethod
}
case 653:
{
parser.yyVAL.item = ast.BRIEOptionEncryptionKeyFile
}
case 654:
{
parser.yyVAL.item = ast.BRIEOptionBackend
}
case 655:
{
parser.yyVAL.item = ast.BRIEOptionOnDuplicate
}
case 656:
{
parser.yyVAL.item = ast.BRIEOptionOnDuplicate
}
case 657:
{
parser.yyVAL.item = &ast.BRIEOption{
Tp: yyS[yypt-2].item.(ast.BRIEOptionType),
UintValue: yyS[yypt-0].item.(uint64),
}
}
case 658:
{
value := uint64(0)
if yyS[yypt-0].item.(bool) {
value = 1
}
parser.yyVAL.item = &ast.BRIEOption{
Tp: yyS[yypt-2].item.(ast.BRIEOptionType),
UintValue: value,
}
}
case 659:
{
parser.yyVAL.item = &ast.BRIEOption{
Tp: yyS[yypt-2].item.(ast.BRIEOptionType),
StrValue: yyS[yypt-0].ident,
}
}
case 660:
{
parser.yyVAL.item = &ast.BRIEOption{
Tp: yyS[yypt-2].item.(ast.BRIEOptionType),
StrValue: strings.ToLower(yyS[yypt-0].ident),
}
}
case 661:
{
unit, err := yyS[yypt-1].item.(ast.TimeUnitType).Duration()
if err != nil {
yylex.AppendError(err)
return 1
}
// TODO: check overflow?
parser.yyVAL.item = &ast.BRIEOption{
Tp: ast.BRIEOptionBackupTimeAgo,
UintValue: yyS[yypt-2].item.(uint64) * uint64(unit),
}
}
case 662:
{
parser.yyVAL.item = &ast.BRIEOption{
Tp: ast.BRIEOptionBackupTS,
StrValue: yyS[yypt-0].ident,
}
}
case 663:
{
parser.yyVAL.item = &ast.BRIEOption{
Tp: ast.BRIEOptionBackupTSO,
UintValue: yyS[yypt-0].item.(uint64),
}
}
case 664:
{
parser.yyVAL.item = &ast.BRIEOption{
Tp: ast.BRIEOptionLastBackupTS,
StrValue: yyS[yypt-0].ident,
}
}
case 665:
{
parser.yyVAL.item = &ast.BRIEOption{
Tp: ast.BRIEOptionLastBackupTSO,
UintValue: yyS[yypt-0].item.(uint64),
}
}
case 666:
{
// TODO: check overflow?
parser.yyVAL.item = &ast.BRIEOption{
Tp: ast.BRIEOptionRateLimit,
UintValue: yyS[yypt-3].item.(uint64) * 1048576,
}
}
case 667:
{
parser.yyVAL.item = &ast.BRIEOption{
Tp: ast.BRIEOptionCSVHeader,
UintValue: ast.BRIECSVHeaderIsColumns,
}
}
case 668:
{
parser.yyVAL.item = &ast.BRIEOption{
Tp: ast.BRIEOptionCSVHeader,
UintValue: yyS[yypt-0].item.(uint64),
}
}
case 669:
{
value := uint64(0)
if yyS[yypt-0].item.(bool) {
value = 1
}
parser.yyVAL.item = &ast.BRIEOption{
Tp: ast.BRIEOptionChecksum,
UintValue: value,
}
}
case 670:
{
parser.yyVAL.item = &ast.BRIEOption{
Tp: ast.BRIEOptionChecksum,
UintValue: uint64(yyS[yypt-0].item.(ast.BRIEOptionLevel)),
}
}
case 671:
{
value := uint64(0)
if yyS[yypt-0].item.(bool) {
value = 1
}
parser.yyVAL.item = &ast.BRIEOption{
Tp: ast.BRIEOptionAnalyze,
UintValue: value,
}
}
case 672:
{
parser.yyVAL.item = &ast.BRIEOption{
Tp: ast.BRIEOptionAnalyze,
UintValue: uint64(yyS[yypt-0].item.(ast.BRIEOptionLevel)),
}
}
case 673:
{
parser.yyVAL.item = &ast.BRIEOption{
Tp: ast.BRIEOptionFullBackupStorage,
StrValue: yyS[yypt-0].ident,
}
}
case 674:
{
parser.yyVAL.item = &ast.BRIEOption{
Tp: ast.BRIEOptionRestoredTS,
StrValue: yyS[yypt-0].ident,
}
}
case 675:
{
parser.yyVAL.item = &ast.BRIEOption{
Tp: ast.BRIEOptionStartTS,
StrValue: yyS[yypt-0].ident,
}
}
case 676:
{
parser.yyVAL.item = &ast.BRIEOption{
Tp: ast.BRIEOptionUntilTS,
StrValue: yyS[yypt-0].ident,
}
}
case 677:
{
parser.yyVAL.item = &ast.BRIEOption{
Tp: ast.BRIEOptionGCTTL,
StrValue: yyS[yypt-0].ident,
}
}
case 678:
{
parser.yyVAL.item = getUint64FromNUM(yyS[yypt-0].item)
}
case 679:
{
v, rangeErrMsg := getInt64FromNUM(yyS[yypt-0].item)
if len(rangeErrMsg) != 0 {
yylex.AppendError(yylex.Errorf(rangeErrMsg))
return 1
}
parser.yyVAL.item = v
}
case 681:
{
parser.yyVAL.item = yyS[yypt-0].item.(int64) != 0
}
case 682:
{
parser.yyVAL.item = false
}
case 683:
{
parser.yyVAL.item = true
}
case 684:
{
parser.yyVAL.item = ast.BRIEOptionLevelOff
}
case 685:
{
parser.yyVAL.item = ast.BRIEOptionLevelOptional
}
case 686:
{
parser.yyVAL.item = ast.BRIEOptionLevelRequired
}
case 687:
{
parser.yyVAL.statement = &ast.ImportIntoActionStmt{
Tp: ast.ImportIntoCancel,
JobID: yyS[yypt-0].item.(int64),
}
}
case 688:
{
v := yyS[yypt-2].ident
v = strings.TrimPrefix(v, "@")
parser.yyVAL.expr = &ast.VariableExpr{
Name: v,
IsGlobal: false,
IsSystem: false,
Value: yyS[yypt-0].expr,
}
}
case 689:
{
parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.LogicOr, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr}
}
case 690:
{
parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.LogicXor, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr}
}
case 691:
{
parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.LogicAnd, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr}
}
case 692:
{
expr, ok := yyS[yypt-0].expr.(*ast.ExistsSubqueryExpr)
if ok {
expr.Not = !expr.Not
parser.yyVAL.expr = yyS[yypt-0].expr
} else {
parser.yyVAL.expr = &ast.UnaryOperationExpr{Op: opcode.Not, V: yyS[yypt-0].expr}
}
}
case 693:
{
parser.yyVAL.expr = &ast.MatchAgainst{
ColumnNames: yyS[yypt-6].item.([]*ast.ColumnName),
Against: yyS[yypt-2].expr,
Modifier: ast.FulltextSearchModifier(yyS[yypt-1].item.(int)),
}
}
case 694:
{
parser.yyVAL.expr = &ast.IsTruthExpr{Expr: yyS[yypt-2].expr, Not: !yyS[yypt-1].item.(bool), True: int64(1)}
}
case 695:
{
parser.yyVAL.expr = &ast.IsTruthExpr{Expr: yyS[yypt-2].expr, Not: !yyS[yypt-1].item.(bool), True: int64(0)}
}
case 696:
{
/* https://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html#operator_is */
parser.yyVAL.expr = &ast.IsNullExpr{Expr: yyS[yypt-2].expr, Not: !yyS[yypt-1].item.(bool)}
}
case 698:
{
parser.yyVAL.expr = &ast.DefaultExpr{}
}
case 700:
{
parser.yyVAL.expr = &ast.MaxValueExpr{}
}
case 702:
{
parser.yyVAL.item = ast.FulltextSearchModifierNaturalLanguageMode
}
case 703:
{
parser.yyVAL.item = ast.FulltextSearchModifierNaturalLanguageMode
}
case 704:
{
parser.yyVAL.item = ast.FulltextSearchModifierNaturalLanguageMode | ast.FulltextSearchModifierWithQueryExpansion
}
case 705:
{
parser.yyVAL.item = ast.FulltextSearchModifierBooleanMode
}
case 706:
{
parser.yyVAL.item = ast.FulltextSearchModifierWithQueryExpansion
}
case 711:
{
parser.yyVAL.item = []ast.ExprNode{yyS[yypt-0].expr}
}
case 712:
{
parser.yyVAL.item = append(yyS[yypt-2].item.([]ast.ExprNode), yyS[yypt-0].expr)
}
case 713:
{
parser.yyVAL.item = []ast.ExprNode{yyS[yypt-0].expr}
}
case 714:
{
parser.yyVAL.item = append(yyS[yypt-2].item.([]ast.ExprNode), yyS[yypt-0].expr)
}
case 715:
{
parser.yyVAL.item = []ast.ExprNode{yyS[yypt-0].expr}
}
case 716:
{
parser.yyVAL.item = append(yyS[yypt-2].item.([]ast.ExprNode), yyS[yypt-0].expr)
}
case 717:
{
parser.yyVAL.item = []ast.ExprNode{}
}
case 719:
{
parser.yyVAL.item = []ast.ExprNode{}
}
case 721:
{
expr := ast.NewValueExpr(yyS[yypt-0].item, parser.charset, parser.collation)
parser.yyVAL.item = []ast.ExprNode{expr}
}
case 722:
{
parser.yyVAL.expr = &ast.IsNullExpr{Expr: yyS[yypt-2].expr, Not: !yyS[yypt-1].item.(bool)}
}
case 723:
{
parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: yyS[yypt-1].item.(opcode.Op), L: yyS[yypt-2].expr, R: yyS[yypt-0].expr}
}
case 724:
{
sq := yyS[yypt-0].expr.(*ast.SubqueryExpr)
sq.MultiRows = true
parser.yyVAL.expr = &ast.CompareSubqueryExpr{Op: yyS[yypt-2].item.(opcode.Op), L: yyS[yypt-3].expr, R: sq, All: yyS[yypt-1].item.(bool)}
}
case 725:
{
v := yyS[yypt-2].ident
v = strings.TrimPrefix(v, "@")
variable := &ast.VariableExpr{
Name: v,
IsGlobal: false,
IsSystem: false,
Value: yyS[yypt-0].expr,
}
parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: yyS[yypt-3].item.(opcode.Op), L: yyS[yypt-4].expr, R: variable}
}
case 727:
{
parser.yyVAL.item = opcode.GE
}
case 728:
{
parser.yyVAL.item = opcode.GT
}
case 729:
{
parser.yyVAL.item = opcode.LE
}
case 730:
{
parser.yyVAL.item = opcode.LT
}
case 731:
{
parser.yyVAL.item = opcode.NE
}
case 732:
{
parser.yyVAL.item = opcode.NE
}
case 733:
{
parser.yyVAL.item = opcode.EQ
}
case 734:
{
parser.yyVAL.item = opcode.NullEQ
}
case 735:
{
parser.yyVAL.item = true
}
case 736:
{
parser.yyVAL.item = false
}
case 737:
{
parser.yyVAL.item = true
}
case 738:
{
parser.yyVAL.item = false
}
case 739:
{
parser.yyVAL.item = true
}
case 740:
{
parser.yyVAL.item = false
}
case 741:
{
parser.yyVAL.item = true
}
case 742:
{
parser.yyVAL.item = false
}
case 743:
{
parser.yyVAL.item = true
}
case 744:
{
parser.yyVAL.item = false
}
case 745:
{
parser.yyVAL.item = true
}
case 746:
{
parser.yyVAL.item = false
}
case 747:
{
parser.yyVAL.item = false
}
case 748:
{
parser.yyVAL.item = false
}
case 749:
{
parser.yyVAL.item = true
}
case 750:
{
parser.yyVAL.expr = &ast.PatternInExpr{Expr: yyS[yypt-4].expr, Not: !yyS[yypt-3].item.(bool), List: yyS[yypt-1].item.([]ast.ExprNode)}
}
case 751:
{
sq := yyS[yypt-0].expr.(*ast.SubqueryExpr)
sq.MultiRows = true
parser.yyVAL.expr = &ast.PatternInExpr{Expr: yyS[yypt-2].expr, Not: !yyS[yypt-1].item.(bool), Sel: sq}
}
case 752:
{
parser.yyVAL.expr = &ast.BetweenExpr{
Expr: yyS[yypt-4].expr,
Left: yyS[yypt-2].expr,
Right: yyS[yypt-0].expr,
Not: !yyS[yypt-3].item.(bool),
}
}
case 753:
{
escape := yyS[yypt-0].ident
if len(escape) > 1 {
yylex.AppendError(ErrWrongArguments.GenWithStackByArgs("ESCAPE"))
return 1
} else if len(escape) == 0 {
escape = "\\"
}
parser.yyVAL.expr = &ast.PatternLikeOrIlikeExpr{
Expr: yyS[yypt-3].expr,
Pattern: yyS[yypt-1].expr,
Not: !yyS[yypt-2].item.(bool),
Escape: escape[0],
IsLike: true,
}
}
case 754:
{
escape := yyS[yypt-0].ident
if len(escape) > 1 {
yylex.AppendError(ErrWrongArguments.GenWithStackByArgs("ESCAPE"))
return 1
} else if len(escape) == 0 {
escape = "\\"
}
parser.yyVAL.expr = &ast.PatternLikeOrIlikeExpr{
Expr: yyS[yypt-3].expr,
Pattern: yyS[yypt-1].expr,
Not: !yyS[yypt-2].item.(bool),
Escape: escape[0],
IsLike: false,
}
}
case 755:
{
parser.yyVAL.expr = &ast.PatternRegexpExpr{Expr: yyS[yypt-2].expr, Pattern: yyS[yypt-0].expr, Not: !yyS[yypt-1].item.(bool)}
}
case 756:
{
parser.yyVAL.expr = &ast.FuncCallExpr{FnName: ast.NewCIStr(ast.JSONMemberOf), Args: []ast.ExprNode{yyS[yypt-4].expr, yyS[yypt-1].expr}}
}
case 760:
{
parser.yyVAL.ident = "\\"
}
case 761:
{
parser.yyVAL.ident = yyS[yypt-0].ident
}
case 762:
{
parser.yyVAL.item = &ast.SelectField{WildCard: &ast.WildCardField{}}
}
case 763:
{
wildCard := &ast.WildCardField{Table: ast.NewCIStr(yyS[yypt-2].ident)}
parser.yyVAL.item = &ast.SelectField{WildCard: wildCard}
}
case 764:
{
wildCard := &ast.WildCardField{Schema: ast.NewCIStr(yyS[yypt-4].ident), Table: ast.NewCIStr(yyS[yypt-2].ident)}
parser.yyVAL.item = &ast.SelectField{WildCard: wildCard}
}
case 765:
{
expr := yyS[yypt-1].expr
asName := yyS[yypt-0].ident
parser.yyVAL.item = &ast.SelectField{Expr: expr, AsName: ast.NewCIStr(asName)}
}
case 766:
{
parser.yyVAL.ident = ""
}
case 769:
{
parser.yyVAL.ident = yyS[yypt-0].ident
}
case 771:
{
parser.yyVAL.ident = yyS[yypt-0].ident
}
case 772:
{
field := yyS[yypt-0].item.(*ast.SelectField)
field.Offset = parser.startOffset(&yyS[yypt])
if field.Expr != nil {
endOffset := parser.yylval.offset
field.SetText(parser.lexer.client, strings.TrimSpace(parser.src[field.Offset:endOffset]))
}
parser.yyVAL.item = []*ast.SelectField{field}
}
case 773:
{
fl := yyS[yypt-2].item.([]*ast.SelectField)
field := yyS[yypt-0].item.(*ast.SelectField)
field.Offset = parser.startOffset(&yyS[yypt])
if field.Expr != nil {
endOffset := parser.yylval.offset
field.SetText(parser.lexer.client, strings.TrimSpace(parser.src[field.Offset:endOffset]))
}
parser.yyVAL.item = append(fl, field)
}
case 774:
{
parser.yyVAL.item = false
}
case 775:
{
parser.yyVAL.item = true
}
case 776:
{
parser.yyVAL.item = &ast.GroupByClause{Items: yyS[yypt-1].item.([]*ast.ByItem), Rollup: yyS[yypt-0].item.(bool)}
}
case 777:
{
parser.yyVAL.item = nil
}
case 778:
{
parser.yyVAL.item = &ast.HavingClause{Expr: yyS[yypt-0].expr}
}
case 779:
{
parser.yyVAL.item = nil
}
case 781:
{
parser.yyVAL.item = &ast.AsOfClause{
TsExpr: yyS[yypt-0].expr.(ast.ExprNode),
}
}
case 782:
{
parser.yyVAL.item = false
}
case 783:
{
parser.yyVAL.item = true
}
case 784:
{
parser.yyVAL.item = false
}
case 785:
{
parser.yyVAL.item = true
}
case 786:
{
parser.yyVAL.item = false
}
case 787:
{
parser.yyVAL.item = true
}
case 788:
{
parser.yyVAL.item = &ast.NullString{
String: "",
Empty: false,
}
}
case 789:
{
parser.yyVAL.item = &ast.NullString{
String: yyS[yypt-0].ident,
Empty: len(yyS[yypt-0].ident) == 0,
}
}
case 790:
{
parser.yyVAL.item = nil
}
case 791:
{
// Merge the options
if yyS[yypt-1].item == nil {
parser.yyVAL.item = yyS[yypt-0].item
} else {
opt1 := yyS[yypt-1].item.(*ast.IndexOption)
opt2 := yyS[yypt-0].item.(*ast.IndexOption)
if len(opt2.Comment) > 0 {
opt1.Comment = opt2.Comment
} else if opt2.Tp != 0 {
opt1.Tp = opt2.Tp
} else if opt2.KeyBlockSize > 0 {
opt1.KeyBlockSize = opt2.KeyBlockSize
} else if len(opt2.ParserName.O) > 0 {
opt1.ParserName = opt2.ParserName
} else if opt2.Visibility != ast.IndexVisibilityDefault {
opt1.Visibility = opt2.Visibility
} else if opt2.PrimaryKeyTp != ast.PrimaryKeyTypeDefault {
opt1.PrimaryKeyTp = opt2.PrimaryKeyTp
} else if opt2.AddColumnarReplicaOnDemand > 0 {
opt1.AddColumnarReplicaOnDemand = opt2.AddColumnarReplicaOnDemand
} else if opt2.Global {
opt1.Global = true
} else if opt2.SplitOpt != nil {
opt1.SplitOpt = opt2.SplitOpt
} else if len(opt2.SecondaryEngineAttr) > 0 {
opt1.SecondaryEngineAttr = opt2.SecondaryEngineAttr
} else if opt2.Condition != nil {
opt1.Condition = opt2.Condition
}
parser.yyVAL.item = opt1
}
}
case 792:
{
parser.yyVAL.item = &ast.IndexOption{
KeyBlockSize: yyS[yypt-0].item.(uint64),
}
}
case 793:
{
parser.yyVAL.item = &ast.IndexOption{
AddColumnarReplicaOnDemand: 1,
}
}
case 794:
{
parser.yyVAL.item = &ast.IndexOption{
Tp: yyS[yypt-0].item.(ast.IndexType),
}
}
case 795:
{
parser.yyVAL.item = &ast.IndexOption{
ParserName: ast.NewCIStr(yyS[yypt-0].ident),
}
}
case 796:
{
parser.yyVAL.item = &ast.IndexOption{
Comment: yyS[yypt-0].ident,
}
}
case 797:
{
parser.yyVAL.item = &ast.IndexOption{
Visibility: yyS[yypt-0].item.(ast.IndexVisibility),
}
}
case 798:
{
parser.yyVAL.item = &ast.IndexOption{
PrimaryKeyTp: yyS[yypt-0].item.(ast.PrimaryKeyType),
}
}
case 799:
{
parser.yyVAL.item = &ast.IndexOption{
Global: true,
}
}
case 800:
{
parser.yyVAL.item = &ast.IndexOption{
Global: false,
}
}
case 801:
{
parser.yyVAL.item = &ast.IndexOption{
SplitOpt: yyS[yypt-1].item.(*ast.SplitOption),
}
}
case 802:
{
parser.yyVAL.item = &ast.IndexOption{
SplitOpt: &ast.SplitOption{
Num: yyS[yypt-0].item.(int64),
},
}
}
case 803:
{
parser.yyVAL.item = &ast.IndexOption{SecondaryEngineAttr: yyS[yypt-0].ident}
}
case 804:
{
parser.yyVAL.item = &ast.IndexOption{
Condition: yyS[yypt-0].expr.(ast.ExprNode),
}
}
case 805:
{
parser.yyVAL.item = []interface{}{yyS[yypt-0].item, nil}
}
case 806:
{
parser.yyVAL.item = []interface{}{yyS[yypt-2].item, yyS[yypt-0].item}
}
case 807:
{
parser.yyVAL.item = []interface{}{&ast.NullString{String: yyS[yypt-2].ident, Empty: len(yyS[yypt-2].ident) == 0}, yyS[yypt-0].item}
}
case 808:
{
parser.yyVAL.item = nil
}
case 810:
{
parser.yyVAL.item = yyS[yypt-0].item
}
case 811:
{
parser.yyVAL.item = yyS[yypt-0].item
}
case 812:
{
parser.yyVAL.item = ast.IndexTypeBtree
}
case 813:
{
parser.yyVAL.item = ast.IndexTypeHash
}
case 814:
{
parser.yyVAL.item = ast.IndexTypeRtree
}
case 815:
{
parser.yyVAL.item = ast.IndexTypeHypo
}
case 816:
{
parser.yyVAL.item = ast.IndexTypeHNSW
}
case 817:
{
parser.yyVAL.item = ast.IndexTypeInverted
}
case 818:
{
parser.yyVAL.item = ast.IndexVisibilityVisible
}
case 819:
{
parser.yyVAL.item = ast.IndexVisibilityInvisible
}
case 1388:
{
parser.yyVAL.statement = &ast.CallStmt{
Procedure: yyS[yypt-0].expr.(*ast.FuncCallExpr),
}
}
case 1389:
{
parser.yyVAL.expr = &ast.FuncCallExpr{
Tp: ast.FuncCallExprTypeGeneric,
FnName: ast.NewCIStr(yyS[yypt-0].ident),
Args: []ast.ExprNode{},
}
}
case 1390:
{
parser.yyVAL.expr = &ast.FuncCallExpr{
Tp: ast.FuncCallExprTypeGeneric,
Schema: ast.NewCIStr(yyS[yypt-2].ident),
FnName: ast.NewCIStr(yyS[yypt-0].ident),
Args: []ast.ExprNode{},
}
}
case 1391:
{
parser.yyVAL.expr = &ast.FuncCallExpr{
Tp: ast.FuncCallExprTypeGeneric,
FnName: ast.NewCIStr(yyS[yypt-3].ident),
Args: yyS[yypt-1].item.([]ast.ExprNode),
}
}
case 1392:
{
parser.yyVAL.expr = &ast.FuncCallExpr{
Tp: ast.FuncCallExprTypeGeneric,
Schema: ast.NewCIStr(yyS[yypt-5].ident),
FnName: ast.NewCIStr(yyS[yypt-3].ident),
Args: yyS[yypt-1].item.([]ast.ExprNode),
}
}
case 1393:
{
x := yyS[yypt-1].item.(*ast.InsertStmt)
x.Priority = yyS[yypt-6].item.(mysql.PriorityEnum)
x.IgnoreErr = yyS[yypt-5].item.(bool)
// Wraps many layers here so that it can be processed the same way as select statement.
ts := &ast.TableSource{Source: yyS[yypt-3].item.(*ast.TableName)}
x.Table = &ast.TableRefsClause{TableRefs: &ast.Join{Left: ts}}
if yyS[yypt-0].item != nil {
x.OnDuplicate = yyS[yypt-0].item.([]*ast.Assignment)
}
if yyS[yypt-7].item != nil {
x.TableHints = yyS[yypt-7].item.([]*ast.TableOptimizerHint)
}
x.PartitionNames = yyS[yypt-2].item.([]ast.CIStr)
parser.yyVAL.statement = x
}
case 1396:
{
parser.yyVAL.item = &ast.InsertStmt{
Columns: yyS[yypt-3].item.([]*ast.ColumnName),
Lists: yyS[yypt-0].item.([][]ast.ExprNode),
}
}
case 1397:
{
parser.yyVAL.item = &ast.InsertStmt{Columns: yyS[yypt-2].item.([]*ast.ColumnName), Select: yyS[yypt-0].statement.(ast.ResultSetNode)}
}
case 1398:
{
parser.yyVAL.item = &ast.InsertStmt{Columns: yyS[yypt-2].item.([]*ast.ColumnName), Select: yyS[yypt-0].statement.(ast.ResultSetNode)}
}
case 1399:
{
parser.yyVAL.item = &ast.InsertStmt{Columns: yyS[yypt-2].item.([]*ast.ColumnName), Select: yyS[yypt-0].statement.(ast.ResultSetNode)}
}
case 1400:
{
var sel ast.ResultSetNode
switch x := yyS[yypt-0].expr.(*ast.SubqueryExpr).Query.(type) {
case *ast.SelectStmt:
x.IsInBraces = true
sel = x
case *ast.SetOprStmt:
x.IsInBraces = true
sel = x
}
parser.yyVAL.item = &ast.InsertStmt{Columns: yyS[yypt-2].item.([]*ast.ColumnName), Select: sel}
}
case 1401:
{
parser.yyVAL.item = &ast.InsertStmt{Lists: yyS[yypt-0].item.([][]ast.ExprNode)}
}
case 1402:
{
parser.yyVAL.item = &ast.InsertStmt{Select: yyS[yypt-0].statement.(ast.ResultSetNode)}
}
case 1403:
{
parser.yyVAL.item = &ast.InsertStmt{Select: yyS[yypt-0].statement.(ast.ResultSetNode)}
}
case 1404:
{
parser.yyVAL.item = &ast.InsertStmt{Select: yyS[yypt-0].statement.(ast.ResultSetNode)}
}
case 1405:
{
var sel ast.ResultSetNode
switch x := yyS[yypt-0].expr.(*ast.SubqueryExpr).Query.(type) {
case *ast.SelectStmt:
x.IsInBraces = true
sel = x
case *ast.SetOprStmt:
x.IsInBraces = true
sel = x
}
parser.yyVAL.item = &ast.InsertStmt{Select: sel}
}
case 1406:
{
parser.yyVAL.item = yyS[yypt-0].item.(*ast.InsertStmt)
}
case 1409:
{
parser.yyVAL.item = [][]ast.ExprNode{yyS[yypt-0].item.([]ast.ExprNode)}
}
case 1410:
{
parser.yyVAL.item = append(yyS[yypt-2].item.([][]ast.ExprNode), yyS[yypt-0].item.([]ast.ExprNode))
}
case 1411:
{
parser.yyVAL.item = yyS[yypt-1].item
}
case 1412:
{
parser.yyVAL.item = []ast.ExprNode{}
}
case 1414:
{
parser.yyVAL.item = append(yyS[yypt-2].item.([]ast.ExprNode), yyS[yypt-0].expr)
}
case 1415:
{
parser.yyVAL.item = []ast.ExprNode{yyS[yypt-0].expr}
}
case 1417:
{
parser.yyVAL.expr = &ast.DefaultExpr{}
}
case 1418:
{
parser.yyVAL.item = &ast.InsertStmt{
Columns: []*ast.ColumnName{yyS[yypt-2].item.(*ast.ColumnName)},
Lists: [][]ast.ExprNode{{yyS[yypt-0].expr.(ast.ExprNode)}},
Setlist: true,
}
}
case 1419:
{
ins := yyS[yypt-4].item.(*ast.InsertStmt)
ins.Columns = append(ins.Columns, yyS[yypt-2].item.(*ast.ColumnName))
ins.Lists[0] = append(ins.Lists[0], yyS[yypt-0].expr.(ast.ExprNode))
parser.yyVAL.item = ins
}
case 1420:
{
parser.yyVAL.item = nil
}
case 1421:
{
parser.yyVAL.item = yyS[yypt-0].item
}
case 1422:
{
x := yyS[yypt-0].item.(*ast.InsertStmt)
if yyS[yypt-5].item != nil {
x.TableHints = yyS[yypt-5].item.([]*ast.TableOptimizerHint)
}
x.IsReplace = true
x.Priority = yyS[yypt-4].item.(mysql.PriorityEnum)
ts := &ast.TableSource{Source: yyS[yypt-2].item.(*ast.TableName)}
x.Table = &ast.TableRefsClause{TableRefs: &ast.Join{Left: ts}}
x.PartitionNames = yyS[yypt-1].item.([]ast.CIStr)
parser.yyVAL.statement = x
}
case 1423:
{
parser.yyVAL.expr = ast.NewValueExpr(false, parser.charset, parser.collation)
}
case 1424:
{
parser.yyVAL.expr = ast.NewValueExpr(nil, parser.charset, parser.collation)
}
case 1425:
{
parser.yyVAL.expr = ast.NewValueExpr(true, parser.charset, parser.collation)
}
case 1426:
{
parser.yyVAL.expr = ast.NewValueExpr(yyS[yypt-0].item, parser.charset, parser.collation)
}
case 1427:
{
parser.yyVAL.expr = ast.NewValueExpr(yyS[yypt-0].item, parser.charset, parser.collation)
}
case 1428:
{
parser.yyVAL.expr = ast.NewValueExpr(yyS[yypt-0].item, parser.charset, parser.collation)
}
case 1430:
{
// See https://dev.mysql.com/doc/refman/5.7/en/charset-literal.html
co, err := charset.GetDefaultCollationLegacy(yyS[yypt-1].ident)
if err != nil {
yylex.AppendError(ast.ErrUnknownCharacterSet.GenWithStack("Unsupported character introducer: '%-.64s'", yyS[yypt-1].ident))
return 1
}
expr := ast.NewValueExpr(yyS[yypt-0].ident, yyS[yypt-1].ident, co)
tp := expr.GetType()
tp.SetCharset(yyS[yypt-1].ident)
tp.SetCollate(co)
tp.AddFlag(mysql.UnderScoreCharsetFlag)
if tp.GetCollate() == charset.CollationBin {
tp.AddFlag(mysql.BinaryFlag)
}
parser.yyVAL.expr = expr
}
case 1431:
{
parser.yyVAL.expr = ast.NewValueExpr(yyS[yypt-0].item, parser.charset, parser.collation)
}
case 1432:
{
parser.yyVAL.expr = ast.NewValueExpr(yyS[yypt-0].item, parser.charset, parser.collation)
}
case 1433:
{
co, err := charset.GetDefaultCollationLegacy(yyS[yypt-1].ident)
if err != nil {
yylex.AppendError(ast.ErrUnknownCharacterSet.GenWithStack("Unsupported character introducer: '%-.64s'", yyS[yypt-1].ident))
return 1
}
expr := ast.NewValueExpr(yyS[yypt-0].item, yyS[yypt-1].ident, co)
tp := expr.GetType()
tp.SetCharset(yyS[yypt-1].ident)
tp.SetCollate(co)
tp.AddFlag(mysql.UnderScoreCharsetFlag)
if tp.GetCollate() == charset.CollationBin {
tp.AddFlag(mysql.BinaryFlag)
}
parser.yyVAL.expr = expr
}
case 1434:
{
co, err := charset.GetDefaultCollationLegacy(yyS[yypt-1].ident)
if err != nil {
yylex.AppendError(ast.ErrUnknownCharacterSet.GenWithStack("Unsupported character introducer: '%-.64s'", yyS[yypt-1].ident))
return 1
}
expr := ast.NewValueExpr(yyS[yypt-0].item, yyS[yypt-1].ident, co)
tp := expr.GetType()
tp.SetCharset(yyS[yypt-1].ident)
tp.SetCollate(co)
tp.AddFlag(mysql.UnderScoreCharsetFlag)
if tp.GetCollate() == charset.CollationBin {
tp.AddFlag(mysql.BinaryFlag)
}
parser.yyVAL.expr = expr
}
case 1435:
{
expr := ast.NewValueExpr(yyS[yypt-0].ident, parser.charset, parser.collation)
parser.yyVAL.expr = expr
}
case 1436:
{
valExpr := yyS[yypt-1].expr.(ast.ValueExpr)
strLit := valExpr.GetString()
expr := ast.NewValueExpr(strLit+yyS[yypt-0].ident, parser.charset, parser.collation)
// Fix #4239, use first string literal as projection name.
if valExpr.GetProjectionOffset() >= 0 {
expr.SetProjectionOffset(valExpr.GetProjectionOffset())
} else {
expr.SetProjectionOffset(len(strLit))
}
parser.yyVAL.expr = expr
}
case 1437:
{
parser.yyVAL.item = []*ast.AlterOrderItem{yyS[yypt-0].item.(*ast.AlterOrderItem)}
}
case 1438:
{
parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.AlterOrderItem), yyS[yypt-0].item.(*ast.AlterOrderItem))
}
case 1439:
{
parser.yyVAL.item = &ast.AlterOrderItem{Column: yyS[yypt-1].item.(*ast.ColumnName), Desc: yyS[yypt-0].item.(bool)}
}
case 1440:
{
parser.yyVAL.item = &ast.OrderByClause{Items: yyS[yypt-0].item.([]*ast.ByItem)}
}
case 1441:
{
parser.yyVAL.item = []*ast.ByItem{yyS[yypt-0].item.(*ast.ByItem)}
}
case 1442:
{
parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.ByItem), yyS[yypt-0].item.(*ast.ByItem))
}
case 1443:
{
expr := yyS[yypt-0].expr
valueExpr, ok := expr.(ast.ValueExpr)
if ok {
position, isPosition := valueExpr.GetValue().(int64)
if isPosition {
expr = &ast.PositionExpr{N: int(position)}
}
}
parser.yyVAL.item = &ast.ByItem{Expr: expr, NullOrder: true}
}
case 1444:
{
expr := yyS[yypt-1].expr
valueExpr, ok := expr.(ast.ValueExpr)
if ok {
position, isPosition := valueExpr.GetValue().(int64)
if isPosition {
expr = &ast.PositionExpr{N: int(position)}
}
}
parser.yyVAL.item = &ast.ByItem{Expr: expr, Desc: yyS[yypt-0].item.(bool)}
}
case 1445:
{
parser.yyVAL.item = false
}
case 1446:
{
parser.yyVAL.item = true
}
case 1447:
{
parser.yyVAL.item = false // ASC by default
}
case 1448:
{
parser.yyVAL.item = false
}
case 1449:
{
parser.yyVAL.item = true
}
case 1450:
{
parser.yyVAL.item = nil
}
case 1452:
{
parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.Or, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr}
}
case 1453:
{
parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.And, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr}
}
case 1454:
{
parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.LeftShift, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr}
}
case 1455:
{
parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.RightShift, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr}
}
case 1456:
{
parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.Plus, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr}
}
case 1457:
{
parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.Minus, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr}
}
case 1458:
{
parser.yyVAL.expr = &ast.FuncCallExpr{
FnName: ast.NewCIStr("DATE_ADD"),
Args: []ast.ExprNode{
yyS[yypt-4].expr,
yyS[yypt-1].expr,
&ast.TimeUnitExpr{Unit: yyS[yypt-0].item.(ast.TimeUnitType)},
},
}
}
case 1459:
{
parser.yyVAL.expr = &ast.FuncCallExpr{
FnName: ast.NewCIStr("DATE_SUB"),
Args: []ast.ExprNode{
yyS[yypt-4].expr,
yyS[yypt-1].expr,
&ast.TimeUnitExpr{Unit: yyS[yypt-0].item.(ast.TimeUnitType)},
},
}
}
case 1460:
{
parser.yyVAL.expr = &ast.FuncCallExpr{
FnName: ast.NewCIStr("DATE_ADD"),
Args: []ast.ExprNode{
yyS[yypt-0].expr,
yyS[yypt-3].expr,
&ast.TimeUnitExpr{Unit: yyS[yypt-2].item.(ast.TimeUnitType)},
},
}
}
case 1461:
{
parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.Mul, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr}
}
case 1462:
{
parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.Div, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr}
}
case 1463:
{
parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.Mod, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr}
}
case 1464:
{
parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.IntDiv, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr}
}
case 1465:
{
parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.Mod, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr}
}
case 1466:
{
parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.Xor, L: yyS[yypt-2].expr, R: yyS[yypt-0].expr}
}
case 1468:
{
parser.yyVAL.expr = &ast.ColumnNameExpr{Name: &ast.ColumnName{
Name: ast.NewCIStr(yyS[yypt-0].ident),
}}
}
case 1469:
{
parser.yyVAL.expr = &ast.ColumnNameExpr{Name: &ast.ColumnName{
Table: ast.NewCIStr(yyS[yypt-2].ident),
Name: ast.NewCIStr(yyS[yypt-0].ident),
}}
}
case 1470:
{
parser.yyVAL.expr = &ast.ColumnNameExpr{Name: &ast.ColumnName{
Schema: ast.NewCIStr(yyS[yypt-4].ident),
Table: ast.NewCIStr(yyS[yypt-2].ident),
Name: ast.NewCIStr(yyS[yypt-0].ident),
}}
}
case 1475:
{
parser.yyVAL.expr = &ast.SetCollationExpr{Expr: yyS[yypt-2].expr, Collate: yyS[yypt-0].ident}
}
case 1478:
{
parser.yyVAL.expr = ast.NewParamMarkerExpr(yyS[yypt].offset)
}
case 1481:
{
parser.yyVAL.expr = &ast.UnaryOperationExpr{Op: opcode.Not2, V: yyS[yypt-0].expr}
}
case 1482:
{
parser.yyVAL.expr = &ast.UnaryOperationExpr{Op: opcode.BitNeg, V: yyS[yypt-0].expr}
}
case 1483:
{
parser.yyVAL.expr = &ast.UnaryOperationExpr{Op: opcode.Minus, V: yyS[yypt-0].expr}
}
case 1484:
{
parser.yyVAL.expr = &ast.UnaryOperationExpr{Op: opcode.Plus, V: yyS[yypt-0].expr}
}
case 1485:
{
parser.yyVAL.expr = &ast.FuncCallExpr{FnName: ast.NewCIStr(ast.Concat), Args: []ast.ExprNode{yyS[yypt-2].expr, yyS[yypt-0].expr}}
}
case 1486:
{
parser.yyVAL.expr = &ast.UnaryOperationExpr{Op: opcode.Not2, V: yyS[yypt-0].expr}
}
case 1488:
{
startOffset := parser.startOffset(&yyS[yypt-1])
endOffset := parser.endOffset(&yyS[yypt])
expr := yyS[yypt-1].expr
expr.SetText(parser.lexer.client, parser.src[startOffset:endOffset])
parser.yyVAL.expr = &ast.ParenthesesExpr{Expr: expr}
}
case 1489:
{
values := append(yyS[yypt-3].item.([]ast.ExprNode), yyS[yypt-1].expr)
parser.yyVAL.expr = &ast.RowExpr{Values: values}
}
case 1490:
{
values := append(yyS[yypt-3].item.([]ast.ExprNode), yyS[yypt-1].expr)
parser.yyVAL.expr = &ast.RowExpr{Values: values}
}
case 1491:
{
sq := yyS[yypt-0].expr.(*ast.SubqueryExpr)
sq.Exists = true
parser.yyVAL.expr = &ast.ExistsSubqueryExpr{Sel: sq}
}
case 1492:
{
/*
* ODBC escape syntax.
* See https://dev.mysql.com/doc/refman/5.7/en/expressions.html
*/
tp := yyS[yypt-1].expr.GetType()
switch yyS[yypt-2].ident {
case "d":
tp.SetCharset("")
tp.SetCollate("")
parser.yyVAL.expr = &ast.FuncCallExpr{FnName: ast.NewCIStr(ast.DateLiteral), Args: []ast.ExprNode{yyS[yypt-1].expr}}
case "t":
tp.SetCharset("")
tp.SetCollate("")
parser.yyVAL.expr = &ast.FuncCallExpr{FnName: ast.NewCIStr(ast.TimeLiteral), Args: []ast.ExprNode{yyS[yypt-1].expr}}
case "ts":
tp.SetCharset("")
tp.SetCollate("")
parser.yyVAL.expr = &ast.FuncCallExpr{FnName: ast.NewCIStr(ast.TimestampLiteral), Args: []ast.ExprNode{yyS[yypt-1].expr}}
default:
parser.yyVAL.expr = yyS[yypt-1].expr
}
}
case 1493:
{
// See https://dev.mysql.com/doc/refman/5.7/en/cast-functions.html#operator_binary
tp := types.NewFieldType(mysql.TypeString)
tp.SetCharset(charset.CharsetBin)
tp.SetCollate(charset.CharsetBin)
tp.AddFlag(mysql.BinaryFlag)
parser.yyVAL.expr = &ast.FuncCastExpr{
Expr: yyS[yypt-0].expr,
Tp: tp,
FunctionType: ast.CastBinaryOperator,
}
}
case 1494:
{
/* See https://dev.mysql.com/doc/refman/5.7/en/cast-functions.html#function_cast */
tp := yyS[yypt-2].item.(*types.FieldType)
defaultFlen, defaultDecimal := mysql.GetDefaultFieldLengthAndDecimalForCast(tp.GetType())
if tp.GetFlen() == types.UnspecifiedLength {
tp.SetFlen(defaultFlen)
}
if tp.GetDecimal() == types.UnspecifiedLength {
tp.SetDecimal(defaultDecimal)
}
isArray := yyS[yypt-1].item.(bool)
tp.SetArray(isArray)
explicitCharset := parser.explicitCharset
if isArray && !explicitCharset && tp.GetCharset() != charset.CharsetBin {
tp.SetCharset(charset.CharsetUTF8MB4)
tp.SetCollate(charset.CollationUTF8MB4)
}
parser.explicitCharset = false
parser.yyVAL.expr = &ast.FuncCastExpr{
Expr: yyS[yypt-4].expr,
Tp: tp,
FunctionType: ast.CastFunction,
ExplicitCharSet: explicitCharset,
}
}
case 1495:
{
/* Copied from CAST function, except that ARRAY is enforced to be true */
tp := yyS[yypt-2].item.(*types.FieldType)
defaultFlen, defaultDecimal := mysql.GetDefaultFieldLengthAndDecimalForCast(tp.GetType())
if tp.GetFlen() == types.UnspecifiedLength {
tp.SetFlen(defaultFlen)
}
if tp.GetDecimal() == types.UnspecifiedLength {
tp.SetDecimal(defaultDecimal)
}
tp.SetArray(true)
explicitCharset := parser.explicitCharset
if !explicitCharset && tp.GetCharset() != charset.CharsetBin {
tp.SetCharset(charset.CharsetUTF8MB4)
tp.SetCollate(charset.CollationUTF8MB4)
}
parser.explicitCharset = false
parser.yyVAL.expr = &ast.JSONSumCrc32Expr{
Expr: yyS[yypt-4].expr,
Tp: tp,
ExplicitCharSet: explicitCharset,
}
}
case 1496:
{
x := &ast.CaseExpr{WhenClauses: yyS[yypt-2].item.([]*ast.WhenClause)}
if yyS[yypt-3].expr != nil {
x.Value = yyS[yypt-3].expr
}
if yyS[yypt-1].item != nil {
x.ElseClause = yyS[yypt-1].item.(ast.ExprNode)
}
parser.yyVAL.expr = x
}
case 1497:
{
// See https://dev.mysql.com/doc/refman/5.7/en/cast-functions.html#function_convert
tp := yyS[yypt-1].item.(*types.FieldType)
defaultFlen, defaultDecimal := mysql.GetDefaultFieldLengthAndDecimalForCast(tp.GetType())
if tp.GetFlen() == types.UnspecifiedLength {
tp.SetFlen(defaultFlen)
}
if tp.GetDecimal() == types.UnspecifiedLength {
tp.SetDecimal(defaultDecimal)
}
explicitCharset := parser.explicitCharset
parser.explicitCharset = false
parser.yyVAL.expr = &ast.FuncCastExpr{
Expr: yyS[yypt-3].expr,
Tp: tp,
FunctionType: ast.CastConvertFunction,
ExplicitCharSet: explicitCharset,
}
}
case 1498:
{
// See https://dev.mysql.com/doc/refman/5.7/en/cast-functions.html#function_convert
charset1 := ast.NewValueExpr(yyS[yypt-1].ident, "", "")
parser.yyVAL.expr = &ast.FuncCallExpr{
FnName: ast.NewCIStr(yyS[yypt-5].ident),
Args: []ast.ExprNode{yyS[yypt-3].expr, charset1},
}
}
case 1499:
{
parser.yyVAL.expr = &ast.DefaultExpr{Name: yyS[yypt-1].expr.(*ast.ColumnNameExpr).Name}
}
case 1500:
{
parser.yyVAL.expr = &ast.ValuesExpr{Column: yyS[yypt-1].expr.(*ast.ColumnNameExpr)}
}
case 1501:
{
expr := ast.NewValueExpr(yyS[yypt-0].ident, parser.charset, parser.collation)
parser.yyVAL.expr = &ast.FuncCallExpr{FnName: ast.NewCIStr(ast.JSONExtract), Args: []ast.ExprNode{yyS[yypt-2].expr, expr}}
}
case 1502:
{
expr := ast.NewValueExpr(yyS[yypt-0].ident, parser.charset, parser.collation)
extract := &ast.FuncCallExpr{FnName: ast.NewCIStr(ast.JSONExtract), Args: []ast.ExprNode{yyS[yypt-2].expr, expr}}
parser.yyVAL.expr = &ast.FuncCallExpr{FnName: ast.NewCIStr(ast.JSONUnquote), Args: []ast.ExprNode{extract}}
}
case 1503:
{
parser.yyVAL.item = false
}
case 1504:
{
parser.yyVAL.item = true
}
case 1507:
{
parser.yyVAL.item = false
}
case 1508:
{
parser.yyVAL.item = true
}
case 1509:
{
parser.yyVAL.item = false
}
case 1511:
{
parser.yyVAL.item = true
}
case 1514:
{
parser.yyVAL.item = true
}
case 1559:
{
parser.yyVAL.expr = &ast.FuncCallExpr{FnName: ast.NewCIStr(yyS[yypt-3].ident), Args: yyS[yypt-1].item.([]ast.ExprNode)}
}
case 1560:
{
parser.yyVAL.expr = &ast.FuncCallExpr{FnName: ast.NewCIStr(yyS[yypt-3].ident), Args: yyS[yypt-1].item.([]ast.ExprNode)}
}
case 1561:
{
parser.yyVAL.expr = &ast.FuncCallExpr{FnName: ast.NewCIStr(yyS[yypt-1].ident)}
}
case 1562:
{
parser.yyVAL.expr = &ast.FuncCallExpr{FnName: ast.NewCIStr(yyS[yypt-2].ident)}
}
case 1563:
{
args := []ast.ExprNode{}
if yyS[yypt-0].item != nil {
args = append(args, yyS[yypt-0].item.(ast.ExprNode))
}
parser.yyVAL.expr = &ast.FuncCallExpr{FnName: ast.NewCIStr(yyS[yypt-1].ident), Args: args}
}
case 1564:
{
nilVal := ast.NewValueExpr(nil, parser.charset, parser.collation)
args := yyS[yypt-1].item.([]ast.ExprNode)
parser.yyVAL.expr = &ast.FuncCallExpr{
FnName: ast.NewCIStr(ast.CharFunc),
Args: append(args, nilVal),
}
}
case 1565:
{
charset1 := ast.NewValueExpr(yyS[yypt-1].ident, "", "")
args := yyS[yypt-3].item.([]ast.ExprNode)
parser.yyVAL.expr = &ast.FuncCallExpr{
FnName: ast.NewCIStr(ast.CharFunc),
Args: append(args, charset1),
}
}
case 1566:
{
expr := ast.NewValueExpr(yyS[yypt-0].ident, "", "")
parser.yyVAL.expr = &ast.FuncCallExpr{FnName: ast.NewCIStr(ast.DateLiteral), Args: []ast.ExprNode{expr}}
}
case 1567:
{
expr := ast.NewValueExpr(yyS[yypt-0].ident, "", "")
parser.yyVAL.expr = &ast.FuncCallExpr{FnName: ast.NewCIStr(ast.TimeLiteral), Args: []ast.ExprNode{expr}}
}
case 1568:
{
expr := ast.NewValueExpr(yyS[yypt-0].ident, "", "")
parser.yyVAL.expr = &ast.FuncCallExpr{FnName: ast.NewCIStr(ast.TimestampLiteral), Args: []ast.ExprNode{expr}}
}
case 1569:
{
parser.yyVAL.expr = &ast.FuncCallExpr{FnName: ast.NewCIStr(ast.InsertFunc), Args: yyS[yypt-1].item.([]ast.ExprNode)}
}
case 1570:
{
parser.yyVAL.expr = &ast.BinaryOperationExpr{Op: opcode.Mod, L: yyS[yypt-3].expr, R: yyS[yypt-1].expr}
}
case 1571:
{
parser.yyVAL.expr = &ast.FuncCallExpr{FnName: ast.NewCIStr(ast.PasswordFunc), Args: yyS[yypt-1].item.([]ast.ExprNode)}
}
case 1572:
{
parser.yyVAL.expr = &ast.FuncCallExpr{FnName: ast.NewCIStr(yyS[yypt-3].ident), Args: yyS[yypt-1].item.([]ast.ExprNode)}
}
case 1573:
{
parser.yyVAL.expr = &ast.FuncCallExpr{FnName: ast.NewCIStr(yyS[yypt-3].ident), Args: yyS[yypt-1].item.([]ast.ExprNode)}
}
case 1574:
{
parser.yyVAL.expr = &ast.FuncCallExpr{
FnName: ast.NewCIStr(yyS[yypt-5].ident),
Args: []ast.ExprNode{
yyS[yypt-3].expr,
yyS[yypt-1].expr,
&ast.TimeUnitExpr{Unit: ast.TimeUnitDay},
},
}
}
case 1575:
{
parser.yyVAL.expr = &ast.FuncCallExpr{
FnName: ast.NewCIStr(yyS[yypt-7].ident),
Args: []ast.ExprNode{
yyS[yypt-5].expr,
yyS[yypt-2].expr,
&ast.TimeUnitExpr{Unit: yyS[yypt-1].item.(ast.TimeUnitType)},
},
}
}
case 1576:
{
parser.yyVAL.expr = &ast.FuncCallExpr{
FnName: ast.NewCIStr(yyS[yypt-7].ident),
Args: []ast.ExprNode{
yyS[yypt-5].expr,
yyS[yypt-2].expr,
&ast.TimeUnitExpr{Unit: yyS[yypt-1].item.(ast.TimeUnitType)},
},
}
}
case 1577:
{
timeUnit := &ast.TimeUnitExpr{Unit: yyS[yypt-3].item.(ast.TimeUnitType)}
parser.yyVAL.expr = &ast.FuncCallExpr{
FnName: ast.NewCIStr(yyS[yypt-5].ident),
Args: []ast.ExprNode{timeUnit, yyS[yypt-1].expr},
}
}
case 1578:
{
parser.yyVAL.expr = &ast.FuncCallExpr{
FnName: ast.NewCIStr(yyS[yypt-5].ident),
Args: []ast.ExprNode{
&ast.GetFormatSelectorExpr{Selector: yyS[yypt-3].item.(ast.GetFormatSelectorType)},
yyS[yypt-1].expr,
},
}
}
case 1579:
{
parser.yyVAL.expr = &ast.FuncCallExpr{FnName: ast.NewCIStr(yyS[yypt-5].ident), Args: []ast.ExprNode{yyS[yypt-3].expr, yyS[yypt-1].expr}}
}
case 1580:
{
parser.yyVAL.expr = &ast.FuncCallExpr{
FnName: ast.NewCIStr(yyS[yypt-5].ident),
Args: []ast.ExprNode{yyS[yypt-3].expr, yyS[yypt-1].expr},
}
}
case 1581:
{
parser.yyVAL.expr = &ast.FuncCallExpr{
FnName: ast.NewCIStr(yyS[yypt-5].ident),
Args: []ast.ExprNode{yyS[yypt-3].expr, yyS[yypt-1].expr},
}
}
case 1582:
{
parser.yyVAL.expr = &ast.FuncCallExpr{
FnName: ast.NewCIStr(yyS[yypt-7].ident),
Args: []ast.ExprNode{yyS[yypt-5].expr, yyS[yypt-3].expr, yyS[yypt-1].expr},
}
}
case 1583:
{
parser.yyVAL.expr = &ast.FuncCallExpr{
FnName: ast.NewCIStr(yyS[yypt-7].ident),
Args: []ast.ExprNode{yyS[yypt-5].expr, yyS[yypt-3].expr, yyS[yypt-1].expr},
}
}
case 1584:
{
parser.yyVAL.expr = &ast.FuncCallExpr{
FnName: ast.NewCIStr(yyS[yypt-7].ident),
Args: []ast.ExprNode{&ast.TimeUnitExpr{Unit: yyS[yypt-5].item.(ast.TimeUnitType)}, yyS[yypt-3].expr, yyS[yypt-1].expr},
}
}
case 1585:
{
parser.yyVAL.expr = &ast.FuncCallExpr{
FnName: ast.NewCIStr(yyS[yypt-7].ident),
Args: []ast.ExprNode{&ast.TimeUnitExpr{Unit: yyS[yypt-5].item.(ast.TimeUnitType)}, yyS[yypt-3].expr, yyS[yypt-1].expr},
}
}
case 1586:
{
parser.yyVAL.expr = &ast.FuncCallExpr{
FnName: ast.NewCIStr(yyS[yypt-3].ident),
Args: []ast.ExprNode{yyS[yypt-1].expr},
}
}
case 1587:
{
parser.yyVAL.expr = &ast.FuncCallExpr{
FnName: ast.NewCIStr(yyS[yypt-5].ident),
Args: []ast.ExprNode{yyS[yypt-1].expr, yyS[yypt-3].expr},
}
}
case 1588:
{
spaceVal := ast.NewValueExpr(" ", parser.charset, parser.collation)
direction := &ast.TrimDirectionExpr{Direction: yyS[yypt-3].item.(ast.TrimDirectionType)}
parser.yyVAL.expr = &ast.FuncCallExpr{
FnName: ast.NewCIStr(yyS[yypt-5].ident),
Args: []ast.ExprNode{yyS[yypt-1].expr, spaceVal, direction},
}
}
case 1589:
{
direction := &ast.TrimDirectionExpr{Direction: yyS[yypt-4].item.(ast.TrimDirectionType)}
parser.yyVAL.expr = &ast.FuncCallExpr{
FnName: ast.NewCIStr(yyS[yypt-6].ident),
Args: []ast.ExprNode{yyS[yypt-1].expr, yyS[yypt-3].expr, direction},
}
}
case 1590:
{
parser.yyVAL.expr = &ast.FuncCallExpr{
FnName: ast.NewCIStr(yyS[yypt-3].ident),
Args: []ast.ExprNode{yyS[yypt-1].expr},
}
}
case 1591:
{
parser.yyVAL.expr = &ast.FuncCallExpr{
FnName: ast.NewCIStr(yyS[yypt-6].ident),
Args: []ast.ExprNode{yyS[yypt-4].expr, ast.NewValueExpr("CHAR", parser.charset, parser.collation), ast.NewValueExpr(yyS[yypt-1].item, parser.charset, parser.collation)},
}
}
case 1592:
{
parser.yyVAL.expr = &ast.FuncCallExpr{
FnName: ast.NewCIStr(yyS[yypt-6].ident),
Args: []ast.ExprNode{yyS[yypt-4].expr, ast.NewValueExpr("BINARY", parser.charset, parser.collation), ast.NewValueExpr(yyS[yypt-1].item, parser.charset, parser.collation)},
}
}
case 1594:
{
parser.yyVAL.expr = &ast.FuncCallExpr{
FnName: ast.NewCIStr(yyS[yypt-7].ident),
Args: []ast.ExprNode{yyS[yypt-5].expr, yyS[yypt-3].expr, yyS[yypt-1].expr},
}
}
case 1595:
{
parser.yyVAL.expr = &ast.FuncCallExpr{FnName: ast.NewCIStr(yyS[yypt-3].ident), Args: yyS[yypt-1].item.([]ast.ExprNode)}
}
case 1596:
{
parser.yyVAL.item = ast.GetFormatSelectorDate
}
case 1597:
{
parser.yyVAL.item = ast.GetFormatSelectorDatetime
}
case 1598:
{
parser.yyVAL.item = ast.GetFormatSelectorTime
}
case 1599:
{
parser.yyVAL.item = ast.GetFormatSelectorDatetime
}
case 1604:
{
parser.yyVAL.item = ast.TrimBoth
}
case 1605:
{
parser.yyVAL.item = ast.TrimLeading
}
case 1606:
{
parser.yyVAL.item = ast.TrimTrailing
}
case 1607:
{
objNameExpr := &ast.TableNameExpr{
Name: yyS[yypt-1].item.(*ast.TableName),
}
parser.yyVAL.expr = &ast.FuncCallExpr{
FnName: ast.NewCIStr(ast.LastVal),
Args: []ast.ExprNode{objNameExpr},
}
}
case 1608:
{
objNameExpr := &ast.TableNameExpr{
Name: yyS[yypt-3].item.(*ast.TableName),
}
valueExpr := ast.NewValueExpr(yyS[yypt-1].item, parser.charset, parser.collation)
parser.yyVAL.expr = &ast.FuncCallExpr{
FnName: ast.NewCIStr(ast.SetVal),
Args: []ast.ExprNode{objNameExpr, valueExpr},
}
}
case 1610:
{
if yyS[yypt-0].item != nil {
parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Distinct: yyS[yypt-3].item.(bool), Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))}
} else {
parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Distinct: yyS[yypt-3].item.(bool)}
}
}
case 1611:
{
parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-3].ident, Args: yyS[yypt-1].item.([]ast.ExprNode), Distinct: false}
}
case 1612:
{
parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-3].ident, Args: yyS[yypt-1].item.([]ast.ExprNode)}
}
case 1613:
{
if yyS[yypt-0].item != nil {
parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-4].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))}
} else {
parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-4].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}}
}
}
case 1614:
{
if yyS[yypt-0].item != nil {
parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))}
} else {
parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}}
}
}
case 1615:
{
if yyS[yypt-0].item != nil {
parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-4].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))}
} else {
parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-4].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}}
}
}
case 1616:
{
if yyS[yypt-0].item != nil {
parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))}
} else {
parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}}
}
}
case 1617:
{
if yyS[yypt-0].item != nil {
parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-4].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))}
} else {
parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-4].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}}
}
}
case 1618:
{
if yyS[yypt-0].item != nil {
parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))}
} else {
parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}}
}
}
case 1619:
{
parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-4].ident, Args: yyS[yypt-1].item.([]ast.ExprNode), Distinct: true}
}
case 1620:
{
if yyS[yypt-0].item != nil {
parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))}
} else {
parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}}
}
}
case 1621:
{
if yyS[yypt-0].item != nil {
parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-4].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))}
} else {
parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-4].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}}
}
}
case 1622:
{
args := []ast.ExprNode{ast.NewValueExpr(1, parser.charset, parser.collation)}
if yyS[yypt-0].item != nil {
parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-4].ident, Args: args, Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))}
} else {
parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-4].ident, Args: args}
}
}
case 1623:
{
args := yyS[yypt-4].item.([]ast.ExprNode)
args = append(args, yyS[yypt-2].item.(ast.ExprNode))
if yyS[yypt-0].item != nil {
parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-7].ident, Args: args, Distinct: yyS[yypt-5].item.(bool), Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))}
} else {
agg := &ast.AggregateFuncExpr{F: yyS[yypt-7].ident, Args: args, Distinct: yyS[yypt-5].item.(bool)}
if yyS[yypt-3].item != nil {
agg.Order = yyS[yypt-3].item.(*ast.OrderByClause)
}
parser.yyVAL.expr = agg
}
}
case 1624:
{
if yyS[yypt-0].item != nil {
parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Distinct: yyS[yypt-3].item.(bool), Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))}
} else {
parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Distinct: yyS[yypt-3].item.(bool)}
}
}
case 1625:
{
if yyS[yypt-0].item != nil {
parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Distinct: yyS[yypt-3].item.(bool), Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))}
} else {
parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Distinct: yyS[yypt-3].item.(bool)}
}
}
case 1626:
{
if yyS[yypt-0].item != nil {
parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Distinct: yyS[yypt-3].item.(bool), Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))}
} else {
parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Distinct: yyS[yypt-3].item.(bool)}
}
}
case 1627:
{
if yyS[yypt-0].item != nil {
parser.yyVAL.expr = &ast.WindowFuncExpr{Name: ast.AggFuncStddevPop, Args: []ast.ExprNode{yyS[yypt-2].expr}, Distinct: yyS[yypt-3].item.(bool), Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))}
} else {
parser.yyVAL.expr = &ast.AggregateFuncExpr{F: ast.AggFuncStddevPop, Args: []ast.ExprNode{yyS[yypt-2].expr}, Distinct: yyS[yypt-3].item.(bool)}
}
}
case 1628:
{
if yyS[yypt-0].item != nil {
parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Distinct: yyS[yypt-3].item.(bool), Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))}
} else {
parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Distinct: yyS[yypt-3].item.(bool)}
}
}
case 1629:
{
if yyS[yypt-0].item != nil {
parser.yyVAL.expr = &ast.WindowFuncExpr{Name: ast.AggFuncVarPop, Args: []ast.ExprNode{yyS[yypt-2].expr}, Distinct: yyS[yypt-3].item.(bool), Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))}
} else {
parser.yyVAL.expr = &ast.AggregateFuncExpr{F: ast.AggFuncVarPop, Args: []ast.ExprNode{yyS[yypt-2].expr}, Distinct: yyS[yypt-3].item.(bool)}
}
}
case 1630:
{
if yyS[yypt-0].item != nil {
parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Distinct: yyS[yypt-3].item.(bool), Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))}
} else {
parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Distinct: yyS[yypt-3].item.(bool)}
}
}
case 1631:
{
if yyS[yypt-0].item != nil {
parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-4].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))}
} else {
parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-4].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}}
}
}
case 1632:
{
if yyS[yypt-0].item != nil {
parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))}
} else {
parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}}
}
}
case 1633:
{
if yyS[yypt-0].item != nil {
parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-6].ident, Args: []ast.ExprNode{yyS[yypt-4].expr, yyS[yypt-2].expr}, Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))}
} else {
parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-6].ident, Args: []ast.ExprNode{yyS[yypt-4].expr, yyS[yypt-2].expr}}
}
}
case 1634:
{
if yyS[yypt-0].item != nil {
parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-7].ident, Args: []ast.ExprNode{yyS[yypt-4].expr, yyS[yypt-2].expr}, Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))}
} else {
parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-7].ident, Args: []ast.ExprNode{yyS[yypt-4].expr, yyS[yypt-2].expr}}
}
}
case 1635:
{
if yyS[yypt-0].item != nil {
parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-7].ident, Args: []ast.ExprNode{yyS[yypt-5].expr, yyS[yypt-2].expr}, Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))}
} else {
parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-7].ident, Args: []ast.ExprNode{yyS[yypt-5].expr, yyS[yypt-2].expr}}
}
}
case 1636:
{
if yyS[yypt-0].item != nil {
parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-8].ident, Args: []ast.ExprNode{yyS[yypt-5].expr, yyS[yypt-2].expr}, Spec: *(yyS[yypt-0].item.(*ast.WindowSpec))}
} else {
parser.yyVAL.expr = &ast.AggregateFuncExpr{F: yyS[yypt-8].ident, Args: []ast.ExprNode{yyS[yypt-5].expr, yyS[yypt-2].expr}}
}
}
case 1637:
{
parser.yyVAL.item = ast.NewValueExpr(",", "", "")
}
case 1638:
{
parser.yyVAL.item = ast.NewValueExpr(yyS[yypt-0].ident, "", "")
}
case 1639:
{
parser.yyVAL.expr = &ast.FuncCallExpr{
FnName: ast.NewCIStr(yyS[yypt-3].ident),
Args: yyS[yypt-1].item.([]ast.ExprNode),
}
}
case 1640:
{
var tp ast.FuncCallExprType
if isInTokenMap(yyS[yypt-3].ident) {
tp = ast.FuncCallExprTypeKeyword
} else {
tp = ast.FuncCallExprTypeGeneric
}
parser.yyVAL.expr = &ast.FuncCallExpr{
Tp: tp,
Schema: ast.NewCIStr(yyS[yypt-5].ident),
FnName: ast.NewCIStr(yyS[yypt-3].ident),
Args: yyS[yypt-1].item.([]ast.ExprNode),
}
}
case 1641:
{
parser.yyVAL.item = nil
}
case 1642:
{
parser.yyVAL.item = nil
}
case 1643:
{
expr := ast.NewValueExpr(yyS[yypt-1].item, parser.charset, parser.collation)
parser.yyVAL.item = expr
}
case 1645:
{
parser.yyVAL.item = ast.TimeUnitSecondMicrosecond
}
case 1646:
{
parser.yyVAL.item = ast.TimeUnitMinuteMicrosecond
}
case 1647:
{
parser.yyVAL.item = ast.TimeUnitMinuteSecond
}
case 1648:
{
parser.yyVAL.item = ast.TimeUnitHourMicrosecond
}
case 1649:
{
parser.yyVAL.item = ast.TimeUnitHourSecond
}
case 1650:
{
parser.yyVAL.item = ast.TimeUnitHourMinute
}
case 1651:
{
parser.yyVAL.item = ast.TimeUnitDayMicrosecond
}
case 1652:
{
parser.yyVAL.item = ast.TimeUnitDaySecond
}
case 1653:
{
parser.yyVAL.item = ast.TimeUnitDayMinute
}
case 1654:
{
parser.yyVAL.item = ast.TimeUnitDayHour
}
case 1655:
{
parser.yyVAL.item = ast.TimeUnitYearMonth
}
case 1656:
{
parser.yyVAL.item = ast.TimeUnitMicrosecond
}
case 1657:
{
parser.yyVAL.item = ast.TimeUnitSecond
}
case 1658:
{
parser.yyVAL.item = ast.TimeUnitMinute
}
case 1659:
{
parser.yyVAL.item = ast.TimeUnitHour
}
case 1660:
{
parser.yyVAL.item = ast.TimeUnitDay
}
case 1661:
{
parser.yyVAL.item = ast.TimeUnitWeek
}
case 1662:
{
parser.yyVAL.item = ast.TimeUnitMonth
}
case 1663:
{
parser.yyVAL.item = ast.TimeUnitQuarter
}
case 1664:
{
parser.yyVAL.item = ast.TimeUnitYear
}
case 1665:
{
parser.yyVAL.item = ast.TimeUnitSecond
}
case 1666:
{
parser.yyVAL.item = ast.TimeUnitMinute
}
case 1667:
{
parser.yyVAL.item = ast.TimeUnitHour
}
case 1668:
{
parser.yyVAL.item = ast.TimeUnitDay
}
case 1669:
{
parser.yyVAL.item = ast.TimeUnitWeek
}
case 1670:
{
parser.yyVAL.item = ast.TimeUnitMonth
}
case 1671:
{
parser.yyVAL.item = ast.TimeUnitQuarter
}
case 1672:
{
parser.yyVAL.item = ast.TimeUnitYear
}
case 1673:
{
parser.yyVAL.expr = nil
}
case 1675:
{
parser.yyVAL.item = []*ast.WhenClause{yyS[yypt-0].item.(*ast.WhenClause)}
}
case 1676:
{
parser.yyVAL.item = append(yyS[yypt-1].item.([]*ast.WhenClause), yyS[yypt-0].item.(*ast.WhenClause))
}
case 1677:
{
parser.yyVAL.item = &ast.WhenClause{
Expr: yyS[yypt-2].expr,
Result: yyS[yypt-0].expr,
}
}
case 1678:
{
parser.yyVAL.item = nil
}
case 1679:
{
parser.yyVAL.item = yyS[yypt-0].expr
}
case 1680:
{
tp := types.NewFieldType(mysql.TypeVarString)
tp.SetFlen(yyS[yypt-0].item.(int)) // TODO: Flen should be the flen of expression
if tp.GetFlen() != types.UnspecifiedLength {
tp.SetType(mysql.TypeString)
}
tp.SetCharset(charset.CharsetBin)
tp.SetCollate(charset.CollationBin)
tp.AddFlag(mysql.BinaryFlag)
parser.yyVAL.item = tp
}
case 1681:
{
tp := types.NewFieldType(mysql.TypeVarString)
tp.SetFlen(yyS[yypt-1].item.(int)) // TODO: Flen should be the flen of expression
tp.SetCharset(yyS[yypt-0].item.(*ast.OptBinary).Charset)
if yyS[yypt-0].item.(*ast.OptBinary).IsBinary {
tp.AddFlag(mysql.BinaryFlag)
tp.SetCharset(charset.CharsetBin)
tp.SetCollate(charset.CollationBin)
} else if tp.GetCharset() != "" {
co, err := charset.GetDefaultCollation(tp.GetCharset())
if err != nil {
yylex.AppendError(yylex.Errorf("Get collation error for charset: %s", tp.GetCharset()))
return 1
}
tp.SetCollate(co)
parser.explicitCharset = true
} else {
tp.SetCharset(parser.charset)
tp.SetCollate(parser.collation)
}
parser.yyVAL.item = tp
}
case 1682:
{
tp := types.NewFieldType(mysql.TypeDate)
tp.SetCharset(charset.CharsetBin)
tp.SetCollate(charset.CollationBin)
tp.AddFlag(mysql.BinaryFlag)
parser.yyVAL.item = tp
}
case 1683:
{
tp := types.NewFieldType(mysql.TypeYear)
tp.SetCharset(charset.CharsetBin)
tp.SetCollate(charset.CollationBin)
tp.AddFlag(mysql.BinaryFlag)
parser.yyVAL.item = tp
}
case 1684:
{
tp := types.NewFieldType(mysql.TypeDatetime)
flen, _ := mysql.GetDefaultFieldLengthAndDecimalForCast(mysql.TypeDatetime)
tp.SetFlen(flen)
tp.SetDecimal(yyS[yypt-0].item.(int))
if tp.GetDecimal() > 0 {
tp.SetFlen(tp.GetFlen() + 1 + tp.GetDecimal())
}
tp.SetCharset(charset.CharsetBin)
tp.SetCollate(charset.CollationBin)
tp.AddFlag(mysql.BinaryFlag)
parser.yyVAL.item = tp
}
case 1685:
{
fopt := yyS[yypt-0].item.(*ast.FloatOpt)
tp := types.NewFieldType(mysql.TypeNewDecimal)
tp.SetFlen(fopt.Flen)
tp.SetDecimal(fopt.Decimal)
tp.SetCharset(charset.CharsetBin)
tp.SetCollate(charset.CollationBin)
tp.AddFlag(mysql.BinaryFlag)
parser.yyVAL.item = tp
}
case 1686:
{
tp := types.NewFieldType(mysql.TypeDuration)
flen, _ := mysql.GetDefaultFieldLengthAndDecimalForCast(mysql.TypeDuration)
tp.SetFlen(flen)
tp.SetDecimal(yyS[yypt-0].item.(int))
if tp.GetDecimal() > 0 {
tp.SetFlen(tp.GetFlen() + 1 + tp.GetDecimal())
}
tp.SetCharset(charset.CharsetBin)
tp.SetCollate(charset.CollationBin)
tp.AddFlag(mysql.BinaryFlag)
parser.yyVAL.item = tp
}
case 1687:
{
tp := types.NewFieldType(mysql.TypeLonglong)
tp.SetCharset(charset.CharsetBin)
tp.SetCollate(charset.CollationBin)
tp.AddFlag(mysql.BinaryFlag)
parser.yyVAL.item = tp
}
case 1688:
{
tp := types.NewFieldType(mysql.TypeLonglong)
tp.AddFlag(mysql.UnsignedFlag | mysql.BinaryFlag)
tp.SetCharset(charset.CharsetBin)
tp.SetCollate(charset.CollationBin)
parser.yyVAL.item = tp
}
case 1689:
{
tp := types.NewFieldType(mysql.TypeJSON)
tp.AddFlag(mysql.BinaryFlag | mysql.ParseToJSONFlag)
tp.SetCharset(mysql.DefaultCharset)
tp.SetCollate(mysql.DefaultCollationName)
parser.yyVAL.item = tp
}
case 1690:
{
tp := types.NewFieldType(mysql.TypeDouble)
flen, decimal := mysql.GetDefaultFieldLengthAndDecimalForCast(mysql.TypeDouble)
tp.SetFlen(flen)
tp.SetDecimal(decimal)
tp.AddFlag(mysql.BinaryFlag)
tp.SetCharset(charset.CharsetBin)
tp.SetCollate(charset.CollationBin)
parser.yyVAL.item = tp
}
case 1691:
{
tp := types.NewFieldType(mysql.TypeFloat)
fopt := yyS[yypt-0].item.(*ast.FloatOpt)
if fopt.Flen >= 54 {
yylex.AppendError(ErrTooBigPrecision.GenWithStackByArgs(fopt.Flen, "CAST", 53))
} else if fopt.Flen >= 25 {
tp = types.NewFieldType(mysql.TypeDouble)
}
flen, decimal := mysql.GetDefaultFieldLengthAndDecimalForCast(tp.GetType())
tp.SetFlen(flen)
tp.SetDecimal(decimal)
tp.AddFlag(mysql.BinaryFlag)
tp.SetCharset(charset.CharsetBin)
tp.SetCollate(charset.CollationBin)
parser.yyVAL.item = tp
}
case 1692:
{
var tp *types.FieldType
if parser.lexer.GetSQLMode().HasRealAsFloatMode() {
tp = types.NewFieldType(mysql.TypeFloat)
} else {
tp = types.NewFieldType(mysql.TypeDouble)
}
flen, decimal := mysql.GetDefaultFieldLengthAndDecimalForCast(tp.GetType())
tp.SetFlen(flen)
tp.SetDecimal(decimal)
tp.AddFlag(mysql.BinaryFlag)
tp.SetCharset(charset.CharsetBin)
tp.SetCollate(charset.CollationBin)
parser.yyVAL.item = tp
}
case 1693:
{
elementType := yyS[yypt-1].item.(*ast.VectorElementType)
if elementType.Tp != mysql.TypeFloat {
yylex.AppendError(yylex.Errorf("Only VECTOR is supported for now"))
}
tp := types.NewFieldType(mysql.TypeTiDBVectorFloat32)
tp.SetFlen(yyS[yypt-0].item.(int))
tp.SetDecimal(0)
tp.SetCharset(charset.CharsetBin)
tp.SetCollate(charset.CollationBin)
parser.yyVAL.item = tp
}
case 1694:
{
parser.yyVAL.item = mysql.LowPriority
}
case 1695:
{
parser.yyVAL.item = mysql.HighPriority
}
case 1696:
{
parser.yyVAL.item = mysql.DelayedPriority
}
case 1697:
{
parser.yyVAL.item = mysql.NoPriority
}
case 1699:
{
parser.yyVAL.item = &ast.TableName{Name: ast.NewCIStr(yyS[yypt-0].ident)}
}
case 1700:
{
schema := yyS[yypt-2].ident
if isInCorrectIdentifierName(schema) {
yylex.AppendError(ErrWrongDBName.GenWithStackByArgs(schema))
return 1
}
parser.yyVAL.item = &ast.TableName{Schema: ast.NewCIStr(schema), Name: ast.NewCIStr(yyS[yypt-0].ident)}
}
case 1701:
{
parser.yyVAL.item = &ast.TableName{Schema: ast.NewCIStr("*"), Name: ast.NewCIStr(yyS[yypt-0].ident)}
}
case 1702:
{
tbl := []*ast.TableName{yyS[yypt-0].item.(*ast.TableName)}
parser.yyVAL.item = tbl
}
case 1703:
{
parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.TableName), yyS[yypt-0].item.(*ast.TableName))
}
case 1704:
{
parser.yyVAL.item = &ast.TableName{Name: ast.NewCIStr(yyS[yypt-1].ident)}
}
case 1705:
{
parser.yyVAL.item = &ast.TableName{Schema: ast.NewCIStr(yyS[yypt-3].ident), Name: ast.NewCIStr(yyS[yypt-1].ident)}
}
case 1706:
{
tbl := []*ast.TableName{yyS[yypt-0].item.(*ast.TableName)}
parser.yyVAL.item = tbl
}
case 1707:
{
parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.TableName), yyS[yypt-0].item.(*ast.TableName))
}
case 1710:
{
parser.yyVAL.item = false
}
case 1711:
{
parser.yyVAL.item = true
}
case 1712:
{
var sqlText string
var sqlVar *ast.VariableExpr
switch x := yyS[yypt-0].item.(type) {
case string:
sqlText = x
case *ast.VariableExpr:
sqlVar = x
}
parser.yyVAL.statement = &ast.PrepareStmt{
Name: yyS[yypt-2].ident,
SQLText: sqlText,
SQLVar: sqlVar,
}
}
case 1713:
{
parser.yyVAL.item = yyS[yypt-0].ident
}
case 1714:
{
parser.yyVAL.item = yyS[yypt-0].expr
}
case 1715:
{
parser.yyVAL.statement = &ast.ExecuteStmt{Name: yyS[yypt-0].ident}
}
case 1716:
{
parser.yyVAL.statement = &ast.ExecuteStmt{
Name: yyS[yypt-2].ident,
UsingVars: yyS[yypt-0].item.([]ast.ExprNode),
}
}
case 1717:
{
parser.yyVAL.item = []ast.ExprNode{yyS[yypt-0].expr}
}
case 1718:
{
parser.yyVAL.item = append(yyS[yypt-2].item.([]ast.ExprNode), yyS[yypt-0].expr)
}
case 1719:
{
parser.yyVAL.statement = &ast.DeallocateStmt{Name: yyS[yypt-0].ident}
}
case 1722:
{
parser.yyVAL.statement = &ast.RollbackStmt{}
}
case 1723:
{
parser.yyVAL.statement = &ast.RollbackStmt{CompletionType: yyS[yypt-0].item.(ast.CompletionType)}
}
case 1724:
{
parser.yyVAL.statement = &ast.RollbackStmt{SavepointName: yyS[yypt-0].ident}
}
case 1725:
{
parser.yyVAL.statement = &ast.RollbackStmt{SavepointName: yyS[yypt-0].ident}
}
case 1726:
{
parser.yyVAL.item = ast.CompletionTypeChain
}
case 1727:
{
parser.yyVAL.item = ast.CompletionTypeRelease
}
case 1728:
{
parser.yyVAL.item = ast.CompletionTypeDefault
}
case 1729:
{
parser.yyVAL.item = ast.CompletionTypeChain
}
case 1730:
{
parser.yyVAL.item = ast.CompletionTypeDefault
}
case 1731:
{
parser.yyVAL.item = ast.CompletionTypeRelease
}
case 1732:
{
parser.yyVAL.item = ast.CompletionTypeDefault
}
case 1733:
{
parser.yyVAL.statement = &ast.ShutdownStmt{}
}
case 1734:
{
parser.yyVAL.statement = &ast.RestartStmt{}
}
case 1735:
{
parser.yyVAL.statement = &ast.HelpStmt{Topic: yyS[yypt-0].ident}
}
case 1736:
{
st := &ast.SelectStmt{
SelectStmtOpts: yyS[yypt-2].item.(*ast.SelectStmtOpts),
Distinct: yyS[yypt-2].item.(*ast.SelectStmtOpts).Distinct,
Fields: yyS[yypt-1].item.(*ast.FieldList),
Kind: ast.SelectStmtKindSelect,
}
if st.SelectStmtOpts.TableHints != nil {
st.TableHints = st.SelectStmtOpts.TableHints
}
if yyS[yypt-0].item != nil {
st.Having = yyS[yypt-0].item.(*ast.HavingClause)
}
parser.yyVAL.item = st
}
case 1737:
{
st := yyS[yypt-2].item.(*ast.SelectStmt)
lastField := st.Fields.Fields[len(st.Fields.Fields)-1]
if lastField.Expr != nil && lastField.AsName.O == "" {
lastEnd := yyS[yypt-1].offset - 1
lastField.SetText(parser.lexer.client, parser.src[lastField.Offset:lastEnd])
}
if yyS[yypt-0].item != nil {
st.Where = yyS[yypt-0].item.(ast.ExprNode)
}
}
case 1738:
{
st := yyS[yypt-6].item.(*ast.SelectStmt)
st.From = yyS[yypt-4].item.(*ast.TableRefsClause)
lastField := st.Fields.Fields[len(st.Fields.Fields)-1]
if lastField.Expr != nil && lastField.AsName.O == "" {
lastEnd := parser.endOffset(&yyS[yypt-5])
lastField.SetText(parser.lexer.client, parser.src[lastField.Offset:lastEnd])
}
if yyS[yypt-3].item != nil {
st.Where = yyS[yypt-3].item.(ast.ExprNode)
}
if yyS[yypt-2].item != nil {
st.GroupBy = yyS[yypt-2].item.(*ast.GroupByClause)
}
if yyS[yypt-1].item != nil {
st.Having = yyS[yypt-1].item.(*ast.HavingClause)
}
if yyS[yypt-0].item != nil {
st.WindowSpecs = (yyS[yypt-0].item.([]ast.WindowSpec))
}
parser.yyVAL.item = st
}
case 1739:
{
parser.yyVAL.item = nil
}
case 1740:
{
var repSeed ast.ExprNode
if yyS[yypt-0].expr != nil {
repSeed = ast.NewValueExpr(yyS[yypt-0].expr, parser.charset, parser.collation)
}
parser.yyVAL.item = &ast.TableSample{
SampleMethod: yyS[yypt-5].item.(ast.SampleMethodType),
Expr: ast.NewValueExpr(yyS[yypt-3].expr, parser.charset, parser.collation),
SampleClauseUnit: yyS[yypt-2].item.(ast.SampleClauseUnitType),
RepeatableSeed: repSeed,
}
}
case 1741:
{
var repSeed ast.ExprNode
if yyS[yypt-0].expr != nil {
repSeed = ast.NewValueExpr(yyS[yypt-0].expr, parser.charset, parser.collation)
}
parser.yyVAL.item = &ast.TableSample{
SampleMethod: yyS[yypt-3].item.(ast.SampleMethodType),
RepeatableSeed: repSeed,
}
}
case 1742:
{
parser.yyVAL.item = ast.SampleMethodTypeNone
}
case 1743:
{
parser.yyVAL.item = ast.SampleMethodTypeSystem
}
case 1744:
{
parser.yyVAL.item = ast.SampleMethodTypeBernoulli
}
case 1745:
{
parser.yyVAL.item = ast.SampleMethodTypeTiDBRegion
}
case 1746:
{
parser.yyVAL.item = ast.SampleClauseUnitTypeDefault
}
case 1747:
{
parser.yyVAL.item = ast.SampleClauseUnitTypeRow
}
case 1748:
{
parser.yyVAL.item = ast.SampleClauseUnitTypePercent
}
case 1749:
{
parser.yyVAL.expr = nil
}
case 1750:
{
parser.yyVAL.expr = yyS[yypt-1].expr
}
case 1751:
{
st := yyS[yypt-6].item.(*ast.SelectStmt)
if yyS[yypt-1].item != nil {
st.LockInfo = yyS[yypt-1].item.(*ast.SelectLockInfo)
}
if yyS[yypt-5].item != nil {
st.Where = yyS[yypt-5].item.(ast.ExprNode)
}
if yyS[yypt-4].item != nil {
st.GroupBy = yyS[yypt-4].item.(*ast.GroupByClause)
}
if yyS[yypt-3].item != nil {
st.OrderBy = yyS[yypt-3].item.(*ast.OrderByClause)
}
if yyS[yypt-2].item != nil {
st.Limit = yyS[yypt-2].item.(*ast.Limit)
}
if yyS[yypt-0].item != nil {
st.SelectIntoOpt = yyS[yypt-0].item.(*ast.SelectIntoOption)
}
parser.yyVAL.statement = st
}
case 1752:
{
st := yyS[yypt-5].item.(*ast.SelectStmt)
if yyS[yypt-4].item != nil {
st.GroupBy = yyS[yypt-4].item.(*ast.GroupByClause)
}
if yyS[yypt-3].item != nil {
st.OrderBy = yyS[yypt-3].item.(*ast.OrderByClause)
}
if yyS[yypt-2].item != nil {
st.Limit = yyS[yypt-2].item.(*ast.Limit)
}
if yyS[yypt-1].item != nil {
st.LockInfo = yyS[yypt-1].item.(*ast.SelectLockInfo)
}
if yyS[yypt-0].item != nil {
st.SelectIntoOpt = yyS[yypt-0].item.(*ast.SelectIntoOption)
}
parser.yyVAL.statement = st
}
case 1753:
{
st := yyS[yypt-4].item.(*ast.SelectStmt)
if yyS[yypt-1].item != nil {
st.LockInfo = yyS[yypt-1].item.(*ast.SelectLockInfo)
}
if yyS[yypt-3].item != nil {
st.OrderBy = yyS[yypt-3].item.(*ast.OrderByClause)
}
if yyS[yypt-2].item != nil {
st.Limit = yyS[yypt-2].item.(*ast.Limit)
}
if yyS[yypt-0].item != nil {
st.SelectIntoOpt = yyS[yypt-0].item.(*ast.SelectIntoOption)
}
parser.yyVAL.statement = st
}
case 1754:
{
st := &ast.SelectStmt{
Kind: ast.SelectStmtKindTable,
Fields: &ast.FieldList{Fields: []*ast.SelectField{{WildCard: &ast.WildCardField{}}}},
}
ts := &ast.TableSource{Source: yyS[yypt-4].item.(*ast.TableName)}
st.From = &ast.TableRefsClause{TableRefs: &ast.Join{Left: ts}}
if yyS[yypt-3].item != nil {
st.OrderBy = yyS[yypt-3].item.(*ast.OrderByClause)
}
if yyS[yypt-2].item != nil {
st.Limit = yyS[yypt-2].item.(*ast.Limit)
}
if yyS[yypt-1].item != nil {
st.LockInfo = yyS[yypt-1].item.(*ast.SelectLockInfo)
}
if yyS[yypt-0].item != nil {
st.SelectIntoOpt = yyS[yypt-0].item.(*ast.SelectIntoOption)
}
parser.yyVAL.statement = st
}
case 1755:
{
st := &ast.SelectStmt{
Kind: ast.SelectStmtKindValues,
Fields: &ast.FieldList{Fields: []*ast.SelectField{{WildCard: &ast.WildCardField{}}}},
Lists: yyS[yypt-4].item.([]*ast.RowExpr),
}
if yyS[yypt-3].item != nil {
st.OrderBy = yyS[yypt-3].item.(*ast.OrderByClause)
}
if yyS[yypt-2].item != nil {
st.Limit = yyS[yypt-2].item.(*ast.Limit)
}
if yyS[yypt-1].item != nil {
st.LockInfo = yyS[yypt-1].item.(*ast.SelectLockInfo)
}
if yyS[yypt-0].item != nil {
st.SelectIntoOpt = yyS[yypt-0].item.(*ast.SelectIntoOption)
}
parser.yyVAL.statement = st
}
case 1756:
{
sel := yyS[yypt-0].statement.(*ast.SelectStmt)
sel.With = yyS[yypt-1].item.(*ast.WithClause)
parser.yyVAL.statement = sel
}
case 1757:
{
var sel ast.StmtNode
switch x := yyS[yypt-0].expr.(*ast.SubqueryExpr).Query.(type) {
case *ast.SelectStmt:
x.IsInBraces = true
x.WithBeforeBraces = true
x.With = yyS[yypt-1].item.(*ast.WithClause)
sel = x
case *ast.SetOprStmt:
x.IsInBraces = true
x.With = yyS[yypt-1].item.(*ast.WithClause)
sel = x
}
parser.yyVAL.statement = sel
}
case 1758:
{
parser.yyVAL.item = yyS[yypt-0].item
}
case 1759:
{
ws := yyS[yypt-0].item.(*ast.WithClause)
ws.IsRecursive = true
for _, cte := range ws.CTEs {
cte.IsRecursive = true
}
parser.yyVAL.item = ws
}
case 1760:
{
ws := yyS[yypt-2].item.(*ast.WithClause)
ws.CTEs = append(ws.CTEs, yyS[yypt-0].item.(*ast.CommonTableExpression))
parser.yyVAL.item = ws
}
case 1761:
{
ws := &ast.WithClause{}
ws.CTEs = make([]*ast.CommonTableExpression, 0, 4)
ws.CTEs = append(ws.CTEs, yyS[yypt-0].item.(*ast.CommonTableExpression))
parser.yyVAL.item = ws
}
case 1762:
{
cte := &ast.CommonTableExpression{}
cte.Name = ast.NewCIStr(yyS[yypt-3].ident)
cte.ColNameList = yyS[yypt-2].item.([]ast.CIStr)
cte.Query = yyS[yypt-0].expr.(*ast.SubqueryExpr)
parser.yyVAL.item = cte
}
case 1764:
{
parser.yyVAL.item = nil
}
case 1765:
{
parser.yyVAL.item = yyS[yypt-0].item.([]ast.WindowSpec)
}
case 1766:
{
parser.yyVAL.item = []ast.WindowSpec{yyS[yypt-0].item.(ast.WindowSpec)}
}
case 1767:
{
parser.yyVAL.item = append(yyS[yypt-2].item.([]ast.WindowSpec), yyS[yypt-0].item.(ast.WindowSpec))
}
case 1768:
{
var spec = yyS[yypt-0].item.(ast.WindowSpec)
spec.Name = yyS[yypt-2].item.(ast.CIStr)
parser.yyVAL.item = spec
}
case 1769:
{
parser.yyVAL.item = ast.NewCIStr(yyS[yypt-0].ident)
}
case 1770:
{
parser.yyVAL.item = yyS[yypt-1].item.(ast.WindowSpec)
}
case 1771:
{
spec := ast.WindowSpec{Ref: yyS[yypt-3].item.(ast.CIStr)}
if yyS[yypt-2].item != nil {
spec.PartitionBy = yyS[yypt-2].item.(*ast.PartitionByClause)
}
if yyS[yypt-1].item != nil {
spec.OrderBy = yyS[yypt-1].item.(*ast.OrderByClause)
}
if yyS[yypt-0].item != nil {
spec.Frame = yyS[yypt-0].item.(*ast.FrameClause)
}
parser.yyVAL.item = spec
}
case 1772:
{
parser.yyVAL.item = ast.CIStr{}
}
case 1774:
{
parser.yyVAL.item = nil
}
case 1775:
{
parser.yyVAL.item = &ast.PartitionByClause{Items: yyS[yypt-0].item.([]*ast.ByItem)}
}
case 1776:
{
parser.yyVAL.item = nil
}
case 1777:
{
parser.yyVAL.item = &ast.OrderByClause{Items: yyS[yypt-0].item.([]*ast.ByItem)}
}
case 1778:
{
parser.yyVAL.item = nil
}
case 1779:
{
parser.yyVAL.item = &ast.FrameClause{
Type: yyS[yypt-1].item.(ast.FrameType),
Extent: yyS[yypt-0].item.(ast.FrameExtent),
}
}
case 1780:
{
parser.yyVAL.item = ast.FrameType(ast.Rows)
}
case 1781:
{
parser.yyVAL.item = ast.FrameType(ast.Ranges)
}
case 1782:
{
parser.yyVAL.item = ast.FrameType(ast.Groups)
}
case 1783:
{
parser.yyVAL.item = ast.FrameExtent{
Start: yyS[yypt-0].item.(ast.FrameBound),
End: ast.FrameBound{Type: ast.CurrentRow},
}
}
case 1785:
{
parser.yyVAL.item = ast.FrameBound{Type: ast.Preceding, UnBounded: true}
}
case 1786:
{
parser.yyVAL.item = ast.FrameBound{Type: ast.Preceding, Expr: ast.NewValueExpr(yyS[yypt-1].item, parser.charset, parser.collation)}
}
case 1787:
{
parser.yyVAL.item = ast.FrameBound{Type: ast.Preceding, Expr: ast.NewParamMarkerExpr(yyS[yypt].offset)}
}
case 1788:
{
parser.yyVAL.item = ast.FrameBound{Type: ast.Preceding, Expr: yyS[yypt-2].expr, Unit: yyS[yypt-1].item.(ast.TimeUnitType)}
}
case 1789:
{
parser.yyVAL.item = ast.FrameBound{Type: ast.CurrentRow}
}
case 1790:
{
parser.yyVAL.item = ast.FrameExtent{Start: yyS[yypt-2].item.(ast.FrameBound), End: yyS[yypt-0].item.(ast.FrameBound)}
}
case 1792:
{
parser.yyVAL.item = ast.FrameBound{Type: ast.Following, UnBounded: true}
}
case 1793:
{
parser.yyVAL.item = ast.FrameBound{Type: ast.Following, Expr: ast.NewValueExpr(yyS[yypt-1].item, parser.charset, parser.collation)}
}
case 1794:
{
parser.yyVAL.item = ast.FrameBound{Type: ast.Following, Expr: ast.NewParamMarkerExpr(yyS[yypt].offset)}
}
case 1795:
{
parser.yyVAL.item = ast.FrameBound{Type: ast.Following, Expr: yyS[yypt-2].expr, Unit: yyS[yypt-1].item.(ast.TimeUnitType)}
}
case 1796:
{
parser.yyVAL.item = nil
}
case 1797:
{
spec := yyS[yypt-0].item.(ast.WindowSpec)
parser.yyVAL.item = &spec
}
case 1798:
{
parser.yyVAL.item = yyS[yypt-0].item.(ast.WindowSpec)
}
case 1799:
{
parser.yyVAL.item = ast.WindowSpec{Name: yyS[yypt-0].item.(ast.CIStr), OnlyAlias: true}
}
case 1801:
{
parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-3].ident, Spec: yyS[yypt-0].item.(ast.WindowSpec)}
}
case 1802:
{
parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-3].ident, Spec: yyS[yypt-0].item.(ast.WindowSpec)}
}
case 1803:
{
parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-3].ident, Spec: yyS[yypt-0].item.(ast.WindowSpec)}
}
case 1804:
{
parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-3].ident, Spec: yyS[yypt-0].item.(ast.WindowSpec)}
}
case 1805:
{
parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-3].ident, Spec: yyS[yypt-0].item.(ast.WindowSpec)}
}
case 1806:
{
parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-4].ident, Args: []ast.ExprNode{yyS[yypt-2].expr}, Spec: yyS[yypt-0].item.(ast.WindowSpec)}
}
case 1807:
{
args := []ast.ExprNode{yyS[yypt-4].expr}
if yyS[yypt-3].item != nil {
args = append(args, yyS[yypt-3].item.([]ast.ExprNode)...)
}
parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-6].ident, Args: args, IgnoreNull: yyS[yypt-1].item.(bool), Spec: yyS[yypt-0].item.(ast.WindowSpec)}
}
case 1808:
{
args := []ast.ExprNode{yyS[yypt-4].expr}
if yyS[yypt-3].item != nil {
args = append(args, yyS[yypt-3].item.([]ast.ExprNode)...)
}
parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-6].ident, Args: args, IgnoreNull: yyS[yypt-1].item.(bool), Spec: yyS[yypt-0].item.(ast.WindowSpec)}
}
case 1809:
{
parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-3].expr}, IgnoreNull: yyS[yypt-1].item.(bool), Spec: yyS[yypt-0].item.(ast.WindowSpec)}
}
case 1810:
{
parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-5].ident, Args: []ast.ExprNode{yyS[yypt-3].expr}, IgnoreNull: yyS[yypt-1].item.(bool), Spec: yyS[yypt-0].item.(ast.WindowSpec)}
}
case 1811:
{
parser.yyVAL.expr = &ast.WindowFuncExpr{Name: yyS[yypt-8].ident, Args: []ast.ExprNode{yyS[yypt-6].expr, yyS[yypt-4].expr}, FromLast: yyS[yypt-2].item.(bool), IgnoreNull: yyS[yypt-1].item.(bool), Spec: yyS[yypt-0].item.(ast.WindowSpec)}
}
case 1812:
{
parser.yyVAL.item = nil
}
case 1813:
{
args := []ast.ExprNode{ast.NewValueExpr(yyS[yypt-1].item, parser.charset, parser.collation)}
if yyS[yypt-0].item != nil {
args = append(args, yyS[yypt-0].item.(ast.ExprNode))
}
parser.yyVAL.item = args
}
case 1814:
{
args := []ast.ExprNode{ast.NewParamMarkerExpr(yyS[yypt-1].offset)}
if yyS[yypt-0].item != nil {
args = append(args, yyS[yypt-0].item.(ast.ExprNode))
}
parser.yyVAL.item = args
}
case 1815:
{
parser.yyVAL.item = nil
}
case 1816:
{
parser.yyVAL.item = yyS[yypt-0].expr
}
case 1817:
{
parser.yyVAL.item = false
}
case 1818:
{
parser.yyVAL.item = false
}
case 1819:
{
parser.yyVAL.item = true
}
case 1820:
{
parser.yyVAL.item = false
}
case 1821:
{
parser.yyVAL.item = false
}
case 1822:
{
parser.yyVAL.item = true
}
case 1823:
{
parser.yyVAL.item = &ast.TableRefsClause{TableRefs: yyS[yypt-0].item.(*ast.Join)}
}
case 1824:
{
if j, ok := yyS[yypt-0].item.(*ast.Join); ok {
// if $1 is Join, use it directly
parser.yyVAL.item = j
} else {
parser.yyVAL.item = &ast.Join{Left: yyS[yypt-0].item.(ast.ResultSetNode), Right: nil}
}
}
case 1825:
{
/* from a, b is default cross join */
parser.yyVAL.item = &ast.Join{Left: yyS[yypt-2].item.(ast.ResultSetNode), Right: yyS[yypt-0].item.(ast.ResultSetNode), Tp: ast.CrossJoin}
}
case 1827:
{
/*
* ODBC escape syntax for outer join is { OJ join_table }
* Use an Identifier for OJ
*/
parser.yyVAL.item = yyS[yypt-1].item
}
case 1830:
{
tn := yyS[yypt-5].item.(*ast.TableName)
tn.PartitionNames = yyS[yypt-4].item.([]ast.CIStr)
tn.IndexHints = yyS[yypt-1].item.([]*ast.IndexHint)
if yyS[yypt-0].item != nil {
tn.TableSample = yyS[yypt-0].item.(*ast.TableSample)
}
if yyS[yypt-2].item != nil {
tn.AsOf = yyS[yypt-2].item.(*ast.AsOfClause)
}
parser.yyVAL.item = &ast.TableSource{Source: tn, AsName: yyS[yypt-3].item.(ast.CIStr)}
}
case 1831:
{
resultNode := yyS[yypt-1].expr.(*ast.SubqueryExpr).Query
parser.yyVAL.item = &ast.TableSource{Source: resultNode, AsName: yyS[yypt-0].item.(ast.CIStr)}
}
case 1832:
{
j := yyS[yypt-1].item.(*ast.Join)
j.ExplicitParens = true
parser.yyVAL.item = yyS[yypt-1].item
}
case 1833:
{
parser.yyVAL.item = []ast.CIStr{}
}
case 1834:
{
parser.yyVAL.item = yyS[yypt-1].item
}
case 1835:
{
parser.yyVAL.item = ast.CIStr{}
}
case 1837:
{
parser.yyVAL.item = ast.NewCIStr(yyS[yypt-0].ident)
}
case 1838:
{
parser.yyVAL.item = ast.NewCIStr(yyS[yypt-0].ident)
}
case 1839:
{
parser.yyVAL.item = ast.HintUse
}
case 1840:
{
parser.yyVAL.item = ast.HintIgnore
}
case 1841:
{
parser.yyVAL.item = ast.HintForce
}
case 1842:
{
parser.yyVAL.item = ast.HintForScan
}
case 1843:
{
parser.yyVAL.item = ast.HintForJoin
}
case 1844:
{
parser.yyVAL.item = ast.HintForOrderBy
}
case 1845:
{
parser.yyVAL.item = ast.HintForGroupBy
}
case 1846:
{
parser.yyVAL.item = &ast.IndexHint{
IndexNames: yyS[yypt-1].item.([]ast.CIStr),
HintType: yyS[yypt-4].item.(ast.IndexHintType),
HintScope: yyS[yypt-3].item.(ast.IndexHintScope),
}
}
case 1847:
{
var nameList []ast.CIStr
parser.yyVAL.item = nameList
}
case 1848:
{
parser.yyVAL.item = []ast.CIStr{ast.NewCIStr(yyS[yypt-0].ident)}
}
case 1849:
{
parser.yyVAL.item = append(yyS[yypt-2].item.([]ast.CIStr), ast.NewCIStr(yyS[yypt-0].ident))
}
case 1850:
{
parser.yyVAL.item = []ast.CIStr{ast.NewCIStr(yyS[yypt-0].ident)}
}
case 1851:
{
parser.yyVAL.item = append(yyS[yypt-2].item.([]ast.CIStr), ast.NewCIStr(yyS[yypt-0].ident))
}
case 1852:
{
parser.yyVAL.item = []*ast.IndexHint{yyS[yypt-0].item.(*ast.IndexHint)}
}
case 1853:
{
parser.yyVAL.item = append(yyS[yypt-1].item.([]*ast.IndexHint), yyS[yypt-0].item.(*ast.IndexHint))
}
case 1854:
{
parser.yyVAL.item = []*ast.IndexHint{}
}
case 1856:
{
parser.yyVAL.item = ast.NewCrossJoin(yyS[yypt-2].item.(ast.ResultSetNode), yyS[yypt-0].item.(ast.ResultSetNode))
}
case 1857:
{
on := &ast.OnCondition{Expr: yyS[yypt-0].expr}
parser.yyVAL.item = &ast.Join{Left: yyS[yypt-4].item.(ast.ResultSetNode), Right: yyS[yypt-2].item.(ast.ResultSetNode), Tp: ast.CrossJoin, On: on}
}
case 1858:
{
parser.yyVAL.item = &ast.Join{Left: yyS[yypt-6].item.(ast.ResultSetNode), Right: yyS[yypt-4].item.(ast.ResultSetNode), Tp: ast.CrossJoin, Using: yyS[yypt-1].item.([]*ast.ColumnName)}
}
case 1859:
{
on := &ast.OnCondition{Expr: yyS[yypt-0].expr}
parser.yyVAL.item = &ast.Join{Left: yyS[yypt-6].item.(ast.ResultSetNode), Right: yyS[yypt-2].item.(ast.ResultSetNode), Tp: yyS[yypt-5].item.(ast.JoinType), On: on}
}
case 1860:
{
parser.yyVAL.item = &ast.Join{Left: yyS[yypt-8].item.(ast.ResultSetNode), Right: yyS[yypt-4].item.(ast.ResultSetNode), Tp: yyS[yypt-7].item.(ast.JoinType), Using: yyS[yypt-1].item.([]*ast.ColumnName)}
}
case 1861:
{
parser.yyVAL.item = &ast.Join{Left: yyS[yypt-3].item.(ast.ResultSetNode), Right: yyS[yypt-0].item.(ast.ResultSetNode), NaturalJoin: true}
}
case 1862:
{
parser.yyVAL.item = &ast.Join{Left: yyS[yypt-5].item.(ast.ResultSetNode), Right: yyS[yypt-0].item.(ast.ResultSetNode), Tp: yyS[yypt-3].item.(ast.JoinType), NaturalJoin: true}
}
case 1863:
{
parser.yyVAL.item = &ast.Join{Left: yyS[yypt-2].item.(ast.ResultSetNode), Right: yyS[yypt-0].item.(ast.ResultSetNode), StraightJoin: true}
}
case 1864:
{
on := &ast.OnCondition{Expr: yyS[yypt-0].expr}
parser.yyVAL.item = &ast.Join{Left: yyS[yypt-4].item.(ast.ResultSetNode), Right: yyS[yypt-2].item.(ast.ResultSetNode), StraightJoin: true, On: on}
}
case 1865:
{
parser.yyVAL.item = &ast.Join{Left: yyS[yypt-6].item.(ast.ResultSetNode), Right: yyS[yypt-4].item.(ast.ResultSetNode), StraightJoin: true, Using: yyS[yypt-1].item.([]*ast.ColumnName)}
}
case 1866:
{
parser.yyVAL.item = ast.LeftJoin
}
case 1867:
{
parser.yyVAL.item = ast.RightJoin
}
case 1873:
{
parser.yyVAL.item = nil
}
case 1874:
{
parser.yyVAL.item = &ast.Limit{Count: yyS[yypt-0].item.(ast.ValueExpr)}
}
case 1875:
{
parser.yyVAL.item = ast.NewValueExpr(yyS[yypt-0].item, parser.charset, parser.collation)
}
case 1876:
{
parser.yyVAL.item = ast.NewParamMarkerExpr(yyS[yypt].offset)
}
case 1881:
{
parser.yyVAL.item = ast.NewValueExpr(uint64(1), parser.charset, parser.collation)
}
case 1883:
{
parser.yyVAL.item = &ast.Limit{Count: yyS[yypt-0].item.(ast.ExprNode)}
}
case 1884:
{
parser.yyVAL.item = &ast.Limit{Offset: yyS[yypt-2].item.(ast.ExprNode), Count: yyS[yypt-0].item.(ast.ExprNode)}
}
case 1885:
{
parser.yyVAL.item = &ast.Limit{Offset: yyS[yypt-0].item.(ast.ExprNode), Count: yyS[yypt-2].item.(ast.ExprNode)}
}
case 1886:
{
parser.yyVAL.item = &ast.Limit{Count: yyS[yypt-2].item.(ast.ExprNode)}
}
case 1887:
{
parser.yyVAL.item = nil
}
case 1889:
{
opt := &ast.SelectStmtOpts{}
opt.SQLCache = true
opt.TableHints = yyS[yypt-0].item.([]*ast.TableOptimizerHint)
parser.yyVAL.item = opt
}
case 1890:
{
opt := &ast.SelectStmtOpts{}
opt.SQLCache = true
if yyS[yypt-0].item.(bool) {
opt.Distinct = true
} else {
opt.Distinct = false
opt.ExplicitAll = true
}
parser.yyVAL.item = opt
}
case 1891:
{
opt := &ast.SelectStmtOpts{}
opt.SQLCache = true
opt.Priority = yyS[yypt-0].item.(mysql.PriorityEnum)
parser.yyVAL.item = opt
}
case 1892:
{
opt := &ast.SelectStmtOpts{}
opt.SQLCache = true
opt.SQLSmallResult = true
parser.yyVAL.item = opt
}
case 1893:
{
opt := &ast.SelectStmtOpts{}
opt.SQLCache = true
opt.SQLBigResult = true
parser.yyVAL.item = opt
}
case 1894:
{
opt := &ast.SelectStmtOpts{}
opt.SQLCache = true
opt.SQLBufferResult = true
parser.yyVAL.item = opt
}
case 1895:
{
opt := &ast.SelectStmtOpts{}
opt.SQLCache = yyS[yypt-0].item.(bool)
parser.yyVAL.item = opt
}
case 1896:
{
opt := &ast.SelectStmtOpts{}
opt.SQLCache = true
opt.CalcFoundRows = true
parser.yyVAL.item = opt
}
case 1897:
{
opt := &ast.SelectStmtOpts{}
opt.SQLCache = true
opt.StraightJoin = true
parser.yyVAL.item = opt
}
case 1898:
{
opt := &ast.SelectStmtOpts{}
opt.SQLCache = true
parser.yyVAL.item = opt
}
case 1900:
{
opts := yyS[yypt-1].item.(*ast.SelectStmtOpts)
opt := yyS[yypt-0].item.(*ast.SelectStmtOpts)
// Merge options.
// Always use the first hint.
if opt.TableHints != nil && opts.TableHints == nil {
opts.TableHints = opt.TableHints
}
if opt.Distinct {
opts.Distinct = true
}
if opt.Priority != mysql.NoPriority {
opts.Priority = opt.Priority
}
if opt.SQLSmallResult {
opts.SQLSmallResult = true
}
if opt.SQLBigResult {
opts.SQLBigResult = true
}
if opt.SQLBufferResult {
opts.SQLBufferResult = true
}
if !opt.SQLCache {
opts.SQLCache = false
}
if opt.CalcFoundRows {
opts.CalcFoundRows = true
}
if opt.StraightJoin {
opts.StraightJoin = true
}
if opt.ExplicitAll {
opts.ExplicitAll = true
}
if opts.Distinct && opts.ExplicitAll {
yylex.AppendError(ErrWrongUsage.GenWithStackByArgs("ALL", "DISTINCT"))
return 1
}
parser.yyVAL.item = opts
}
case 1902:
{
hints, warns := parser.parseHint(yyS[yypt-0].ident)
for _, w := range warns {
yylex.AppendError(w)
parser.lastErrorAsWarn()
}
parser.yyVAL.item = hints
}
case 1903:
{
parser.yyVAL.item = nil
}
case 1905:
{
parser.yyVAL.item = true
}
case 1906:
{
parser.yyVAL.item = false
}
case 1907:
{
parser.yyVAL.item = &ast.FieldList{Fields: yyS[yypt-0].item.([]*ast.SelectField)}
}
case 1908:
{
parser.yyVAL.item = nil
}
case 1910:
{
parser.yyVAL.item = nil
}
case 1911:
{
x := &ast.SelectIntoOption{
Tp: ast.SelectIntoOutfile,
FileName: yyS[yypt-2].ident,
}
if yyS[yypt-1].item != nil {
x.FieldsInfo = yyS[yypt-1].item.(*ast.FieldsClause)
}
if yyS[yypt-0].item != nil {
x.LinesInfo = yyS[yypt-0].item.(*ast.LinesClause)
}
parser.yyVAL.item = x
}
case 1912:
{
rs := yyS[yypt-1].statement.(*ast.SelectStmt)
endOffset := parser.endOffset(&yyS[yypt])
parser.setLastSelectFieldText(rs, endOffset)
src := parser.src
// See the implementation of yyParse function
rs.SetText(parser.lexer.client, src[yyS[yypt-1].offset:yyS[yypt].offset])
parser.yyVAL.expr = &ast.SubqueryExpr{Query: rs}
}
case 1913:
{
rs := yyS[yypt-1].statement.(*ast.SetOprStmt)
src := parser.src
rs.SetText(parser.lexer.client, src[yyS[yypt-1].offset:yyS[yypt].offset])
parser.yyVAL.expr = &ast.SubqueryExpr{Query: rs}
}
case 1914:
{
switch rs := yyS[yypt-1].statement.(type) {
case *ast.SelectStmt:
endOffset := parser.endOffset(&yyS[yypt])
parser.setLastSelectFieldText(rs, endOffset)
src := parser.src
// See the implementation of yyParse function
rs.SetText(parser.lexer.client, src[yyS[yypt-1].offset:yyS[yypt].offset])
parser.yyVAL.expr = &ast.SubqueryExpr{Query: rs}
case *ast.SetOprStmt:
src := parser.src
rs.SetText(parser.lexer.client, src[yyS[yypt-1].offset:yyS[yypt].offset])
parser.yyVAL.expr = &ast.SubqueryExpr{Query: rs}
}
}
case 1915:
{
subQuery := yyS[yypt-1].expr.(*ast.SubqueryExpr).Query
isRecursive := true
// remove redundant brackets like '((select 1))'
for isRecursive {
if _, isRecursive = subQuery.(*ast.SubqueryExpr); isRecursive {
subQuery = subQuery.(*ast.SubqueryExpr).Query
}
}
switch rs := subQuery.(type) {
case *ast.SelectStmt:
endOffset := parser.endOffset(&yyS[yypt])
parser.setLastSelectFieldText(rs, endOffset)
src := parser.src
rs.SetText(parser.lexer.client, src[yyS[yypt-1].offset:yyS[yypt].offset])
parser.yyVAL.expr = &ast.SubqueryExpr{Query: rs}
case *ast.SetOprStmt:
src := parser.src
rs.SetText(parser.lexer.client, src[yyS[yypt-1].offset:yyS[yypt].offset])
parser.yyVAL.expr = &ast.SubqueryExpr{Query: rs}
}
}
case 1916:
{
parser.yyVAL.item = nil
}
case 1917:
{
parser.yyVAL.item = &ast.SelectLockInfo{
LockType: ast.SelectLockForUpdate,
Tables: yyS[yypt-0].item.([]*ast.TableName),
}
}
case 1918:
{
parser.yyVAL.item = &ast.SelectLockInfo{
LockType: ast.SelectLockForShare,
Tables: yyS[yypt-0].item.([]*ast.TableName),
}
}
case 1919:
{
parser.yyVAL.item = &ast.SelectLockInfo{
LockType: ast.SelectLockForUpdateNoWait,
Tables: yyS[yypt-1].item.([]*ast.TableName),
}
}
case 1920:
{
parser.yyVAL.item = &ast.SelectLockInfo{
LockType: ast.SelectLockForUpdateWaitN,
WaitSec: getUint64FromNUM(yyS[yypt-0].item),
Tables: yyS[yypt-2].item.([]*ast.TableName),
}
}
case 1921:
{
parser.yyVAL.item = &ast.SelectLockInfo{
LockType: ast.SelectLockForShareNoWait,
Tables: yyS[yypt-1].item.([]*ast.TableName),
}
}
case 1922:
{
parser.yyVAL.item = &ast.SelectLockInfo{
LockType: ast.SelectLockForUpdateSkipLocked,
Tables: yyS[yypt-2].item.([]*ast.TableName),
}
}
case 1923:
{
parser.yyVAL.item = &ast.SelectLockInfo{
LockType: ast.SelectLockForShareSkipLocked,
Tables: yyS[yypt-2].item.([]*ast.TableName),
}
}
case 1924:
{
parser.yyVAL.item = &ast.SelectLockInfo{
LockType: ast.SelectLockForShare,
Tables: []*ast.TableName{},
}
}
case 1925:
{
parser.yyVAL.item = []*ast.TableName{}
}
case 1926:
{
parser.yyVAL.item = yyS[yypt-0].item.([]*ast.TableName)
}
case 1929:
{
setOpr := yyS[yypt-0].statement.(*ast.SetOprStmt)
setOpr.With = yyS[yypt-1].item.(*ast.WithClause)
parser.yyVAL.statement = setOpr
}
case 1930:
{
setOpr := yyS[yypt-0].statement.(*ast.SetOprStmt)
setOpr.With = yyS[yypt-1].item.(*ast.WithClause)
parser.yyVAL.statement = setOpr
}
case 1931:
{
setOprList1 := yyS[yypt-2].item.([]ast.Node)
if sel, isSelect := setOprList1[len(setOprList1)-1].(*ast.SelectStmt); isSelect && !sel.IsInBraces {
endOffset := parser.endOffset(&yyS[yypt-1])
parser.setLastSelectFieldText(sel, endOffset)
}
setOpr := &ast.SetOprStmt{SelectList: &ast.SetOprSelectList{Selects: yyS[yypt-2].item.([]ast.Node)}}
st := yyS[yypt-0].statement.(*ast.SelectStmt)
setOpr.Limit = st.Limit
setOpr.OrderBy = st.OrderBy
st.Limit = nil
st.OrderBy = nil
st.AfterSetOperator = yyS[yypt-1].item.(*ast.SetOprType)
setOpr.SelectList.Selects = append(setOpr.SelectList.Selects, st)
parser.yyVAL.statement = setOpr
}
case 1932:
{
setOprList1 := yyS[yypt-2].item.([]ast.Node)
if sel, isSelect := setOprList1[len(setOprList1)-1].(*ast.SelectStmt); isSelect && !sel.IsInBraces {
endOffset := parser.endOffset(&yyS[yypt-1])
parser.setLastSelectFieldText(sel, endOffset)
}
var setOprList2 []ast.Node
var with2 *ast.WithClause
var limit2 *ast.Limit
var orderBy2 *ast.OrderByClause
switch x := yyS[yypt-0].expr.(*ast.SubqueryExpr).Query.(type) {
case *ast.SelectStmt:
setOprList2 = []ast.Node{x}
with2 = x.With
case *ast.SetOprStmt:
// child setOprStmt's limit and order should also make sense
// we should separate it out from other normal SetOprSelectList.
setOprList2 = x.SelectList.Selects
with2 = x.With
limit2 = x.Limit
orderBy2 = x.OrderBy
}
nextSetOprList := &ast.SetOprSelectList{Selects: setOprList2, With: with2, Limit: limit2, OrderBy: orderBy2}
nextSetOprList.AfterSetOperator = yyS[yypt-1].item.(*ast.SetOprType)
setOprList := append(setOprList1, nextSetOprList)
setOpr := &ast.SetOprStmt{SelectList: &ast.SetOprSelectList{Selects: setOprList}}
parser.yyVAL.statement = setOpr
}
case 1933:
{
setOprList1 := yyS[yypt-3].item.([]ast.Node)
if sel, isSelect := setOprList1[len(setOprList1)-1].(*ast.SelectStmt); isSelect && !sel.IsInBraces {
endOffset := parser.endOffset(&yyS[yypt-2])
parser.setLastSelectFieldText(sel, endOffset)
}
var setOprList2 []ast.Node
var with2 *ast.WithClause
var limit2 *ast.Limit
var orderBy2 *ast.OrderByClause
switch x := yyS[yypt-1].expr.(*ast.SubqueryExpr).Query.(type) {
case *ast.SelectStmt:
setOprList2 = []ast.Node{x}
with2 = x.With
case *ast.SetOprStmt:
setOprList2 = x.SelectList.Selects
with2 = x.With
limit2 = x.Limit
orderBy2 = x.OrderBy
}
nextSetOprList := &ast.SetOprSelectList{Selects: setOprList2, With: with2, Limit: limit2, OrderBy: orderBy2}
nextSetOprList.AfterSetOperator = yyS[yypt-2].item.(*ast.SetOprType)
setOprList := append(setOprList1, nextSetOprList)
setOpr := &ast.SetOprStmt{SelectList: &ast.SetOprSelectList{Selects: setOprList}}
setOpr.OrderBy = yyS[yypt-0].item.(*ast.OrderByClause)
parser.yyVAL.statement = setOpr
}
case 1934:
{
setOprList1 := yyS[yypt-3].item.([]ast.Node)
if sel, isSelect := setOprList1[len(setOprList1)-1].(*ast.SelectStmt); isSelect && !sel.IsInBraces {
endOffset := parser.endOffset(&yyS[yypt-2])
parser.setLastSelectFieldText(sel, endOffset)
}
var setOprList2 []ast.Node
var with2 *ast.WithClause
var limit2 *ast.Limit
var orderBy2 *ast.OrderByClause
switch x := yyS[yypt-1].expr.(*ast.SubqueryExpr).Query.(type) {
case *ast.SelectStmt:
setOprList2 = []ast.Node{x}
with2 = x.With
case *ast.SetOprStmt:
setOprList2 = x.SelectList.Selects
with2 = x.With
limit2 = x.Limit
orderBy2 = x.OrderBy
}
nextSetOprList := &ast.SetOprSelectList{Selects: setOprList2, With: with2, Limit: limit2, OrderBy: orderBy2}
nextSetOprList.AfterSetOperator = yyS[yypt-2].item.(*ast.SetOprType)
setOprList := append(setOprList1, nextSetOprList)
setOpr := &ast.SetOprStmt{SelectList: &ast.SetOprSelectList{Selects: setOprList}}
setOpr.Limit = yyS[yypt-0].item.(*ast.Limit)
parser.yyVAL.statement = setOpr
}
case 1935:
{
setOprList1 := yyS[yypt-4].item.([]ast.Node)
if sel, isSelect := setOprList1[len(setOprList1)-1].(*ast.SelectStmt); isSelect && !sel.IsInBraces {
endOffset := parser.endOffset(&yyS[yypt-3])
parser.setLastSelectFieldText(sel, endOffset)
}
var setOprList2 []ast.Node
var with2 *ast.WithClause
var limit2 *ast.Limit
var orderBy2 *ast.OrderByClause
switch x := yyS[yypt-2].expr.(*ast.SubqueryExpr).Query.(type) {
case *ast.SelectStmt:
setOprList2 = []ast.Node{x}
with2 = x.With
case *ast.SetOprStmt:
setOprList2 = x.SelectList.Selects
with2 = x.With
limit2 = x.Limit
orderBy2 = x.OrderBy
}
nextSetOprList := &ast.SetOprSelectList{Selects: setOprList2, With: with2, Limit: limit2, OrderBy: orderBy2}
nextSetOprList.AfterSetOperator = yyS[yypt-3].item.(*ast.SetOprType)
setOprList := append(setOprList1, nextSetOprList)
setOpr := &ast.SetOprStmt{SelectList: &ast.SetOprSelectList{Selects: setOprList}}
setOpr.OrderBy = yyS[yypt-1].item.(*ast.OrderByClause)
setOpr.Limit = yyS[yypt-0].item.(*ast.Limit)
parser.yyVAL.statement = setOpr
}
case 1936:
{
var setOprList []ast.Node
switch x := yyS[yypt-1].expr.(*ast.SubqueryExpr).Query.(type) {
case *ast.SelectStmt:
setOprList = []ast.Node{&ast.SetOprSelectList{Selects: []ast.Node{x}, With: x.With}}
case *ast.SetOprStmt:
setOprList = []ast.Node{&ast.SetOprSelectList{Selects: x.SelectList.Selects, With: x.With, Limit: x.Limit, OrderBy: x.OrderBy}}
}
setOpr := &ast.SetOprStmt{SelectList: &ast.SetOprSelectList{Selects: setOprList}}
setOpr.OrderBy = yyS[yypt-0].item.(*ast.OrderByClause)
parser.yyVAL.statement = setOpr
}
case 1937:
{
var setOprList []ast.Node
switch x := yyS[yypt-1].expr.(*ast.SubqueryExpr).Query.(type) {
case *ast.SelectStmt:
setOprList = []ast.Node{&ast.SetOprSelectList{Selects: []ast.Node{x}, With: x.With}}
case *ast.SetOprStmt:
setOprList = []ast.Node{&ast.SetOprSelectList{Selects: x.SelectList.Selects, With: x.With, Limit: x.Limit, OrderBy: x.OrderBy}}
}
setOpr := &ast.SetOprStmt{SelectList: &ast.SetOprSelectList{Selects: setOprList}}
setOpr.Limit = yyS[yypt-0].item.(*ast.Limit)
parser.yyVAL.statement = setOpr
}
case 1938:
{
var setOprList []ast.Node
switch x := yyS[yypt-2].expr.(*ast.SubqueryExpr).Query.(type) {
case *ast.SelectStmt:
setOprList = []ast.Node{&ast.SetOprSelectList{Selects: []ast.Node{x}, With: x.With}}
case *ast.SetOprStmt:
setOprList = []ast.Node{&ast.SetOprSelectList{Selects: x.SelectList.Selects, With: x.With, Limit: x.Limit, OrderBy: x.OrderBy}}
}
setOpr := &ast.SetOprStmt{SelectList: &ast.SetOprSelectList{Selects: setOprList}}
setOpr.OrderBy = yyS[yypt-1].item.(*ast.OrderByClause)
setOpr.Limit = yyS[yypt-0].item.(*ast.Limit)
parser.yyVAL.statement = setOpr
}
case 1940:
{
setOprList1 := yyS[yypt-2].item.([]ast.Node)
setOprList2 := yyS[yypt-0].item.([]ast.Node)
if sel, isSelect := setOprList1[len(setOprList1)-1].(*ast.SelectStmt); isSelect && !sel.IsInBraces {
endOffset := parser.endOffset(&yyS[yypt-1])
parser.setLastSelectFieldText(sel, endOffset)
}
switch x := setOprList2[0].(type) {
case *ast.SelectStmt:
x.AfterSetOperator = yyS[yypt-1].item.(*ast.SetOprType)
case *ast.SetOprSelectList:
x.AfterSetOperator = yyS[yypt-1].item.(*ast.SetOprType)
}
parser.yyVAL.item = append(setOprList1, setOprList2...)
}
case 1941:
{
parser.yyVAL.item = []ast.Node{yyS[yypt-0].statement.(*ast.SelectStmt)}
}
case 1942:
{
var setOprList []ast.Node
switch x := yyS[yypt-0].expr.(*ast.SubqueryExpr).Query.(type) {
case *ast.SelectStmt:
setOprList = []ast.Node{&ast.SetOprSelectList{Selects: []ast.Node{x}}}
case *ast.SetOprStmt:
setOprList = []ast.Node{&ast.SetOprSelectList{Selects: x.SelectList.Selects, With: x.With, Limit: x.Limit, OrderBy: x.OrderBy}}
}
parser.yyVAL.item = setOprList
}
case 1943:
{
var tp ast.SetOprType
tp = ast.Union
if yyS[yypt-0].item == false {
tp = ast.UnionAll
}
parser.yyVAL.item = &tp
}
case 1944:
{
var tp ast.SetOprType
tp = ast.Except
if yyS[yypt-0].item == false {
tp = ast.ExceptAll
}
parser.yyVAL.item = &tp
}
case 1945:
{
var tp ast.SetOprType
tp = ast.Intersect
if yyS[yypt-0].item == false {
tp = ast.IntersectAll
}
parser.yyVAL.item = &tp
}
case 1947:
{
parser.yyVAL.statement = &ast.SetStmt{Variables: yyS[yypt-0].item.([]*ast.VariableAssignment)}
}
case 1948:
{
parser.yyVAL.statement = &ast.SetPwdStmt{Password: yyS[yypt-0].ident}
}
case 1949:
{
parser.yyVAL.statement = &ast.SetPwdStmt{User: yyS[yypt-2].item.(*auth.UserIdentity), Password: yyS[yypt-0].ident}
}
case 1950:
{
vars := yyS[yypt-0].item.([]*ast.VariableAssignment)
for _, v := range vars {
v.IsGlobal = true
}
parser.yyVAL.statement = &ast.SetStmt{Variables: vars}
}
case 1951:
{
parser.yyVAL.statement = &ast.SetStmt{Variables: yyS[yypt-0].item.([]*ast.VariableAssignment)}
}
case 1952:
{
assigns := yyS[yypt-0].item.([]*ast.VariableAssignment)
for i := 0; i < len(assigns); i++ {
if assigns[i].Name == "tx_isolation" {
// A special session variable that make setting tx_isolation take effect one time.
assigns[i].Name = "tx_isolation_one_shot"
}
}
parser.yyVAL.statement = &ast.SetStmt{Variables: assigns}
}
case 1953:
{
parser.yyVAL.statement = &ast.SetConfigStmt{Type: strings.ToLower(yyS[yypt-3].ident), Name: yyS[yypt-2].ident, Value: yyS[yypt-0].expr}
}
case 1954:
{
parser.yyVAL.statement = &ast.SetConfigStmt{Instance: yyS[yypt-3].ident, Name: yyS[yypt-2].ident, Value: yyS[yypt-0].expr}
}
case 1955:
{
parser.yyVAL.statement = &ast.SetSessionStatesStmt{SessionStates: yyS[yypt-0].ident}
}
case 1956:
{
parser.yyVAL.statement = &ast.SetResourceGroupStmt{Name: ast.NewCIStr(yyS[yypt-0].ident)}
}
case 1957:
{
parser.yyVAL.statement = yyS[yypt-0].item.(*ast.SetRoleStmt)
}
case 1958:
{
tmp := yyS[yypt-2].item.(*ast.SetRoleStmt)
parser.yyVAL.statement = &ast.SetDefaultRoleStmt{
SetRoleOpt: tmp.SetRoleOpt,
RoleList: tmp.RoleList,
UserList: yyS[yypt-0].item.([]*auth.UserIdentity),
}
}
case 1959:
{
parser.yyVAL.item = &ast.SetRoleStmt{SetRoleOpt: ast.SetRoleNone, RoleList: nil}
}
case 1960:
{
parser.yyVAL.item = &ast.SetRoleStmt{SetRoleOpt: ast.SetRoleAll, RoleList: nil}
}
case 1961:
{
parser.yyVAL.item = &ast.SetRoleStmt{SetRoleOpt: ast.SetRoleRegular, RoleList: yyS[yypt-0].item.([]*auth.RoleIdentity)}
}
case 1962:
{
parser.yyVAL.item = &ast.SetRoleStmt{SetRoleOpt: ast.SetRoleAllExcept, RoleList: yyS[yypt-0].item.([]*auth.RoleIdentity)}
}
case 1964:
{
parser.yyVAL.item = &ast.SetRoleStmt{SetRoleOpt: ast.SetRoleDefault, RoleList: nil}
}
case 1965:
{
if yyS[yypt-0].item != nil {
parser.yyVAL.item = yyS[yypt-0].item
} else {
parser.yyVAL.item = []*ast.VariableAssignment{}
}
}
case 1966:
{
if yyS[yypt-0].item != nil {
varAssigns := yyS[yypt-0].item.([]*ast.VariableAssignment)
parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.VariableAssignment), varAssigns...)
} else {
parser.yyVAL.item = yyS[yypt-2].item
}
}
case 1967:
{
varAssigns := []*ast.VariableAssignment{}
expr := ast.NewValueExpr(yyS[yypt-0].ident, parser.charset, parser.collation)
varAssigns = append(varAssigns, &ast.VariableAssignment{Name: "tx_isolation", Value: expr, IsSystem: true})
parser.yyVAL.item = varAssigns
}
case 1968:
{
varAssigns := []*ast.VariableAssignment{}
expr := ast.NewValueExpr("0", parser.charset, parser.collation)
varAssigns = append(varAssigns, &ast.VariableAssignment{Name: "tx_read_only", Value: expr, IsSystem: true})
parser.yyVAL.item = varAssigns
}
case 1969:
{
varAssigns := []*ast.VariableAssignment{}
expr := ast.NewValueExpr("1", parser.charset, parser.collation)
varAssigns = append(varAssigns, &ast.VariableAssignment{Name: "tx_read_only", Value: expr, IsSystem: true})
parser.yyVAL.item = varAssigns
}
case 1970:
{
varAssigns := []*ast.VariableAssignment{}
asof := yyS[yypt-0].item.(*ast.AsOfClause)
if asof != nil {
varAssigns = append(varAssigns, &ast.VariableAssignment{Name: "tx_read_ts", Value: asof.TsExpr, IsSystem: true})
}
parser.yyVAL.item = varAssigns
}
case 1971:
{
parser.yyVAL.ident = ast.RepeatableRead
}
case 1972:
{
parser.yyVAL.ident = ast.ReadCommitted
}
case 1973:
{
parser.yyVAL.ident = ast.ReadUncommitted
}
case 1974:
{
parser.yyVAL.ident = ast.Serializable
}
case 1975:
{
parser.yyVAL.expr = ast.NewValueExpr("ON", parser.charset, parser.collation)
}
case 1976:
{
parser.yyVAL.expr = ast.NewValueExpr("BINARY", parser.charset, parser.collation)
}
case 1981:
{
parser.yyVAL.ident = yyS[yypt-2].ident + "." + yyS[yypt-0].ident
}
case 1983:
{
parser.yyVAL.ident = yyS[yypt-2].ident + "." + yyS[yypt-0].ident
}
case 1984:
{
parser.yyVAL.ident = yyS[yypt-2].ident + "-" + yyS[yypt-0].ident
}
case 1985:
{
parser.yyVAL.item = &ast.VariableAssignment{Name: yyS[yypt-2].ident, Value: yyS[yypt-0].expr, IsSystem: true}
}
case 1986:
{
parser.yyVAL.item = &ast.VariableAssignment{Name: yyS[yypt-2].ident, Value: yyS[yypt-0].expr, IsGlobal: true, IsSystem: true}
}
case 1987:
{
parser.yyVAL.item = &ast.VariableAssignment{Name: yyS[yypt-2].ident, Value: yyS[yypt-0].expr, IsInstance: true, IsSystem: true}
}
case 1988:
{
parser.yyVAL.item = &ast.VariableAssignment{Name: yyS[yypt-2].ident, Value: yyS[yypt-0].expr, IsSystem: true}
}
case 1989:
{
parser.yyVAL.item = &ast.VariableAssignment{Name: yyS[yypt-2].ident, Value: yyS[yypt-0].expr, IsSystem: true}
}
case 1990:
{
v := strings.ToLower(yyS[yypt-2].ident)
var isGlobal bool
var isInstance bool
if strings.HasPrefix(v, "@@global.") {
isGlobal = true
v = strings.TrimPrefix(v, "@@global.")
} else if strings.HasPrefix(v, "@@instance.") {
isInstance = true
v = strings.TrimPrefix(v, "@@instance.")
} else if strings.HasPrefix(v, "@@session.") {
v = strings.TrimPrefix(v, "@@session.")
} else if strings.HasPrefix(v, "@@local.") {
v = strings.TrimPrefix(v, "@@local.")
} else if strings.HasPrefix(v, "@@") {
v = strings.TrimPrefix(v, "@@")
}
parser.yyVAL.item = &ast.VariableAssignment{Name: v, Value: yyS[yypt-0].expr, IsGlobal: isGlobal, IsInstance: isInstance, IsSystem: true}
}
case 1991:
{
v := yyS[yypt-2].ident
v = strings.TrimPrefix(v, "@")
parser.yyVAL.item = &ast.VariableAssignment{Name: v, Value: yyS[yypt-0].expr}
}
case 1992:
{
parser.yyVAL.item = &ast.VariableAssignment{
Name: ast.SetNames,
Value: ast.NewValueExpr(yyS[yypt-0].ident, "", ""),
}
}
case 1993:
{
parser.yyVAL.item = &ast.VariableAssignment{
Name: ast.SetNames,
Value: ast.NewValueExpr(yyS[yypt-2].ident, "", ""),
}
}
case 1994:
{
parser.yyVAL.item = &ast.VariableAssignment{
Name: ast.SetNames,
Value: ast.NewValueExpr(yyS[yypt-2].ident, "", ""),
ExtendValue: ast.NewValueExpr(yyS[yypt-0].ident, "", ""),
}
}
case 1995:
{
v := &ast.DefaultExpr{}
parser.yyVAL.item = &ast.VariableAssignment{Name: ast.SetNames, Value: v}
}
case 1996:
{
parser.yyVAL.item = &ast.VariableAssignment{Name: ast.SetCharset, Value: yyS[yypt-0].expr}
}
case 1997:
{
parser.yyVAL.expr = ast.NewValueExpr(yyS[yypt-0].ident, "", "")
}
case 1998:
{
parser.yyVAL.expr = &ast.DefaultExpr{}
}
case 1999:
{
// Validate input charset name to keep the same behavior as parser of MySQL.
cs, err := charset.GetCharsetInfo(yyS[yypt-0].ident)
if err != nil {
yylex.AppendError(ErrUnknownCharacterSet.GenWithStackByArgs(yyS[yypt-0].ident))
return 1
}
// Use charset name returned from charset.GetCharsetInfo(),
// to keep lower case of input for generated column restore.
parser.yyVAL.ident = cs.Name
}
case 2000:
{
parser.yyVAL.ident = charset.CharsetBin
}
case 2001:
{
info, err := charset.GetCollationByName(yyS[yypt-0].ident)
if err != nil {
yylex.AppendError(err)
return 1
}
parser.yyVAL.ident = info.Name
}
case 2002:
{
parser.yyVAL.ident = charset.CollationBin
}
case 2003:
{
parser.yyVAL.item = []*ast.VariableAssignment{yyS[yypt-0].item.(*ast.VariableAssignment)}
}
case 2004:
{
parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.VariableAssignment), yyS[yypt-0].item.(*ast.VariableAssignment))
}
case 2007:
{
v := strings.ToLower(yyS[yypt-0].ident)
var isGlobal bool
var isInstance bool
explicitScope := true
if strings.HasPrefix(v, "@@global.") {
isGlobal = true
v = strings.TrimPrefix(v, "@@global.")
} else if strings.HasPrefix(v, "@@instance.") {
isInstance = true
v = strings.TrimPrefix(v, "@@instance.")
} else if strings.HasPrefix(v, "@@session.") {
v = strings.TrimPrefix(v, "@@session.")
} else if strings.HasPrefix(v, "@@local.") {
v = strings.TrimPrefix(v, "@@local.")
} else if strings.HasPrefix(v, "@@") {
v, explicitScope = strings.TrimPrefix(v, "@@"), false
}
parser.yyVAL.expr = &ast.VariableExpr{Name: v, IsGlobal: isGlobal, IsInstance: isInstance, IsSystem: true, ExplicitScope: explicitScope}
}
case 2008:
{
v := yyS[yypt-0].ident
v = strings.TrimPrefix(v, "@")
parser.yyVAL.expr = &ast.VariableExpr{Name: v, IsGlobal: false, IsSystem: false}
}
case 2009:
{
parser.yyVAL.item = &auth.UserIdentity{Username: yyS[yypt-0].ident, Hostname: "%"}
}
case 2010:
{
parser.yyVAL.item = &auth.UserIdentity{Username: yyS[yypt-2].ident, Hostname: strings.ToLower(yyS[yypt-0].ident)}
}
case 2011:
{
parser.yyVAL.item = &auth.UserIdentity{Username: yyS[yypt-1].ident, Hostname: strings.ToLower(strings.TrimPrefix(yyS[yypt-0].ident, "@"))}
}
case 2012:
{
parser.yyVAL.item = &auth.UserIdentity{CurrentUser: true}
}
case 2013:
{
parser.yyVAL.item = []*auth.UserIdentity{yyS[yypt-0].item.(*auth.UserIdentity)}
}
case 2014:
{
parser.yyVAL.item = append(yyS[yypt-2].item.([]*auth.UserIdentity), yyS[yypt-0].item.(*auth.UserIdentity))
}
case 2016:
{
parser.yyVAL.ident = yyS[yypt-1].ident
}
case 2020:
{
parser.yyVAL.item = &auth.RoleIdentity{Username: yyS[yypt-2].ident, Hostname: strings.ToLower(yyS[yypt-0].ident)}
}
case 2021:
{
parser.yyVAL.item = &auth.RoleIdentity{Username: yyS[yypt-1].ident, Hostname: strings.ToLower(strings.TrimPrefix(yyS[yypt-0].ident, "@"))}
}
case 2022:
{
parser.yyVAL.item = &auth.RoleIdentity{Username: yyS[yypt-0].ident, Hostname: "%"}
}
case 2023:
{
parser.yyVAL.item = yyS[yypt-0].item
}
case 2024:
{
parser.yyVAL.item = &auth.RoleIdentity{Username: yyS[yypt-0].ident, Hostname: "%"}
}
case 2025:
{
parser.yyVAL.item = yyS[yypt-0].item
}
case 2026:
{
parser.yyVAL.item = []*auth.RoleIdentity{yyS[yypt-0].item.(*auth.RoleIdentity)}
}
case 2027:
{
parser.yyVAL.item = append(yyS[yypt-2].item.([]*auth.RoleIdentity), yyS[yypt-0].item.(*auth.RoleIdentity))
}
case 2028:
{
parser.yyVAL.item = &ast.LimitSimple{Offset: 0, Count: yyS[yypt-0].item.(uint64)}
}
case 2029:
{
parser.yyVAL.item = &ast.LimitSimple{Offset: yyS[yypt-2].item.(uint64), Count: yyS[yypt-0].item.(uint64)}
}
case 2030:
{
parser.yyVAL.item = &ast.LimitSimple{Offset: yyS[yypt-0].item.(uint64), Count: yyS[yypt-2].item.(uint64)}
}
case 2031:
{
parser.yyVAL.item = ast.BDRRolePrimary
}
case 2032:
{
parser.yyVAL.item = ast.BDRRoleSecondary
}
case 2033:
{
parser.yyVAL.statement = &ast.AdminStmt{Tp: ast.AdminShowDDL}
}
case 2034:
{
stmt := &ast.AdminStmt{Tp: ast.AdminShowDDLJobs}
if yyS[yypt-0].item != nil {
stmt.Where = yyS[yypt-0].item.(ast.ExprNode)
}
parser.yyVAL.statement = stmt
}
case 2035:
{
stmt := &ast.AdminStmt{
Tp: ast.AdminShowDDLJobs,
JobNumber: yyS[yypt-1].item.(int64),
}
if yyS[yypt-0].item != nil {
stmt.Where = yyS[yypt-0].item.(ast.ExprNode)
}
parser.yyVAL.statement = stmt
}
case 2036:
{
parser.yyVAL.statement = &ast.AdminStmt{
Tp: ast.AdminShowNextRowID,
Tables: []*ast.TableName{yyS[yypt-1].item.(*ast.TableName)},
}
}
case 2037:
{
parser.yyVAL.statement = &ast.AdminStmt{
Tp: ast.AdminCheckTable,
Tables: yyS[yypt-0].item.([]*ast.TableName),
}
}
case 2038:
{
parser.yyVAL.statement = &ast.AdminStmt{
Tp: ast.AdminCheckIndex,
Tables: []*ast.TableName{yyS[yypt-1].item.(*ast.TableName)},
Index: string(yyS[yypt-0].ident),
}
}
case 2039:
{
parser.yyVAL.statement = &ast.AdminStmt{
Tp: ast.AdminRecoverIndex,
Tables: []*ast.TableName{yyS[yypt-1].item.(*ast.TableName)},
Index: string(yyS[yypt-0].ident),
}
}
case 2040:
{
parser.yyVAL.statement = &ast.AdminStmt{Tp: ast.AdminWorkloadRepoCreate}
}
case 2041:
{
parser.yyVAL.statement = &ast.AdminStmt{
Tp: ast.AdminCleanupIndex,
Tables: []*ast.TableName{yyS[yypt-1].item.(*ast.TableName)},
Index: string(yyS[yypt-0].ident),
}
}
case 2042:
{
parser.yyVAL.statement = &ast.AdminStmt{
Tp: ast.AdminCheckIndexRange,
Tables: []*ast.TableName{yyS[yypt-2].item.(*ast.TableName)},
Index: string(yyS[yypt-1].ident),
HandleRanges: yyS[yypt-0].item.([]ast.HandleRange),
}
}
case 2043:
{
parser.yyVAL.statement = &ast.AdminStmt{
Tp: ast.AdminChecksumTable,
Tables: yyS[yypt-0].item.([]*ast.TableName),
}
}
case 2044:
{
parser.yyVAL.statement = &ast.AdminStmt{
Tp: ast.AdminCancelDDLJobs,
JobIDs: yyS[yypt-0].item.([]int64),
}
}
case 2045:
{
parser.yyVAL.statement = &ast.AdminStmt{
Tp: ast.AdminPauseDDLJobs,
JobIDs: yyS[yypt-0].item.([]int64),
}
}
case 2046:
{
parser.yyVAL.statement = &ast.AdminStmt{
Tp: ast.AdminResumeDDLJobs,
JobIDs: yyS[yypt-0].item.([]int64),
}
}
case 2047:
{
parser.yyVAL.statement = &ast.AdminStmt{
Tp: ast.AdminShowDDLJobQueries,
JobIDs: yyS[yypt-0].item.([]int64),
}
}
case 2048:
{
ret := &ast.AdminStmt{
Tp: ast.AdminShowDDLJobQueriesWithRange,
}
ret.LimitSimple.Count = yyS[yypt-0].item.(*ast.LimitSimple).Count
ret.LimitSimple.Offset = yyS[yypt-0].item.(*ast.LimitSimple).Offset
parser.yyVAL.statement = ret
}
case 2049:
{
parser.yyVAL.statement = &ast.AdminStmt{
Tp: ast.AdminShowSlow,
ShowSlow: yyS[yypt-0].item.(*ast.ShowSlow),
}
}
case 2050:
{
parser.yyVAL.statement = &ast.AdminStmt{
Tp: ast.AdminReloadExprPushdownBlacklist,
}
}
case 2051:
{
parser.yyVAL.statement = &ast.AdminStmt{
Tp: ast.AdminReloadOptRuleBlacklist,
}
}
case 2052:
{
parser.yyVAL.statement = &ast.AdminStmt{
Tp: ast.AdminPluginEnable,
Plugins: yyS[yypt-0].item.([]string),
}
}
case 2053:
{
parser.yyVAL.statement = &ast.AdminStmt{
Tp: ast.AdminPluginDisable,
Plugins: yyS[yypt-0].item.([]string),
}
}
case 2054:
{
parser.yyVAL.statement = &ast.CleanupTableLockStmt{
Tables: yyS[yypt-0].item.([]*ast.TableName),
}
}
case 2055:
{
parser.yyVAL.statement = &ast.RepairTableStmt{
Table: yyS[yypt-1].item.(*ast.TableName),
CreateStmt: yyS[yypt-0].statement.(*ast.CreateTableStmt),
}
}
case 2056:
{
parser.yyVAL.statement = &ast.AdminStmt{
Tp: ast.AdminFlushBindings,
}
}
case 2057:
{
parser.yyVAL.statement = &ast.AdminStmt{
Tp: ast.AdminCaptureBindings,
}
}
case 2058:
{
parser.yyVAL.statement = &ast.AdminStmt{
Tp: ast.AdminEvolveBindings,
}
}
case 2059:
{
parser.yyVAL.statement = &ast.AdminStmt{
Tp: ast.AdminReloadBindings,
}
}
case 2060:
{
parser.yyVAL.statement = &ast.AdminStmt{
Tp: ast.AdminReloadStatistics,
}
}
case 2061:
{
parser.yyVAL.statement = &ast.AdminStmt{
Tp: ast.AdminReloadStatistics,
}
}
case 2062:
{
parser.yyVAL.statement = &ast.AdminStmt{
Tp: ast.AdminFlushPlanCache,
StatementScope: yyS[yypt-1].item.(ast.StatementScope),
}
}
case 2063:
{
parser.yyVAL.statement = &ast.AdminStmt{
Tp: ast.AdminSetBDRRole,
BDRRole: yyS[yypt-0].item.(ast.BDRRole),
}
}
case 2064:
{
parser.yyVAL.statement = &ast.AdminStmt{
Tp: ast.AdminShowBDRRole,
}
}
case 2065:
{
parser.yyVAL.statement = &ast.AdminStmt{
Tp: ast.AdminUnsetBDRRole,
}
}
case 2066:
{
parser.yyVAL.statement = &ast.AdminStmt{
Tp: ast.AdminAlterDDLJob,
JobNumber: yyS[yypt-1].item.(int64),
AlterJobOptions: yyS[yypt-0].item.([]*ast.AlterJobOption),
}
}
case 2067:
{
parser.yyVAL.item = []*ast.AlterJobOption{yyS[yypt-0].item.(*ast.AlterJobOption)}
}
case 2068:
{
parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.AlterJobOption), yyS[yypt-0].item.(*ast.AlterJobOption))
}
case 2069:
{
parser.yyVAL.item = &ast.AlterJobOption{
Name: strings.ToLower(yyS[yypt-2].ident),
Value: yyS[yypt-0].expr.(ast.ExprNode),
}
}
case 2070:
{
parser.yyVAL.item = &ast.ShowSlow{
Tp: ast.ShowSlowRecent,
Count: getUint64FromNUM(yyS[yypt-0].item),
}
}
case 2071:
{
parser.yyVAL.item = &ast.ShowSlow{
Tp: ast.ShowSlowTop,
Kind: ast.ShowSlowKindDefault,
Count: getUint64FromNUM(yyS[yypt-0].item),
}
}
case 2072:
{
parser.yyVAL.item = &ast.ShowSlow{
Tp: ast.ShowSlowTop,
Kind: ast.ShowSlowKindInternal,
Count: getUint64FromNUM(yyS[yypt-0].item),
}
}
case 2073:
{
parser.yyVAL.item = &ast.ShowSlow{
Tp: ast.ShowSlowTop,
Kind: ast.ShowSlowKindAll,
Count: getUint64FromNUM(yyS[yypt-0].item),
}
}
case 2074:
{
parser.yyVAL.item = []ast.HandleRange{yyS[yypt-0].item.(ast.HandleRange)}
}
case 2075:
{
parser.yyVAL.item = append(yyS[yypt-2].item.([]ast.HandleRange), yyS[yypt-0].item.(ast.HandleRange))
}
case 2076:
{
parser.yyVAL.item = ast.HandleRange{Begin: yyS[yypt-3].item.(int64), End: yyS[yypt-1].item.(int64)}
}
case 2077:
{
parser.yyVAL.item = []int64{yyS[yypt-0].item.(int64)}
}
case 2078:
{
parser.yyVAL.item = append(yyS[yypt-2].item.([]int64), yyS[yypt-0].item.(int64))
}
case 2079:
{
stmt := yyS[yypt-1].item.(*ast.ShowStmt)
if yyS[yypt-0].item != nil {
if x, ok := yyS[yypt-0].item.(*ast.PatternLikeOrIlikeExpr); ok && x.Expr == nil {
stmt.Pattern = x
} else {
stmt.Where = yyS[yypt-0].item.(ast.ExprNode)
}
}
parser.yyVAL.statement = stmt
}
case 2080:
{
parser.yyVAL.statement = &ast.ShowStmt{
Tp: ast.ShowCreateTable,
Table: yyS[yypt-0].item.(*ast.TableName),
}
}
case 2081:
{
parser.yyVAL.statement = &ast.ShowStmt{
Tp: ast.ShowCreateView,
Table: yyS[yypt-0].item.(*ast.TableName),
}
}
case 2082:
{
parser.yyVAL.statement = &ast.ShowStmt{
Tp: ast.ShowCreateDatabase,
IfNotExists: yyS[yypt-1].item.(bool),
DBName: yyS[yypt-0].ident,
}
}
case 2083:
{
parser.yyVAL.statement = &ast.ShowStmt{
Tp: ast.ShowCreateSequence,
Table: yyS[yypt-0].item.(*ast.TableName),
}
}
case 2084:
{
parser.yyVAL.statement = &ast.ShowStmt{
Tp: ast.ShowCreatePlacementPolicy,
DBName: yyS[yypt-0].ident,
}
}
case 2085:
{
parser.yyVAL.statement = &ast.ShowStmt{
Tp: ast.ShowCreateResourceGroup,
ResourceGroupName: yyS[yypt-0].ident,
}
}
case 2086:
{
// See https://dev.mysql.com/doc/refman/5.7/en/show-create-user.html
parser.yyVAL.statement = &ast.ShowStmt{
Tp: ast.ShowCreateUser,
User: yyS[yypt-0].item.(*auth.UserIdentity),
}
}
case 2087:
{
stmt := &ast.ShowStmt{
Tp: ast.ShowRegions,
Table: yyS[yypt-3].item.(*ast.TableName),
}
stmt.Table.PartitionNames = yyS[yypt-2].item.([]ast.CIStr)
if yyS[yypt-0].item != nil {
stmt.Where = yyS[yypt-0].item.(ast.ExprNode)
}
parser.yyVAL.statement = stmt
}
case 2088:
{
parser.yyVAL.statement = &ast.ShowStmt{
Tp: ast.ShowTableNextRowId,
Table: yyS[yypt-1].item.(*ast.TableName),
}
}
case 2089:
{
stmt := &ast.ShowStmt{
Tp: ast.ShowRegions,
Table: yyS[yypt-5].item.(*ast.TableName),
IndexName: ast.NewCIStr(yyS[yypt-2].ident),
}
stmt.Table.PartitionNames = yyS[yypt-4].item.([]ast.CIStr)
if yyS[yypt-0].item != nil {
stmt.Where = yyS[yypt-0].item.(ast.ExprNode)
}
parser.yyVAL.statement = stmt
}
case 2090:
{
// See https://dev.mysql.com/doc/refman/5.7/en/show-grants.html
parser.yyVAL.statement = &ast.ShowStmt{Tp: ast.ShowGrants}
}
case 2091:
{
// See https://dev.mysql.com/doc/refman/5.7/en/show-grants.html
if yyS[yypt-0].item != nil {
parser.yyVAL.statement = &ast.ShowStmt{
Tp: ast.ShowGrants,
User: yyS[yypt-1].item.(*auth.UserIdentity),
Roles: yyS[yypt-0].item.([]*auth.RoleIdentity),
}
} else {
parser.yyVAL.statement = &ast.ShowStmt{
Tp: ast.ShowGrants,
User: yyS[yypt-1].item.(*auth.UserIdentity),
Roles: nil,
}
}
}
case 2092:
{
parser.yyVAL.statement = &ast.ShowStmt{
Tp: ast.ShowMasterStatus,
}
}
case 2093:
{
parser.yyVAL.statement = &ast.ShowStmt{
Tp: ast.ShowBinlogStatus,
}
}
case 2094:
{
parser.yyVAL.statement = &ast.ShowStmt{
Tp: ast.ShowReplicaStatus,
}
}
case 2095:
{
parser.yyVAL.statement = &ast.ShowStmt{
Tp: ast.ShowProcessList,
Full: yyS[yypt-1].item.(bool),
}
}
case 2096:
{
parser.yyVAL.statement = &ast.ShowStmt{
Tp: ast.ShowProfiles,
}
}
case 2097:
{
v := &ast.ShowStmt{
Tp: ast.ShowProfile,
}
if yyS[yypt-2].item != nil {
v.ShowProfileTypes = yyS[yypt-2].item.([]int)
}
if yyS[yypt-1].item != nil {
v.ShowProfileArgs = yyS[yypt-1].item.(*int64)
}
if yyS[yypt-0].item != nil {
v.ShowProfileLimit = yyS[yypt-0].item.(*ast.Limit)
}
parser.yyVAL.statement = v
}
case 2098:
{
parser.yyVAL.statement = &ast.ShowStmt{
Tp: ast.ShowPrivileges,
}
}
case 2099:
{
parser.yyVAL.statement = &ast.ShowStmt{
Tp: ast.ShowBuiltins,
}
}
case 2100:
{
parser.yyVAL.statement = yyS[yypt-0].item.(*ast.ShowStmt)
}
case 2101:
{
v := yyS[yypt-0].item.(int64)
parser.yyVAL.statement = &ast.ShowStmt{
Tp: ast.ShowImportJobs,
ImportJobID: &v,
}
}
case 2102:
{
v := yyS[yypt-0].item.(int64)
parser.yyVAL.statement = &ast.ShowStmt{Tp: ast.ShowDistributionJobs, DistributionJobID: &v}
}
case 2103:
{
parser.yyVAL.statement = &ast.ShowStmt{
Tp: ast.ShowCreateProcedure,
Procedure: yyS[yypt-0].item.(*ast.TableName),
}
}
case 2104:
{
stmt := &ast.ShowStmt{
Tp: ast.ShowDistributions,
Table: yyS[yypt-3].item.(*ast.TableName),
}
stmt.Table.PartitionNames = yyS[yypt-2].item.([]ast.CIStr)
if yyS[yypt-0].item != nil {
stmt.Where = yyS[yypt-0].item.(ast.ExprNode)
}
parser.yyVAL.statement = stmt
}
case 2105:
{
parser.yyVAL.item = &ast.ShowStmt{
Tp: ast.ShowPlacementForDatabase,
DBName: yyS[yypt-0].ident,
}
}
case 2106:
{
parser.yyVAL.item = &ast.ShowStmt{
Tp: ast.ShowPlacementForTable,
Table: yyS[yypt-0].item.(*ast.TableName),
}
}
case 2107:
{
parser.yyVAL.item = &ast.ShowStmt{
Tp: ast.ShowPlacementForPartition,
Table: yyS[yypt-2].item.(*ast.TableName),
Partition: ast.NewCIStr(yyS[yypt-0].ident),
}
}
case 2108:
{
parser.yyVAL.item = nil
}
case 2110:
{
parser.yyVAL.item = []int{yyS[yypt-0].item.(int)}
}
case 2111:
{
l := yyS[yypt-2].item.([]int)
l = append(l, yyS[yypt-0].item.(int))
parser.yyVAL.item = l
}
case 2112:
{
parser.yyVAL.item = ast.ProfileTypeCPU
}
case 2113:
{
parser.yyVAL.item = ast.ProfileTypeMemory
}
case 2114:
{
parser.yyVAL.item = ast.ProfileTypeBlockIo
}
case 2115:
{
parser.yyVAL.item = ast.ProfileTypeContextSwitch
}
case 2116:
{
parser.yyVAL.item = ast.ProfileTypePageFaults
}
case 2117:
{
parser.yyVAL.item = ast.ProfileTypeIpc
}
case 2118:
{
parser.yyVAL.item = ast.ProfileTypeSwaps
}
case 2119:
{
parser.yyVAL.item = ast.ProfileTypeSource
}
case 2120:
{
parser.yyVAL.item = ast.ProfileTypeAll
}
case 2121:
{
parser.yyVAL.item = nil
}
case 2122:
{
v := yyS[yypt-0].item.(int64)
parser.yyVAL.item = &v
}
case 2123:
{
parser.yyVAL.item = nil
}
case 2124:
{
parser.yyVAL.item = yyS[yypt-0].item.([]*auth.RoleIdentity)
}
case 2130:
{
parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowEngines}
}
case 2131:
{
parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowDatabases}
}
case 2132:
{
parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowConfig}
}
case 2133:
{
parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowCharset}
}
case 2134:
{
parser.yyVAL.item = &ast.ShowStmt{
Tp: ast.ShowTables,
DBName: yyS[yypt-0].ident,
Full: yyS[yypt-2].item.(bool),
}
}
case 2135:
{
parser.yyVAL.item = &ast.ShowStmt{
Tp: ast.ShowOpenTables,
DBName: yyS[yypt-0].ident,
}
}
case 2136:
{
parser.yyVAL.item = &ast.ShowStmt{
Tp: ast.ShowTableStatus,
DBName: yyS[yypt-0].ident,
}
}
case 2137:
{
parser.yyVAL.item = &ast.ShowStmt{
Tp: ast.ShowIndex,
Table: yyS[yypt-0].item.(*ast.TableName),
}
}
case 2138:
{
show := &ast.ShowStmt{
Tp: ast.ShowIndex,
Table: &ast.TableName{Name: ast.NewCIStr(yyS[yypt-2].ident), Schema: ast.NewCIStr(yyS[yypt-0].ident)},
}
parser.yyVAL.item = show
}
case 2139:
{
parser.yyVAL.item = &ast.ShowStmt{
Tp: ast.ShowColumns,
Table: yyS[yypt-1].item.(*ast.TableName),
DBName: yyS[yypt-0].ident,
Full: yyS[yypt-3].item.(bool),
}
}
case 2140:
{
parser.yyVAL.item = &ast.ShowStmt{
Tp: ast.ShowColumns,
Table: yyS[yypt-1].item.(*ast.TableName),
DBName: yyS[yypt-0].ident,
Full: yyS[yypt-3].item.(bool),
Extended: true,
}
}
case 2141:
{
parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowWarnings, CountWarningsOrErrors: true}
}
case 2142:
{
parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowWarnings}
}
case 2143:
{
parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowErrors, CountWarningsOrErrors: true}
}
case 2144:
{
parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowErrors}
}
case 2145:
{
parser.yyVAL.item = &ast.ShowStmt{
Tp: ast.ShowVariables,
GlobalScope: yyS[yypt-1].item.(bool),
}
}
case 2146:
{
parser.yyVAL.item = &ast.ShowStmt{
Tp: ast.ShowStatus,
GlobalScope: yyS[yypt-1].item.(bool),
}
}
case 2147:
{
parser.yyVAL.item = &ast.ShowStmt{
Tp: ast.ShowBindings,
GlobalScope: yyS[yypt-1].item.(bool),
}
}
case 2148:
{
parser.yyVAL.item = &ast.ShowStmt{
Tp: ast.ShowCollation,
}
}
case 2149:
{
parser.yyVAL.item = &ast.ShowStmt{
Tp: ast.ShowTriggers,
DBName: yyS[yypt-0].ident,
}
}
case 2150:
{
parser.yyVAL.item = &ast.ShowStmt{
Tp: ast.ShowBindingCacheStatus,
}
}
case 2151:
{
parser.yyVAL.item = &ast.ShowStmt{
Tp: ast.ShowProcedureStatus,
}
}
case 2152:
{
// This statement is similar to SHOW PROCEDURE STATUS but for stored functions.
// See http://dev.mysql.com/doc/refman/5.7/en/show-function-status.html
// We do not support neither stored functions nor stored procedures.
// So we reuse show procedure status process logic.
parser.yyVAL.item = &ast.ShowStmt{
Tp: ast.ShowFunctionStatus,
}
}
case 2153:
{
parser.yyVAL.item = &ast.ShowStmt{
Tp: ast.ShowEvents,
DBName: yyS[yypt-0].ident,
}
}
case 2154:
{
parser.yyVAL.item = &ast.ShowStmt{
Tp: ast.ShowPlugins,
}
}
case 2155:
{
parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowSessionStates}
}
case 2156:
{
parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowStatsExtended}
}
case 2157:
{
parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowStatsMeta, Table: &ast.TableName{Name: ast.NewCIStr("STATS_META"), Schema: ast.NewCIStr(mysql.SystemDB)}}
}
case 2158:
{
parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowStatsHistograms, Table: &ast.TableName{Name: ast.NewCIStr("STATS_HISTOGRAMS"), Schema: ast.NewCIStr(mysql.SystemDB)}}
}
case 2159:
{
parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowStatsTopN}
}
case 2160:
{
parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowStatsBuckets, Table: &ast.TableName{Name: ast.NewCIStr("STATS_BUCKETS"), Schema: ast.NewCIStr(mysql.SystemDB)}}
}
case 2161:
{
parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowStatsHealthy}
}
case 2162:
{
parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowStatsLocked, Table: &ast.TableName{Name: ast.NewCIStr("STATS_TABLE_LOCKED"), Schema: ast.NewCIStr(mysql.SystemDB)}}
}
case 2163:
{
parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowHistogramsInFlight}
}
case 2164:
{
parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowColumnStatsUsage}
}
case 2165:
{
parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowAnalyzeStatus}
}
case 2166:
{
parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowBackups}
}
case 2167:
{
parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowRestores}
}
case 2168:
{
parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowPlacement}
}
case 2169:
{
parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowPlacementLabels}
}
case 2170:
{
parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowImportGroups}
}
case 2171:
{
parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowImportGroups, ShowGroupKey: yyS[yypt-0].ident}
}
case 2172:
{
parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowImportJobs}
}
case 2173:
{
parser.yyVAL.item = &ast.ShowStmt{Tp: ast.ShowDistributionJobs}
}
case 2174:
{
parser.yyVAL.item = nil
}
case 2175:
{
parser.yyVAL.item = &ast.PatternLikeOrIlikeExpr{
Pattern: yyS[yypt-0].expr,
Escape: '\\',
IsLike: true,
}
}
case 2176:
{
parser.yyVAL.item = yyS[yypt-0].expr
}
case 2177:
{
parser.yyVAL.item = false
}
case 2178:
{
parser.yyVAL.item = true
}
case 2179:
{
parser.yyVAL.item = false
}
case 2180:
{
parser.yyVAL.item = ast.StatementScopeSession
}
case 2181:
{
parser.yyVAL.item = ast.StatementScopeGlobal
}
case 2182:
{
parser.yyVAL.item = ast.StatementScopeInstance
}
case 2183:
{
parser.yyVAL.item = ast.StatementScopeSession
}
case 2184:
{
parser.yyVAL.item = false
}
case 2185:
{
parser.yyVAL.item = true
}
case 2186:
{
parser.yyVAL.ident = ""
}
case 2187:
{
parser.yyVAL.ident = yyS[yypt-0].ident
}
case 2188:
{
parser.yyVAL.item = yyS[yypt-0].item.(*ast.TableName)
}
case 2191:
{
tmp := yyS[yypt-0].item.(*ast.FlushStmt)
tmp.NoWriteToBinLog = yyS[yypt-1].item.(bool)
parser.yyVAL.statement = tmp
}
case 2192:
{
parser.yyVAL.item = []string{yyS[yypt-0].ident}
}
case 2193:
{
parser.yyVAL.item = append(yyS[yypt-2].item.([]string), yyS[yypt-0].ident)
}
case 2194:
{
parser.yyVAL.item = &ast.FlushStmt{
Tp: ast.FlushPrivileges,
}
}
case 2195:
{
parser.yyVAL.item = &ast.FlushStmt{
Tp: ast.FlushStatus,
}
}
case 2196:
{
parser.yyVAL.item = &ast.FlushStmt{
Tp: ast.FlushTiDBPlugin,
Plugins: yyS[yypt-0].item.([]string),
}
}
case 2197:
{
parser.yyVAL.item = &ast.FlushStmt{
Tp: ast.FlushHosts,
}
}
case 2198:
{
parser.yyVAL.item = &ast.FlushStmt{
Tp: ast.FlushLogs,
LogType: yyS[yypt-1].item.(ast.LogType),
}
}
case 2199:
{
parser.yyVAL.item = &ast.FlushStmt{
Tp: ast.FlushTables,
Tables: yyS[yypt-1].item.([]*ast.TableName),
ReadLock: yyS[yypt-0].item.(bool),
}
}
case 2200:
{
parser.yyVAL.item = &ast.FlushStmt{
Tp: ast.FlushClientErrorsSummary,
}
}
case 2201:
{
parser.yyVAL.item = ast.LogTypeDefault
}
case 2202:
{
parser.yyVAL.item = ast.LogTypeBinary
}
case 2203:
{
parser.yyVAL.item = ast.LogTypeEngine
}
case 2204:
{
parser.yyVAL.item = ast.LogTypeError
}
case 2205:
{
parser.yyVAL.item = ast.LogTypeGeneral
}
case 2206:
{
parser.yyVAL.item = ast.LogTypeSlow
}
case 2207:
{
parser.yyVAL.item = false
}
case 2208:
{
parser.yyVAL.item = true
}
case 2209:
{
parser.yyVAL.item = true
}
case 2210:
{
parser.yyVAL.item = []*ast.TableName{}
}
case 2212:
{
parser.yyVAL.item = false
}
case 2213:
{
parser.yyVAL.item = true
}
case 2294:
{
var sel ast.StmtNode
switch x := yyS[yypt-0].expr.(*ast.SubqueryExpr).Query.(type) {
case *ast.SelectStmt:
x.IsInBraces = true
sel = x
case *ast.SetOprStmt:
x.IsInBraces = true
sel = x
}
parser.yyVAL.statement = sel
}
case 2322:
{
var sel ast.StmtNode
switch x := yyS[yypt-0].expr.(*ast.SubqueryExpr).Query.(type) {
case *ast.SelectStmt:
x.IsInBraces = true
sel = x
case *ast.SetOprStmt:
x.IsInBraces = true
sel = x
}
parser.yyVAL.statement = sel
}
case 2338:
{
var sel ast.StmtNode
switch x := yyS[yypt-0].expr.(*ast.SubqueryExpr).Query.(type) {
case *ast.SelectStmt:
x.IsInBraces = true
sel = x
case *ast.SetOprStmt:
x.IsInBraces = true
sel = x
}
parser.yyVAL.statement = sel
}
case 2341:
{
if yyS[yypt-0].statement != nil {
s := yyS[yypt-0].statement
if lexer, ok := yylex.(stmtTexter); ok {
s.SetText(parser.lexer.client, lexer.stmtText())
}
parser.result = append(parser.result, s)
}
}
case 2342:
{
if yyS[yypt-0].statement != nil {
s := yyS[yypt-0].statement
if lexer, ok := yylex.(stmtTexter); ok {
s.SetText(parser.lexer.client, lexer.stmtText())
}
parser.result = append(parser.result, s)
}
}
case 2343:
{
cst := yyS[yypt-0].item.(*ast.Constraint)
if yyS[yypt-1].item != nil {
cst.Name = yyS[yypt-1].item.(string)
cst.IsEmptyIndex = len(cst.Name) == 0
}
parser.yyVAL.item = cst
}
case 2344:
{
c := &ast.Constraint{
IfNotExists: yyS[yypt-5].item.(bool),
Tp: ast.ConstraintVector,
Keys: yyS[yypt-2].item.([]*ast.IndexPartSpecification),
Name: yyS[yypt-4].item.([]interface{})[0].(*ast.NullString).String,
IsEmptyIndex: yyS[yypt-4].item.([]interface{})[0].(*ast.NullString).Empty,
}
if yyS[yypt-0].item != nil {
c.Option = yyS[yypt-0].item.(*ast.IndexOption)
} else {
c.Option = &ast.IndexOption{}
}
if indexType := yyS[yypt-4].item.([]interface{})[1]; indexType != nil {
c.Option.Tp = indexType.(ast.IndexType)
}
parser.yyVAL.item = c
}
case 2345:
{
c := &ast.Constraint{
IfNotExists: yyS[yypt-5].item.(bool),
Tp: ast.ConstraintColumnar,
Keys: yyS[yypt-2].item.([]*ast.IndexPartSpecification),
Name: yyS[yypt-4].item.([]interface{})[0].(*ast.NullString).String,
IsEmptyIndex: yyS[yypt-4].item.([]interface{})[0].(*ast.NullString).Empty,
}
if yyS[yypt-0].item != nil {
c.Option = yyS[yypt-0].item.(*ast.IndexOption)
} else {
c.Option = &ast.IndexOption{}
}
if indexType := yyS[yypt-4].item.([]interface{})[1]; indexType != nil {
c.Option.Tp = indexType.(ast.IndexType)
}
parser.yyVAL.item = c
}
case 2348:
{
parser.yyVAL.item = yyS[yypt-0].item.(*ast.Constraint)
}
case 2353:
{
if yyS[yypt-0].item != nil {
parser.yyVAL.item = []interface{}{yyS[yypt-0].item.(interface{})}
} else {
parser.yyVAL.item = []interface{}{}
}
}
case 2354:
{
if yyS[yypt-0].item != nil {
parser.yyVAL.item = append(yyS[yypt-2].item.([]interface{}), yyS[yypt-0].item)
} else {
parser.yyVAL.item = yyS[yypt-2].item
}
}
case 2355:
{
var columnDefs []*ast.ColumnDef
var constraints []*ast.Constraint
parser.yyVAL.item = &ast.CreateTableStmt{
Cols: columnDefs,
Constraints: constraints,
}
}
case 2356:
{
tes := yyS[yypt-1].item.([]interface{})
var columnDefs []*ast.ColumnDef
var constraints []*ast.Constraint
for _, te := range tes {
switch te := te.(type) {
case *ast.ColumnDef:
columnDefs = append(columnDefs, te)
case *ast.Constraint:
constraints = append(constraints, te)
}
}
parser.yyVAL.item = &ast.CreateTableStmt{
Cols: columnDefs,
Constraints: constraints,
}
}
case 2358:
{
parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionCharset, StrValue: yyS[yypt-0].ident,
UintValue: ast.TableOptionCharsetWithoutConvertTo}
}
case 2359:
{
parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionCollate, StrValue: yyS[yypt-0].ident,
UintValue: ast.TableOptionCharsetWithoutConvertTo}
}
case 2360:
{
parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionAutoIncrement, UintValue: yyS[yypt-0].item.(uint64), BoolValue: yyS[yypt-3].item.(bool)}
}
case 2361:
{
parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionAutoIdCache, UintValue: yyS[yypt-0].item.(uint64)}
}
case 2362:
{
parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionAutoRandomBase, UintValue: yyS[yypt-0].item.(uint64), BoolValue: yyS[yypt-3].item.(bool)}
}
case 2363:
{
parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionAvgRowLength, UintValue: yyS[yypt-0].item.(uint64)}
}
case 2364:
{
parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionConnection, StrValue: yyS[yypt-0].ident}
}
case 2365:
{
parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionCheckSum, UintValue: yyS[yypt-0].item.(uint64)}
}
case 2366:
{
parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionTableCheckSum, UintValue: yyS[yypt-0].item.(uint64)}
}
case 2367:
{
parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionPassword, StrValue: yyS[yypt-0].ident}
}
case 2368:
{
parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionCompression, StrValue: yyS[yypt-0].ident}
}
case 2369:
{
parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionKeyBlockSize, UintValue: yyS[yypt-0].item.(uint64)}
}
case 2370:
{
parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionDelayKeyWrite, UintValue: yyS[yypt-0].item.(uint64)}
}
case 2371:
{
parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionRowFormat, UintValue: yyS[yypt-0].item.(uint64)}
}
case 2372:
{
parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionStatsPersistent}
}
case 2373:
{
n := yyS[yypt-0].item.(uint64)
if n != 0 && n != 1 {
yylex.AppendError(yylex.Errorf("The value of STATS_AUTO_RECALC must be one of [0|1|DEFAULT]."))
return 1
}
parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionStatsAutoRecalc, UintValue: n}
yylex.AppendError(yylex.Errorf("The STATS_AUTO_RECALC is parsed but ignored by all storage engines."))
parser.lastErrorAsWarn()
}
case 2374:
{
parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionStatsAutoRecalc, Default: true}
yylex.AppendError(yylex.Errorf("The STATS_AUTO_RECALC is parsed but ignored by all storage engines."))
parser.lastErrorAsWarn()
}
case 2375:
{
// Parse it but will ignore it.
// In MySQL, STATS_SAMPLE_PAGES=N(Where 0<N<=65535) or STAS_SAMPLE_PAGES=DEFAULT.
// Cause we don't support it, so we don't check range of the value.
parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionStatsSamplePages, UintValue: yyS[yypt-0].item.(uint64)}
yylex.AppendError(yylex.Errorf("The STATS_SAMPLE_PAGES is parsed but ignored by all storage engines."))
parser.lastErrorAsWarn()
}
case 2376:
{
// Parse it but will ignore it.
// In MySQL, default value of STATS_SAMPLE_PAGES is 0.
parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionStatsSamplePages, Default: true}
yylex.AppendError(yylex.Errorf("The STATS_SAMPLE_PAGES is parsed but ignored by all storage engines."))
parser.lastErrorAsWarn()
}
case 2377:
{
parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionStatsBuckets, UintValue: yyS[yypt-0].item.(uint64)}
}
case 2378:
{
parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionStatsTopN, UintValue: yyS[yypt-0].item.(uint64)}
}
case 2379:
{
parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionStatsSampleRate, Value: ast.NewValueExpr(yyS[yypt-0].item, "", "")}
}
case 2380:
{
parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionStatsColsChoice, StrValue: yyS[yypt-0].ident}
}
case 2381:
{
parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionStatsColList, StrValue: yyS[yypt-0].ident}
}
case 2382:
{
parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionShardRowID, UintValue: yyS[yypt-0].item.(uint64)}
}
case 2383:
{
parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionPreSplitRegion, UintValue: yyS[yypt-0].item.(uint64)}
}
case 2384:
{
// Parse it but will ignore it.
parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionPackKeys}
}
case 2385:
{
// Parse it but will ignore it.
parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionStorageMedia, StrValue: "MEMORY"}
yylex.AppendError(yylex.Errorf("The STORAGE clause is parsed but ignored by all storage engines."))
parser.lastErrorAsWarn()
}
case 2386:
{
// Parse it but will ignore it.
parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionStorageMedia, StrValue: "DISK"}
yylex.AppendError(yylex.Errorf("The STORAGE clause is parsed but ignored by all storage engines."))
parser.lastErrorAsWarn()
}
case 2387:
{
// Parse it but will ignore it
parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionSecondaryEngineNull}
yylex.AppendError(yylex.Errorf("The SECONDARY_ENGINE clause is parsed but ignored by all storage engines."))
parser.lastErrorAsWarn()
}
case 2388:
{
// Parse it but will ignore it
parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionSecondaryEngine, StrValue: yyS[yypt-0].ident}
yylex.AppendError(yylex.Errorf("The SECONDARY_ENGINE clause is parsed but ignored by all storage engines."))
parser.lastErrorAsWarn()
}
case 2389:
{
// Parse it but will ignore it
parser.yyVAL.item = &ast.TableOption{
Tp: ast.TableOptionUnion,
TableNames: yyS[yypt-1].item.([]*ast.TableName),
}
yylex.AppendError(yylex.Errorf("The UNION option is parsed but ignored by all storage engines."))
parser.lastErrorAsWarn()
}
case 2390:
{
// Parse it but will ignore it
parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionEncryption, StrValue: yyS[yypt-0].ident}
}
case 2391:
{
parser.yyVAL.item = &ast.TableOption{
Tp: ast.TableOptionTTL,
ColumnName: &ast.ColumnName{Name: ast.NewCIStr(yyS[yypt-4].ident)},
Value: ast.NewValueExpr(yyS[yypt-1].expr, parser.charset, parser.collation),
TimeUnitValue: &ast.TimeUnitExpr{Unit: yyS[yypt-0].item.(ast.TimeUnitType)},
}
}
case 2392:
{
onOrOff := strings.ToLower(yyS[yypt-0].ident)
if onOrOff == "on" {
parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionTTLEnable, BoolValue: true}
} else if onOrOff == "off" {
parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionTTLEnable, BoolValue: false}
} else {
yylex.AppendError(yylex.Errorf("The TTL_ENABLE option has to be set 'ON' or 'OFF'"))
return 1
}
}
case 2393:
{
_, err := duration.ParseDuration(yyS[yypt-0].ident)
if err != nil {
yylex.AppendError(yylex.Errorf("The TTL_JOB_INTERVAL option is not a valid duration: %s", err.Error()))
return 1
}
parser.yyVAL.item = &ast.TableOption{Tp: ast.TableOptionTTLJobInterval, StrValue: yyS[yypt-0].ident}
}
case 2394:
{
parser.yyVAL.item = false
}
case 2395:
{
parser.yyVAL.item = true
}
case 2398:
{
parser.yyVAL.item = []*ast.TableOption{}
}
case 2400:
{
parser.yyVAL.item = []*ast.TableOption{yyS[yypt-0].item.(*ast.TableOption)}
}
case 2401:
{
parser.yyVAL.item = append(yyS[yypt-1].item.([]*ast.TableOption), yyS[yypt-0].item.(*ast.TableOption))
}
case 2402:
{
parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.TableOption), yyS[yypt-0].item.(*ast.TableOption))
}
case 2405:
{
parser.yyVAL.statement = &ast.TruncateTableStmt{Table: yyS[yypt-0].item.(*ast.TableName)}
}
case 2406:
{
parser.yyVAL.item = ast.RowFormatDefault
}
case 2407:
{
parser.yyVAL.item = ast.RowFormatDynamic
}
case 2408:
{
parser.yyVAL.item = ast.RowFormatFixed
}
case 2409:
{
parser.yyVAL.item = ast.RowFormatCompressed
}
case 2410:
{
parser.yyVAL.item = ast.RowFormatRedundant
}
case 2411:
{
parser.yyVAL.item = ast.RowFormatCompact
}
case 2412:
{
parser.yyVAL.item = ast.TokuDBRowFormatDefault
}
case 2413:
{
parser.yyVAL.item = ast.TokuDBRowFormatFast
}
case 2414:
{
parser.yyVAL.item = ast.TokuDBRowFormatSmall
}
case 2415:
{
parser.yyVAL.item = ast.TokuDBRowFormatZlib
}
case 2416:
{
parser.yyVAL.item = ast.TokuDBRowFormatZstd
}
case 2417:
{
parser.yyVAL.item = ast.TokuDBRowFormatQuickLZ
}
case 2418:
{
parser.yyVAL.item = ast.TokuDBRowFormatLzma
}
case 2419:
{
parser.yyVAL.item = ast.TokuDBRowFormatSnappy
}
case 2420:
{
parser.yyVAL.item = ast.TokuDBRowFormatUncompressed
}
case 2424:
{
// TODO: check flen 0
tp := types.NewFieldType(yyS[yypt-2].item.(byte))
tp.SetFlen(yyS[yypt-1].item.(int))
for _, o := range yyS[yypt-0].item.([]*ast.TypeOpt) {
if o.IsUnsigned {
tp.AddFlag(mysql.UnsignedFlag)
}
if o.IsZerofill {
tp.AddFlag(mysql.ZerofillFlag)
}
}
parser.yyVAL.item = tp
}
case 2425:
{
// TODO: check flen 0
tp := types.NewFieldType(yyS[yypt-1].item.(byte))
tp.SetFlen(1)
for _, o := range yyS[yypt-0].item.([]*ast.TypeOpt) {
if o.IsUnsigned {
tp.AddFlag(mysql.UnsignedFlag)
}
if o.IsZerofill {
tp.AddFlag(mysql.ZerofillFlag)
}
}
parser.yyVAL.item = tp
}
case 2426:
{
fopt := yyS[yypt-1].item.(*ast.FloatOpt)
tp := types.NewFieldType(yyS[yypt-2].item.(byte))
tp.SetFlen(fopt.Flen)
tp.SetDecimal(fopt.Decimal)
for _, o := range yyS[yypt-0].item.([]*ast.TypeOpt) {
if o.IsUnsigned {
tp.AddFlag(mysql.UnsignedFlag)
}
if o.IsZerofill {
tp.AddFlag(mysql.ZerofillFlag)
}
}
parser.yyVAL.item = tp
}
case 2427:
{
fopt := yyS[yypt-1].item.(*ast.FloatOpt)
tp := types.NewFieldType(yyS[yypt-2].item.(byte))
// check for a double(10) for syntax error
if tp.GetType() == mysql.TypeDouble && parser.strictDoubleFieldType {
if fopt.Flen != types.UnspecifiedLength && fopt.Decimal == types.UnspecifiedLength {
yylex.AppendError(ErrSyntax)
return 1
}
}
tp.SetFlen(fopt.Flen)
if tp.GetType() == mysql.TypeFloat && fopt.Decimal == types.UnspecifiedLength && tp.GetFlen() <= mysql.MaxDoublePrecisionLength {
if tp.GetFlen() > mysql.MaxFloatPrecisionLength {
tp.SetType(mysql.TypeDouble)
}
tp.SetFlen(types.UnspecifiedLength)
}
tp.SetDecimal(fopt.Decimal)
for _, o := range yyS[yypt-0].item.([]*ast.TypeOpt) {
if o.IsUnsigned {
tp.AddFlag(mysql.UnsignedFlag)
}
if o.IsZerofill {
tp.AddFlag(mysql.ZerofillFlag)
}
}
parser.yyVAL.item = tp
}
case 2428:
{
tp := types.NewFieldType(yyS[yypt-1].item.(byte))
tp.SetFlen(yyS[yypt-0].item.(int))
if tp.GetFlen() == types.UnspecifiedLength {
tp.SetFlen(1)
}
parser.yyVAL.item = tp
}
case 2429:
{
parser.yyVAL.item = mysql.TypeTiny
}
case 2430:
{
parser.yyVAL.item = mysql.TypeShort
}
case 2431:
{
parser.yyVAL.item = mysql.TypeInt24
}
case 2432:
{
parser.yyVAL.item = mysql.TypeInt24
}
case 2433:
{
parser.yyVAL.item = mysql.TypeLong
}
case 2434:
{
parser.yyVAL.item = mysql.TypeTiny
}
case 2435:
{
parser.yyVAL.item = mysql.TypeShort
}
case 2436:
{
parser.yyVAL.item = mysql.TypeInt24
}
case 2437:
{
parser.yyVAL.item = mysql.TypeLong
}
case 2438:
{
parser.yyVAL.item = mysql.TypeLonglong
}
case 2439:
{
parser.yyVAL.item = mysql.TypeLong
}
case 2440:
{
parser.yyVAL.item = mysql.TypeLonglong
}
case 2441:
{
parser.yyVAL.item = mysql.TypeTiny
}
case 2442:
{
parser.yyVAL.item = mysql.TypeTiny
}
case 2446:
{
parser.yyVAL.item = mysql.TypeNewDecimal
}
case 2447:
{
parser.yyVAL.item = mysql.TypeNewDecimal
}
case 2448:
{
parser.yyVAL.item = mysql.TypeNewDecimal
}
case 2449:
{
parser.yyVAL.item = mysql.TypeFloat
}
case 2450:
{
if parser.lexer.GetSQLMode().HasRealAsFloatMode() {
parser.yyVAL.item = mysql.TypeFloat
} else {
parser.yyVAL.item = mysql.TypeDouble
}
}
case 2451:
{
parser.yyVAL.item = mysql.TypeDouble
}
case 2452:
{
parser.yyVAL.item = mysql.TypeDouble
}
case 2453:
{
parser.yyVAL.item = mysql.TypeFloat
}
case 2454:
{
parser.yyVAL.item = mysql.TypeDouble
}
case 2455:
{
parser.yyVAL.item = mysql.TypeBit
}
case 2456:
{
tp := types.NewFieldType(mysql.TypeString)
tp.SetFlen(yyS[yypt-1].item.(int))
tp.SetCharset(yyS[yypt-0].item.(*ast.OptBinary).Charset)
if yyS[yypt-0].item.(*ast.OptBinary).IsBinary {
tp.AddFlag(mysql.BinaryFlag)
}
parser.yyVAL.item = tp
}
case 2457:
{
tp := types.NewFieldType(mysql.TypeString)
tp.SetCharset(yyS[yypt-0].item.(*ast.OptBinary).Charset)
if yyS[yypt-0].item.(*ast.OptBinary).IsBinary {
tp.AddFlag(mysql.BinaryFlag)
}
parser.yyVAL.item = tp
}
case 2458:
{
tp := types.NewFieldType(mysql.TypeString)
tp.SetFlen(yyS[yypt-1].item.(int))
tp.SetCharset(yyS[yypt-0].item.(*ast.OptBinary).Charset)
if yyS[yypt-0].item.(*ast.OptBinary).IsBinary {
tp.AddFlag(mysql.BinaryFlag)
}
parser.yyVAL.item = tp
}
case 2459:
{
tp := types.NewFieldType(mysql.TypeString)
tp.SetCharset(yyS[yypt-0].item.(*ast.OptBinary).Charset)
if yyS[yypt-0].item.(*ast.OptBinary).IsBinary {
tp.AddFlag(mysql.BinaryFlag)
}
parser.yyVAL.item = tp
}
case 2460:
{
tp := types.NewFieldType(mysql.TypeVarchar)
tp.SetFlen(yyS[yypt-1].item.(int))
tp.SetCharset(yyS[yypt-0].item.(*ast.OptBinary).Charset)
if yyS[yypt-0].item.(*ast.OptBinary).IsBinary {
tp.AddFlag(mysql.BinaryFlag)
}
parser.yyVAL.item = tp
}
case 2461:
{
tp := types.NewFieldType(mysql.TypeVarchar)
tp.SetFlen(yyS[yypt-1].item.(int))
tp.SetCharset(yyS[yypt-0].item.(*ast.OptBinary).Charset)
if yyS[yypt-0].item.(*ast.OptBinary).IsBinary {
tp.AddFlag(mysql.BinaryFlag)
}
parser.yyVAL.item = tp
}
case 2462:
{
tp := types.NewFieldType(mysql.TypeString)
tp.SetFlen(yyS[yypt-0].item.(int))
tp.SetCharset(charset.CharsetBin)
tp.SetCollate(charset.CharsetBin)
tp.AddFlag(mysql.BinaryFlag)
parser.yyVAL.item = tp
}
case 2463:
{
tp := types.NewFieldType(mysql.TypeVarchar)
tp.SetFlen(yyS[yypt-0].item.(int))
tp.SetCharset(charset.CharsetBin)
tp.SetCollate(charset.CharsetBin)
tp.AddFlag(mysql.BinaryFlag)
parser.yyVAL.item = tp
}
case 2464:
{
tp := yyS[yypt-0].item.(*types.FieldType)
tp.SetCharset(charset.CharsetBin)
tp.SetCollate(charset.CharsetBin)
tp.AddFlag(mysql.BinaryFlag)
parser.yyVAL.item = tp
}
case 2465:
{
tp := yyS[yypt-1].item.(*types.FieldType)
tp.SetCharset(yyS[yypt-0].item.(*ast.OptBinary).Charset)
if yyS[yypt-0].item.(*ast.OptBinary).Charset == charset.CharsetBin {
tp.AddFlag(mysql.BinaryFlag)
tp.SetCollate(charset.CollationBin)
}
if yyS[yypt-0].item.(*ast.OptBinary).IsBinary {
tp.AddFlag(mysql.BinaryFlag)
}
parser.yyVAL.item = tp
}
case 2466:
{
tp := types.NewFieldType(mysql.TypeEnum)
elems := yyS[yypt-2].item.([]*ast.TextString)
opt := yyS[yypt-0].item.(*ast.OptBinary)
tp.SetElems(make([]string, len(elems)))
fieldLen := -1 // enum_flen = max(ele_flen)
for i, e := range elems {
trimmed := strings.TrimRight(e.Value, " ")
tp.SetElemWithIsBinaryLit(i, trimmed, e.IsBinaryLiteral)
if len(trimmed) > fieldLen {
fieldLen = len(trimmed)
}
}
tp.SetFlen(fieldLen)
tp.SetCharset(opt.Charset)
if opt.IsBinary {
tp.AddFlag(mysql.BinaryFlag)
}
parser.yyVAL.item = tp
}
case 2467:
{
tp := types.NewFieldType(mysql.TypeSet)
elems := yyS[yypt-2].item.([]*ast.TextString)
opt := yyS[yypt-0].item.(*ast.OptBinary)
tp.SetElems(make([]string, len(elems)))
fieldLen := len(elems) - 1 // set_flen = sum(ele_flen) + number_of_ele - 1
for i, e := range elems {
trimmed := strings.TrimRight(e.Value, " ")
tp.SetElemWithIsBinaryLit(i, trimmed, e.IsBinaryLiteral)
fieldLen += len(trimmed)
}
tp.SetFlen(fieldLen)
tp.SetCharset(opt.Charset)
if opt.IsBinary {
tp.AddFlag(mysql.BinaryFlag)
}
parser.yyVAL.item = tp
}
case 2468:
{
tp := types.NewFieldType(mysql.TypeJSON)
tp.SetDecimal(0)
tp.SetCharset(charset.CharsetBin)
tp.SetCollate(charset.CollationBin)
parser.yyVAL.item = tp
}
case 2469:
{
tp := types.NewFieldType(mysql.TypeMediumBlob)
tp.SetCharset(yyS[yypt-0].item.(*ast.OptBinary).Charset)
if yyS[yypt-0].item.(*ast.OptBinary).Charset == charset.CharsetBin {
tp.AddFlag(mysql.BinaryFlag)
tp.SetCollate(charset.CollationBin)
}
if yyS[yypt-0].item.(*ast.OptBinary).IsBinary {
tp.AddFlag(mysql.BinaryFlag)
}
parser.yyVAL.item = tp
}
case 2470:
{
tp := types.NewFieldType(mysql.TypeMediumBlob)
tp.SetCharset(yyS[yypt-0].item.(*ast.OptBinary).Charset)
if yyS[yypt-0].item.(*ast.OptBinary).Charset == charset.CharsetBin {
tp.AddFlag(mysql.BinaryFlag)
tp.SetCollate(charset.CollationBin)
}
if yyS[yypt-0].item.(*ast.OptBinary).IsBinary {
tp.AddFlag(mysql.BinaryFlag)
}
parser.yyVAL.item = tp
}
case 2471:
{
elementType := yyS[yypt-1].item.(*ast.VectorElementType)
if elementType.Tp != mysql.TypeFloat {
yylex.AppendError(yylex.Errorf("Only VECTOR is supported for now"))
}
tp := types.NewFieldType(mysql.TypeTiDBVectorFloat32)
tp.SetFlen(yyS[yypt-0].item.(int))
tp.SetDecimal(0)
tp.SetCharset(charset.CharsetBin)
tp.SetCollate(charset.CollationBin)
parser.yyVAL.item = tp
}
case 2491:
{
tp := types.NewFieldType(mysql.TypeTinyBlob)
parser.yyVAL.item = tp
}
case 2492:
{
tp := types.NewFieldType(mysql.TypeBlob)
tp.SetFlen(yyS[yypt-0].item.(int))
parser.yyVAL.item = tp
}
case 2493:
{
tp := types.NewFieldType(mysql.TypeMediumBlob)
parser.yyVAL.item = tp
}
case 2494:
{
tp := types.NewFieldType(mysql.TypeLongBlob)
parser.yyVAL.item = tp
}
case 2495:
{
tp := types.NewFieldType(mysql.TypeMediumBlob)
parser.yyVAL.item = tp
}
case 2496:
{
tp := types.NewFieldType(mysql.TypeTinyBlob)
parser.yyVAL.item = tp
}
case 2497:
{
tp := types.NewFieldType(mysql.TypeBlob)
tp.SetFlen(yyS[yypt-0].item.(int))
parser.yyVAL.item = tp
}
case 2498:
{
tp := types.NewFieldType(mysql.TypeMediumBlob)
parser.yyVAL.item = tp
}
case 2499:
{
tp := types.NewFieldType(mysql.TypeLongBlob)
parser.yyVAL.item = tp
}
case 2501:
{
parser.yyVAL.item = &ast.OptBinary{
IsBinary: false,
Charset: charset.CharsetLatin1,
}
}
case 2502:
{
cs, err := charset.GetCharsetInfo("ucs2")
if err != nil {
yylex.AppendError(ErrUnknownCharacterSet.GenWithStackByArgs("ucs2"))
return 1
}
parser.yyVAL.item = &ast.OptBinary{
IsBinary: false,
Charset: cs.Name,
}
}
case 2503:
{
parser.yyVAL.item = &ast.OptBinary{
IsBinary: false,
Charset: charset.CharsetBin,
}
}
case 2504:
{
tp := types.NewFieldType(mysql.TypeDate)
parser.yyVAL.item = tp
}
case 2505:
{
tp := types.NewFieldType(mysql.TypeDatetime)
tp.SetFlen(mysql.MaxDatetimeWidthNoFsp)
tp.SetDecimal(yyS[yypt-0].item.(int))
if tp.GetDecimal() > 0 {
tp.SetFlen(tp.GetFlen() + 1 + tp.GetDecimal())
}
parser.yyVAL.item = tp
}
case 2506:
{
tp := types.NewFieldType(mysql.TypeTimestamp)
tp.SetFlen(mysql.MaxDatetimeWidthNoFsp)
tp.SetDecimal(yyS[yypt-0].item.(int))
if tp.GetDecimal() > 0 {
tp.SetFlen(tp.GetFlen() + 1 + tp.GetDecimal())
}
parser.yyVAL.item = tp
}
case 2507:
{
tp := types.NewFieldType(mysql.TypeDuration)
tp.SetFlen(mysql.MaxDurationWidthNoFsp)
tp.SetDecimal(yyS[yypt-0].item.(int))
if tp.GetDecimal() > 0 {
tp.SetFlen(tp.GetFlen() + 1 + tp.GetDecimal())
}
parser.yyVAL.item = tp
}
case 2508:
{
tp := types.NewFieldType(mysql.TypeYear)
tp.SetFlen(yyS[yypt-1].item.(int))
if tp.GetFlen() != types.UnspecifiedLength && tp.GetFlen() != 4 {
yylex.AppendError(ErrInvalidYearColumnLength.GenWithStackByArgs())
return -1
}
parser.yyVAL.item = tp
}
case 2509:
{
parser.yyVAL.item = int(yyS[yypt-1].item.(uint64))
}
case 2510:
{
parser.yyVAL.item = types.UnspecifiedLength
}
case 2512:
{
parser.yyVAL.item = &ast.TypeOpt{IsUnsigned: true}
}
case 2513:
{
parser.yyVAL.item = &ast.TypeOpt{IsUnsigned: false}
}
case 2514:
{
parser.yyVAL.item = &ast.TypeOpt{IsZerofill: true, IsUnsigned: true}
}
case 2515:
{
parser.yyVAL.item = []*ast.TypeOpt{}
}
case 2516:
{
parser.yyVAL.item = append(yyS[yypt-1].item.([]*ast.TypeOpt), yyS[yypt-0].item.(*ast.TypeOpt))
}
case 2517:
{
parser.yyVAL.item = &ast.FloatOpt{Flen: types.UnspecifiedLength, Decimal: types.UnspecifiedLength}
}
case 2518:
{
parser.yyVAL.item = &ast.FloatOpt{Flen: yyS[yypt-0].item.(int), Decimal: types.UnspecifiedLength}
}
case 2520:
{
parser.yyVAL.item = &ast.FloatOpt{Flen: int(yyS[yypt-3].item.(uint64)), Decimal: int(yyS[yypt-1].item.(uint64))}
}
case 2521:
{
parser.yyVAL.item = false
}
case 2522:
{
parser.yyVAL.item = true
}
case 2523:
{
parser.yyVAL.item = &ast.VectorElementType{
Tp: mysql.TypeFloat,
}
}
case 2524:
{
parser.yyVAL.item = &ast.VectorElementType{
Tp: mysql.TypeFloat,
}
}
case 2525:
{
parser.yyVAL.item = &ast.VectorElementType{
Tp: mysql.TypeDouble,
}
}
case 2526:
{
parser.yyVAL.item = &ast.OptBinary{
IsBinary: false,
Charset: "",
}
}
case 2527:
{
parser.yyVAL.item = &ast.OptBinary{
IsBinary: true,
Charset: yyS[yypt-0].ident,
}
}
case 2528:
{
parser.yyVAL.item = &ast.OptBinary{
IsBinary: yyS[yypt-0].item.(bool),
Charset: yyS[yypt-1].ident,
}
}
case 2529:
{
parser.yyVAL.ident = ""
}
case 2530:
{
parser.yyVAL.ident = yyS[yypt-0].ident
}
case 2534:
{
parser.yyVAL.ident = ""
}
case 2535:
{
parser.yyVAL.ident = yyS[yypt-0].ident
}
case 2536:
{
parser.yyVAL.item = []string{yyS[yypt-0].ident}
}
case 2537:
{
parser.yyVAL.item = append(yyS[yypt-2].item.([]string), yyS[yypt-0].ident)
}
case 2538:
{
parser.yyVAL.item = &ast.TextString{Value: yyS[yypt-0].ident}
}
case 2539:
{
parser.yyVAL.item = &ast.TextString{Value: yyS[yypt-0].item.(ast.BinaryLiteral).ToString(), IsBinaryLiteral: true}
}
case 2540:
{
parser.yyVAL.item = &ast.TextString{Value: yyS[yypt-0].item.(ast.BinaryLiteral).ToString(), IsBinaryLiteral: true}
}
case 2541:
{
parser.yyVAL.item = []*ast.TextString{yyS[yypt-0].item.(*ast.TextString)}
}
case 2542:
{
parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.TextString), yyS[yypt-0].item.(*ast.TextString))
}
case 2549:
{
u := yyS[yypt-0].statement.(*ast.UpdateStmt)
u.With = yyS[yypt-1].item.(*ast.WithClause)
parser.yyVAL.statement = u
}
case 2550:
{
var refs *ast.Join
if x, ok := yyS[yypt-5].item.(*ast.Join); ok {
refs = x
} else {
refs = &ast.Join{Left: yyS[yypt-5].item.(ast.ResultSetNode)}
}
st := &ast.UpdateStmt{
Priority: yyS[yypt-7].item.(mysql.PriorityEnum),
TableRefs: &ast.TableRefsClause{TableRefs: refs},
List: yyS[yypt-3].item.([]*ast.Assignment),
IgnoreErr: yyS[yypt-6].item.(bool),
}
if yyS[yypt-8].item != nil {
st.TableHints = yyS[yypt-8].item.([]*ast.TableOptimizerHint)
}
if yyS[yypt-2].item != nil {
st.Where = yyS[yypt-2].item.(ast.ExprNode)
}
if yyS[yypt-1].item != nil {
st.Order = yyS[yypt-1].item.(*ast.OrderByClause)
}
if yyS[yypt-0].item != nil {
st.Limit = yyS[yypt-0].item.(*ast.Limit)
}
parser.yyVAL.statement = st
}
case 2551:
{
st := &ast.UpdateStmt{
Priority: yyS[yypt-5].item.(mysql.PriorityEnum),
TableRefs: &ast.TableRefsClause{TableRefs: yyS[yypt-3].item.(*ast.Join)},
List: yyS[yypt-1].item.([]*ast.Assignment),
IgnoreErr: yyS[yypt-4].item.(bool),
}
if yyS[yypt-6].item != nil {
st.TableHints = yyS[yypt-6].item.([]*ast.TableOptimizerHint)
}
if yyS[yypt-0].item != nil {
st.Where = yyS[yypt-0].item.(ast.ExprNode)
}
parser.yyVAL.statement = st
}
case 2552:
{
parser.yyVAL.statement = &ast.UseStmt{DBName: yyS[yypt-0].ident}
}
case 2553:
{
parser.yyVAL.item = yyS[yypt-0].expr
}
case 2554:
{
parser.yyVAL.item = nil
}
case 2556:
{
// See https://dev.mysql.com/doc/refman/8.0/en/create-user.html
ret := &ast.CreateUserStmt{
IsCreateRole: false,
IfNotExists: yyS[yypt-6].item.(bool),
Specs: yyS[yypt-5].item.([]*ast.UserSpec),
AuthTokenOrTLSOptions: yyS[yypt-4].item.([]*ast.AuthTokenOrTLSOption),
ResourceOptions: yyS[yypt-3].item.([]*ast.ResourceOption),
PasswordOrLockOptions: yyS[yypt-2].item.([]*ast.PasswordOrLockOption),
}
if yyS[yypt-1].item != nil {
ret.CommentOrAttributeOption = yyS[yypt-1].item.(*ast.CommentOrAttributeOption)
}
if yyS[yypt-0].item != nil {
ret.ResourceGroupNameOption = yyS[yypt-0].item.(*ast.ResourceGroupNameOption)
}
parser.yyVAL.statement = ret
}
case 2557:
{
// See https://dev.mysql.com/doc/refman/8.0/en/create-role.html
parser.yyVAL.statement = &ast.CreateUserStmt{
IsCreateRole: true,
IfNotExists: yyS[yypt-1].item.(bool),
Specs: yyS[yypt-0].item.([]*ast.UserSpec),
}
}
case 2558:
{
ret := &ast.AlterUserStmt{
IfExists: yyS[yypt-6].item.(bool),
Specs: yyS[yypt-5].item.([]*ast.UserSpec),
AuthTokenOrTLSOptions: yyS[yypt-4].item.([]*ast.AuthTokenOrTLSOption),
ResourceOptions: yyS[yypt-3].item.([]*ast.ResourceOption),
PasswordOrLockOptions: yyS[yypt-2].item.([]*ast.PasswordOrLockOption),
}
if yyS[yypt-1].item != nil {
ret.CommentOrAttributeOption = yyS[yypt-1].item.(*ast.CommentOrAttributeOption)
}
if yyS[yypt-0].item != nil {
ret.ResourceGroupNameOption = yyS[yypt-0].item.(*ast.ResourceGroupNameOption)
}
parser.yyVAL.statement = ret
}
case 2559:
{
auth := &ast.AuthOption{
AuthString: yyS[yypt-0].ident,
ByAuthString: true,
}
parser.yyVAL.statement = &ast.AlterUserStmt{
IfExists: yyS[yypt-6].item.(bool),
CurrentAuth: auth,
}
}
case 2560:
{
parser.yyVAL.statement = yyS[yypt-0].item.(*ast.AlterInstanceStmt)
}
case 2561:
{
option := yyS[yypt-0].item.(*ast.PlacementOption)
parser.yyVAL.statement = &ast.AlterRangeStmt{RangeName: ast.NewCIStr(yyS[yypt-1].ident), PlacementOption: option}
}
case 2562:
{
parser.yyVAL.item = &ast.AlterInstanceStmt{
ReloadTLS: true,
}
}
case 2563:
{
parser.yyVAL.item = &ast.AlterInstanceStmt{
ReloadTLS: true,
NoRollbackOnError: true,
}
}
case 2564:
{
userSpec := &ast.UserSpec{
User: yyS[yypt-1].item.(*auth.UserIdentity),
}
if yyS[yypt-0].item != nil {
userSpec.AuthOpt = yyS[yypt-0].item.(*ast.AuthOption)
}
parser.yyVAL.item = userSpec
}
case 2565:
{
parser.yyVAL.item = []*ast.UserSpec{yyS[yypt-0].item.(*ast.UserSpec)}
}
case 2566:
{
parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.UserSpec), yyS[yypt-0].item.(*ast.UserSpec))
}
case 2567:
{
l := []*ast.ResourceOption{}
parser.yyVAL.item = l
}
case 2568:
{
parser.yyVAL.item = yyS[yypt-0].item
needWarning := false
for _, option := range yyS[yypt-0].item.([]*ast.ResourceOption) {
switch option.Type {
case ast.MaxUserConnections:
// do nothing.
default:
needWarning = true
}
}
if needWarning {
yylex.AppendError(yylex.Errorf("TiDB does not support WITH ConnectionOptions but MAX_USER_CONNECTIONS now, they would be parsed but ignored."))
parser.lastErrorAsWarn()
}
}
case 2569:
{
parser.yyVAL.item = []*ast.ResourceOption{yyS[yypt-0].item.(*ast.ResourceOption)}
}
case 2570:
{
l := yyS[yypt-1].item.([]*ast.ResourceOption)
l = append(l, yyS[yypt-0].item.(*ast.ResourceOption))
parser.yyVAL.item = l
}
case 2571:
{
parser.yyVAL.item = &ast.ResourceOption{
Type: ast.MaxQueriesPerHour,
Count: yyS[yypt-0].item.(int64),
}
}
case 2572:
{
parser.yyVAL.item = &ast.ResourceOption{
Type: ast.MaxUpdatesPerHour,
Count: yyS[yypt-0].item.(int64),
}
}
case 2573:
{
parser.yyVAL.item = &ast.ResourceOption{
Type: ast.MaxConnectionsPerHour,
Count: yyS[yypt-0].item.(int64),
}
}
case 2574:
{
parser.yyVAL.item = &ast.ResourceOption{
Type: ast.MaxUserConnections,
Count: yyS[yypt-0].item.(int64),
}
}
case 2575:
{
parser.yyVAL.item = []*ast.AuthTokenOrTLSOption{}
}
case 2577:
{
t := &ast.AuthTokenOrTLSOption{
Type: ast.TlsNone,
}
parser.yyVAL.item = []*ast.AuthTokenOrTLSOption{t}
}
case 2578:
{
t := &ast.AuthTokenOrTLSOption{
Type: ast.Ssl,
}
parser.yyVAL.item = []*ast.AuthTokenOrTLSOption{t}
}
case 2579:
{
t := &ast.AuthTokenOrTLSOption{
Type: ast.X509,
}
parser.yyVAL.item = []*ast.AuthTokenOrTLSOption{t}
}
case 2580:
{
parser.yyVAL.item = yyS[yypt-0].item
}
case 2581:
{
parser.yyVAL.item = []*ast.AuthTokenOrTLSOption{yyS[yypt-0].item.(*ast.AuthTokenOrTLSOption)}
}
case 2582:
{
l := yyS[yypt-2].item.([]*ast.AuthTokenOrTLSOption)
l = append(l, yyS[yypt-0].item.(*ast.AuthTokenOrTLSOption))
parser.yyVAL.item = l
}
case 2583:
{
l := yyS[yypt-1].item.([]*ast.AuthTokenOrTLSOption)
l = append(l, yyS[yypt-0].item.(*ast.AuthTokenOrTLSOption))
parser.yyVAL.item = l
}
case 2584:
{
parser.yyVAL.item = &ast.AuthTokenOrTLSOption{
Type: ast.Issuer,
Value: yyS[yypt-0].ident,
}
}
case 2585:
{
parser.yyVAL.item = &ast.AuthTokenOrTLSOption{
Type: ast.Subject,
Value: yyS[yypt-0].ident,
}
}
case 2586:
{
parser.yyVAL.item = &ast.AuthTokenOrTLSOption{
Type: ast.Cipher,
Value: yyS[yypt-0].ident,
}
}
case 2587:
{
parser.yyVAL.item = &ast.AuthTokenOrTLSOption{
Type: ast.SAN,
Value: yyS[yypt-0].ident,
}
}
case 2588:
{
parser.yyVAL.item = &ast.AuthTokenOrTLSOption{
Type: ast.TokenIssuer,
Value: yyS[yypt-0].ident,
}
}
case 2589:
{
parser.yyVAL.item = nil
}
case 2590:
{
parser.yyVAL.item = &ast.CommentOrAttributeOption{Type: ast.UserCommentType, Value: yyS[yypt-0].ident}
}
case 2591:
{
parser.yyVAL.item = &ast.CommentOrAttributeOption{Type: ast.UserAttributeType, Value: yyS[yypt-0].ident}
}
case 2592:
{
parser.yyVAL.item = nil
}
case 2593:
{
parser.yyVAL.item = &ast.ResourceGroupNameOption{Value: yyS[yypt-0].ident}
}
case 2594:
{
parser.yyVAL.item = []*ast.PasswordOrLockOption{}
}
case 2595:
{
parser.yyVAL.item = yyS[yypt-0].item
}
case 2596:
{
parser.yyVAL.item = []*ast.PasswordOrLockOption{yyS[yypt-0].item.(*ast.PasswordOrLockOption)}
}
case 2597:
{
l := yyS[yypt-1].item.([]*ast.PasswordOrLockOption)
l = append(l, yyS[yypt-0].item.(*ast.PasswordOrLockOption))
parser.yyVAL.item = l
}
case 2598:
{
parser.yyVAL.item = &ast.PasswordOrLockOption{
Type: ast.Unlock,
}
}
case 2599:
{
parser.yyVAL.item = &ast.PasswordOrLockOption{
Type: ast.Lock,
}
}
case 2600:
{
parser.yyVAL.item = &ast.PasswordOrLockOption{
Type: ast.PasswordHistoryDefault,
}
}
case 2601:
{
parser.yyVAL.item = &ast.PasswordOrLockOption{
Type: ast.PasswordHistory,
Count: yyS[yypt-0].item.(int64),
}
}
case 2602:
{
parser.yyVAL.item = &ast.PasswordOrLockOption{
Type: ast.PasswordReuseDefault,
}
}
case 2603:
{
parser.yyVAL.item = &ast.PasswordOrLockOption{
Type: ast.PasswordReuseInterval,
Count: yyS[yypt-1].item.(int64),
}
}
case 2604:
{
parser.yyVAL.item = &ast.PasswordOrLockOption{
Type: ast.PasswordExpire,
}
}
case 2605:
{
parser.yyVAL.item = &ast.PasswordOrLockOption{
Type: ast.PasswordExpireInterval,
Count: yyS[yypt-1].item.(int64),
}
}
case 2606:
{
parser.yyVAL.item = &ast.PasswordOrLockOption{
Type: ast.PasswordExpireNever,
}
}
case 2607:
{
parser.yyVAL.item = &ast.PasswordOrLockOption{
Type: ast.PasswordExpireDefault,
}
}
case 2608:
{
parser.yyVAL.item = &ast.PasswordOrLockOption{
Type: ast.FailedLoginAttempts,
Count: yyS[yypt-0].item.(int64),
}
}
case 2609:
{
parser.yyVAL.item = &ast.PasswordOrLockOption{
Type: ast.PasswordLockTime,
Count: yyS[yypt-0].item.(int64),
}
}
case 2610:
{
parser.yyVAL.item = &ast.PasswordOrLockOption{
Type: ast.PasswordLockTimeUnbounded,
}
}
case 2611:
{
parser.yyVAL.item = &ast.PasswordOrLockOption{
Type: ast.PasswordRequireCurrentDefault,
}
}
case 2612:
{
parser.yyVAL.item = nil
}
case 2613:
{
parser.yyVAL.item = &ast.AuthOption{
AuthString: yyS[yypt-0].ident,
ByAuthString: true,
}
}
case 2614:
{
parser.yyVAL.item = &ast.AuthOption{
AuthPlugin: yyS[yypt-0].ident,
}
}
case 2615:
{
parser.yyVAL.item = &ast.AuthOption{
AuthPlugin: yyS[yypt-2].ident,
AuthString: yyS[yypt-0].ident,
ByAuthString: true,
}
}
case 2616:
{
parser.yyVAL.item = &ast.AuthOption{
AuthPlugin: yyS[yypt-2].ident,
HashString: yyS[yypt-0].ident,
ByHashString: true,
}
}
case 2617:
{
parser.yyVAL.item = &ast.AuthOption{
AuthPlugin: mysql.AuthNativePassword,
HashString: yyS[yypt-0].ident,
ByHashString: true,
}
}
case 2620:
{
parser.yyVAL.ident = yyS[yypt-0].item.(ast.BinaryLiteral).ToString()
}
case 2621:
{
role := yyS[yypt-0].item.(*auth.RoleIdentity)
roleSpec := &ast.UserSpec{
User: &auth.UserIdentity{
Username: role.Username,
Hostname: role.Hostname,
},
IsRole: true,
}
parser.yyVAL.item = roleSpec
}
case 2622:
{
parser.yyVAL.item = []*ast.UserSpec{yyS[yypt-0].item.(*ast.UserSpec)}
}
case 2623:
{
parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.UserSpec), yyS[yypt-0].item.(*ast.UserSpec))
}
case 2627:
{
var sel ast.StmtNode
switch x := yyS[yypt-0].expr.(*ast.SubqueryExpr).Query.(type) {
case *ast.SelectStmt:
x.IsInBraces = true
sel = x
case *ast.SetOprStmt:
x.IsInBraces = true
sel = x
}
parser.yyVAL.statement = sel
}
case 2632:
{
startOffset := parser.startOffset(&yyS[yypt-2])
endOffset := parser.startOffset(&yyS[yypt-1])
originStmt := yyS[yypt-2].statement
originStmt.SetText(parser.lexer.client, strings.TrimSpace(parser.src[startOffset:endOffset]))
startOffset = parser.startOffset(&yyS[yypt])
hintedStmt := yyS[yypt-0].statement
hintedStmt.SetText(parser.lexer.client, strings.TrimSpace(parser.src[startOffset:]))
x := &ast.CreateBindingStmt{
OriginNode: originStmt,
HintedNode: hintedStmt,
GlobalScope: yyS[yypt-5].item.(bool),
}
parser.yyVAL.statement = x
}
case 2633:
{
startOffset := parser.startOffset(&yyS[yypt])
hintedStmt := yyS[yypt-0].statement
hintedStmt.SetText(parser.lexer.client, strings.TrimSpace(parser.src[startOffset:]))
x := &ast.CreateBindingStmt{
OriginNode: hintedStmt,
HintedNode: hintedStmt,
GlobalScope: yyS[yypt-3].item.(bool),
}
parser.yyVAL.statement = x
}
case 2634:
{
x := &ast.CreateBindingStmt{
GlobalScope: yyS[yypt-7].item.(bool),
PlanDigests: yyS[yypt-0].item.([]*ast.StringOrUserVar),
}
parser.yyVAL.statement = x
}
case 2635:
{
parser.yyVAL.item = []*ast.StringOrUserVar{yyS[yypt-0].item.(*ast.StringOrUserVar)}
}
case 2636:
{
parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.StringOrUserVar), yyS[yypt-0].item.(*ast.StringOrUserVar))
}
case 2637:
{
parser.yyVAL.item = &ast.StringOrUserVar{StringLit: yyS[yypt-0].ident}
}
case 2638:
{
parser.yyVAL.item = &ast.StringOrUserVar{UserVar: yyS[yypt-0].expr.(*ast.VariableExpr)}
}
case 2639:
{
startOffset := parser.startOffset(&yyS[yypt])
originStmt := yyS[yypt-0].statement
originStmt.SetText(parser.lexer.client, strings.TrimSpace(parser.src[startOffset:]))
x := &ast.DropBindingStmt{
OriginNode: originStmt,
GlobalScope: yyS[yypt-3].item.(bool),
}
parser.yyVAL.statement = x
}
case 2640:
{
startOffset := parser.startOffset(&yyS[yypt-2])
endOffset := parser.startOffset(&yyS[yypt-1])
originStmt := yyS[yypt-2].statement
originStmt.SetText(parser.lexer.client, strings.TrimSpace(parser.src[startOffset:endOffset]))
startOffset = parser.startOffset(&yyS[yypt])
hintedStmt := yyS[yypt-0].statement
hintedStmt.SetText(parser.lexer.client, strings.TrimSpace(parser.src[startOffset:]))
x := &ast.DropBindingStmt{
OriginNode: originStmt,
HintedNode: hintedStmt,
GlobalScope: yyS[yypt-5].item.(bool),
}
parser.yyVAL.statement = x
}
case 2641:
{
x := &ast.DropBindingStmt{
GlobalScope: yyS[yypt-5].item.(bool),
SQLDigests: yyS[yypt-0].item.([]*ast.StringOrUserVar),
}
parser.yyVAL.statement = x
}
case 2642:
{
startOffset := parser.startOffset(&yyS[yypt])
originStmt := yyS[yypt-0].statement
originStmt.SetText(parser.lexer.client, strings.TrimSpace(parser.src[startOffset:]))
x := &ast.SetBindingStmt{
BindingStatusType: yyS[yypt-2].item.(ast.BindingStatusType),
OriginNode: originStmt,
}
parser.yyVAL.statement = x
}
case 2643:
{
startOffset := parser.startOffset(&yyS[yypt-2])
endOffset := parser.startOffset(&yyS[yypt-1])
originStmt := yyS[yypt-2].statement
originStmt.SetText(parser.lexer.client, strings.TrimSpace(parser.src[startOffset:endOffset]))
startOffset = parser.startOffset(&yyS[yypt])
hintedStmt := yyS[yypt-0].statement
hintedStmt.SetText(parser.lexer.client, strings.TrimSpace(parser.src[startOffset:]))
x := &ast.SetBindingStmt{
BindingStatusType: yyS[yypt-4].item.(ast.BindingStatusType),
OriginNode: originStmt,
HintedNode: hintedStmt,
}
parser.yyVAL.statement = x
}
case 2644:
{
x := &ast.SetBindingStmt{
BindingStatusType: yyS[yypt-4].item.(ast.BindingStatusType),
SQLDigest: yyS[yypt-0].ident,
}
parser.yyVAL.statement = x
}
case 2645:
{
x := &ast.RecommendIndexStmt{
Action: "run",
SQL: yyS[yypt-1].ident,
Options: yyS[yypt-0].item.([]ast.RecommendIndexOption),
}
parser.yyVAL.statement = x
}
case 2646:
{
x := &ast.RecommendIndexStmt{
Action: "run",
Options: yyS[yypt-0].item.([]ast.RecommendIndexOption),
}
parser.yyVAL.statement = x
}
case 2647:
{
x := &ast.RecommendIndexStmt{
Action: "show",
}
parser.yyVAL.statement = x
}
case 2648:
{
x := &ast.RecommendIndexStmt{
Action: "apply",
ID: yyS[yypt-0].item.(int64),
}
parser.yyVAL.statement = x
}
case 2649:
{
x := &ast.RecommendIndexStmt{
Action: "ignore",
ID: yyS[yypt-0].item.(int64),
}
parser.yyVAL.statement = x
}
case 2650:
{
x := &ast.RecommendIndexStmt{
Action: "set",
Options: yyS[yypt-0].item.([]ast.RecommendIndexOption),
}
parser.yyVAL.statement = x
}
case 2651:
{
parser.yyVAL.item = []ast.RecommendIndexOption{}
}
case 2652:
{
parser.yyVAL.item = yyS[yypt-0].item.([]ast.RecommendIndexOption)
}
case 2653:
{
parser.yyVAL.item = []ast.RecommendIndexOption{yyS[yypt-0].item.(ast.RecommendIndexOption)}
}
case 2654:
{
parser.yyVAL.item = append(yyS[yypt-2].item.([]ast.RecommendIndexOption), yyS[yypt-0].item.(ast.RecommendIndexOption))
}
case 2655:
{
parser.yyVAL.item = ast.RecommendIndexOption{
Option: yyS[yypt-2].ident,
Value: ast.NewValueExpr(yyS[yypt-0].expr, parser.charset, parser.collation),
}
}
case 2656:
{
p, err := convertToPriv(yyS[yypt-7].item.([]*ast.RoleOrPriv))
if err != nil {
yylex.AppendError(err)
return 1
}
parser.yyVAL.statement = &ast.GrantStmt{
Privs: p,
ObjectType: yyS[yypt-5].item.(ast.ObjectTypeType),
Level: yyS[yypt-4].item.(*ast.GrantLevel),
Users: yyS[yypt-2].item.([]*ast.UserSpec),
AuthTokenOrTLSOptions: yyS[yypt-1].item.([]*ast.AuthTokenOrTLSOption),
WithGrant: yyS[yypt-0].item.(bool),
}
}
case 2657:
{
parser.yyVAL.statement = &ast.GrantProxyStmt{
LocalUser: yyS[yypt-3].item.(*auth.UserIdentity),
ExternalUsers: yyS[yypt-1].item.([]*auth.UserIdentity),
WithGrant: yyS[yypt-0].item.(bool),
}
}
case 2658:
{
r, err := convertToRole(yyS[yypt-2].item.([]*ast.RoleOrPriv))
if err != nil {
yylex.AppendError(err)
return 1
}
parser.yyVAL.statement = &ast.GrantRoleStmt{
Roles: r,
Users: yyS[yypt-0].item.([]*auth.UserIdentity),
}
}
case 2659:
{
parser.yyVAL.item = false
}
case 2660:
{
parser.yyVAL.item = true
}
case 2661:
{
parser.yyVAL.item = false
}
case 2662:
{
parser.yyVAL.item = false
}
case 2663:
{
parser.yyVAL.item = false
}
case 2664:
{
parser.yyVAL.item = false
}
case 2665:
{
parser.yyVAL.item = []string{yyS[yypt-0].ident}
}
case 2666:
{
parser.yyVAL.item = append(yyS[yypt-1].item.([]string), yyS[yypt-0].ident)
}
case 2667:
{
parser.yyVAL.item = &ast.RoleOrPriv{
Node: yyS[yypt-0].item,
}
}
case 2668:
{
parser.yyVAL.item = &ast.RoleOrPriv{
Node: yyS[yypt-0].item,
}
}
case 2669:
{
parser.yyVAL.item = &ast.RoleOrPriv{
Symbols: strings.Join(yyS[yypt-0].item.([]string), " "),
}
}
case 2670:
{
parser.yyVAL.item = &ast.RoleOrPriv{
Symbols: "LOAD FROM S3",
}
}
case 2671:
{
parser.yyVAL.item = &ast.RoleOrPriv{
Symbols: "SELECT INTO S3",
}
}
case 2672:
{
parser.yyVAL.item = []*ast.RoleOrPriv{yyS[yypt-0].item.(*ast.RoleOrPriv)}
}
case 2673:
{
parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.RoleOrPriv), yyS[yypt-0].item.(*ast.RoleOrPriv))
}
case 2674:
{
parser.yyVAL.item = &ast.PrivElem{
Priv: yyS[yypt-0].item.(mysql.PrivilegeType),
}
}
case 2675:
{
parser.yyVAL.item = &ast.PrivElem{
Priv: yyS[yypt-3].item.(mysql.PrivilegeType),
Cols: yyS[yypt-1].item.([]*ast.ColumnName),
}
}
case 2676:
{
parser.yyVAL.item = mysql.AllPriv
}
case 2677:
{
parser.yyVAL.item = mysql.AllPriv
}
case 2678:
{
parser.yyVAL.item = mysql.AlterPriv
}
case 2679:
{
parser.yyVAL.item = mysql.CreatePriv
}
case 2680:
{
parser.yyVAL.item = mysql.CreateUserPriv
}
case 2681:
{
parser.yyVAL.item = mysql.CreateTablespacePriv
}
case 2682:
{
parser.yyVAL.item = mysql.TriggerPriv
}
case 2683:
{
parser.yyVAL.item = mysql.DeletePriv
}
case 2684:
{
parser.yyVAL.item = mysql.DropPriv
}
case 2685:
{
parser.yyVAL.item = mysql.ProcessPriv
}
case 2686:
{
parser.yyVAL.item = mysql.ExecutePriv
}
case 2687:
{
parser.yyVAL.item = mysql.IndexPriv
}
case 2688:
{
parser.yyVAL.item = mysql.InsertPriv
}
case 2689:
{
parser.yyVAL.item = mysql.SelectPriv
}
case 2690:
{
parser.yyVAL.item = mysql.SuperPriv
}
case 2691:
{
parser.yyVAL.item = mysql.ShowDBPriv
}
case 2692:
{
parser.yyVAL.item = mysql.UpdatePriv
}
case 2693:
{
parser.yyVAL.item = mysql.GrantPriv
}
case 2694:
{
parser.yyVAL.item = mysql.ReferencesPriv
}
case 2695:
{
parser.yyVAL.item = mysql.ReplicationSlavePriv
}
case 2696:
{
parser.yyVAL.item = mysql.ReplicationClientPriv
}
case 2697:
{
parser.yyVAL.item = mysql.UsagePriv
}
case 2698:
{
parser.yyVAL.item = mysql.ReloadPriv
}
case 2699:
{
parser.yyVAL.item = mysql.FilePriv
}
case 2700:
{
parser.yyVAL.item = mysql.ConfigPriv
}
case 2701:
{
parser.yyVAL.item = mysql.CreateTMPTablePriv
}
case 2702:
{
parser.yyVAL.item = mysql.LockTablesPriv
}
case 2703:
{
parser.yyVAL.item = mysql.CreateViewPriv
}
case 2704:
{
parser.yyVAL.item = mysql.ShowViewPriv
}
case 2705:
{
parser.yyVAL.item = mysql.CreateRolePriv
}
case 2706:
{
parser.yyVAL.item = mysql.DropRolePriv
}
case 2707:
{
parser.yyVAL.item = mysql.CreateRoutinePriv
}
case 2708:
{
parser.yyVAL.item = mysql.AlterRoutinePriv
}
case 2709:
{
parser.yyVAL.item = mysql.EventPriv
}
case 2710:
{
parser.yyVAL.item = mysql.ShutdownPriv
}
case 2711:
{
parser.yyVAL.item = ast.ObjectTypeNone
}
case 2712:
{
parser.yyVAL.item = ast.ObjectTypeTable
}
case 2713:
{
parser.yyVAL.item = ast.ObjectTypeFunction
}
case 2714:
{
parser.yyVAL.item = ast.ObjectTypeProcedure
}
case 2715:
{
parser.yyVAL.item = &ast.GrantLevel{
Level: ast.GrantLevelDB,
}
}
case 2716:
{
parser.yyVAL.item = &ast.GrantLevel{
Level: ast.GrantLevelGlobal,
}
}
case 2717:
{
parser.yyVAL.item = &ast.GrantLevel{
Level: ast.GrantLevelDB,
DBName: yyS[yypt-2].ident,
}
}
case 2718:
{
parser.yyVAL.item = &ast.GrantLevel{
Level: ast.GrantLevelTable,
DBName: yyS[yypt-2].ident,
TableName: yyS[yypt-0].ident,
}
}
case 2719:
{
parser.yyVAL.item = &ast.GrantLevel{
Level: ast.GrantLevelTable,
TableName: yyS[yypt-0].ident,
}
}
case 2720:
{
p, err := convertToPriv(yyS[yypt-5].item.([]*ast.RoleOrPriv))
if err != nil {
yylex.AppendError(err)
return 1
}
parser.yyVAL.statement = &ast.RevokeStmt{
Privs: p,
ObjectType: yyS[yypt-3].item.(ast.ObjectTypeType),
Level: yyS[yypt-2].item.(*ast.GrantLevel),
Users: yyS[yypt-0].item.([]*ast.UserSpec),
}
}
case 2721:
{
// MySQL has special syntax for REVOKE ALL [PRIVILEGES], GRANT OPTION
// which uses the RevokeRoleStmt syntax but is of type RevokeStmt.
// It is documented at https://dev.mysql.com/doc/refman/5.7/en/revoke.html
// as the "second syntax" for REVOKE. It is only valid if *both*
// ALL PRIVILEGES + GRANT OPTION are specified in that order.
if isRevokeAllGrant(yyS[yypt-2].item.([]*ast.RoleOrPriv)) {
var users []*ast.UserSpec
for _, u := range yyS[yypt-0].item.([]*auth.UserIdentity) {
users = append(users, &ast.UserSpec{
User: u,
})
}
parser.yyVAL.statement = &ast.RevokeStmt{
Privs: []*ast.PrivElem{{Priv: mysql.AllPriv}, {Priv: mysql.GrantPriv}},
ObjectType: ast.ObjectTypeNone,
Level: &ast.GrantLevel{Level: ast.GrantLevelGlobal},
Users: users,
}
} else {
r, err := convertToRole(yyS[yypt-2].item.([]*ast.RoleOrPriv))
if err != nil {
yylex.AppendError(err)
return 1
}
parser.yyVAL.statement = &ast.RevokeRoleStmt{
Roles: r,
Users: yyS[yypt-0].item.([]*auth.UserIdentity),
}
}
}
case 2722:
{
x := &ast.LoadDataStmt{
LowPriority: yyS[yypt-15].item.(bool),
FileLocRef: ast.FileLocServerOrRemote,
Path: yyS[yypt-12].ident,
Format: yyS[yypt-11].item.(*string),
OnDuplicate: yyS[yypt-10].item.(ast.OnDuplicateKeyHandlingType),
Table: yyS[yypt-7].item.(*ast.TableName),
Charset: yyS[yypt-6].item.(*string),
FieldsInfo: yyS[yypt-5].item.(*ast.FieldsClause),
LinesInfo: yyS[yypt-4].item.(*ast.LinesClause),
IgnoreLines: yyS[yypt-3].item.(*uint64),
ColumnsAndUserVars: yyS[yypt-2].item.([]*ast.ColumnNameOrUserVar),
ColumnAssignments: yyS[yypt-1].item.([]*ast.Assignment),
Options: yyS[yypt-0].item.([]*ast.LoadDataOpt),
}
if yyS[yypt-14].item != nil {
x.FileLocRef = ast.FileLocClient
// See https://dev.mysql.com/doc/refman/5.7/en/load-data.html#load-data-duplicate-key-handling
// If you do not specify IGNORE or REPLACE modifier , then we set default behavior to IGNORE when LOCAL modifier is specified
if x.OnDuplicate == ast.OnDuplicateKeyHandlingError {
x.OnDuplicate = ast.OnDuplicateKeyHandlingIgnore
}
}
columns := []*ast.ColumnName{}
for _, v := range x.ColumnsAndUserVars {
if v.ColumnName != nil {
columns = append(columns, v.ColumnName)
}
}
x.Columns = columns
parser.yyVAL.statement = x
}
case 2723:
{
parser.yyVAL.item = false
}
case 2724:
{
parser.yyVAL.item = true
}
case 2725:
{
parser.yyVAL.item = (*string)(nil)
}
case 2726:
{
str := yyS[yypt-0].ident
parser.yyVAL.item = &str
}
case 2727:
{
parser.yyVAL.item = (*uint64)(nil)
}
case 2728:
{
v := getUint64FromNUM(yyS[yypt-1].item)
parser.yyVAL.item = &v
}
case 2729:
{
parser.yyVAL.item = (*string)(nil)
}
case 2730:
{
v := yyS[yypt-0].ident
parser.yyVAL.item = &v
}
case 2731:
{
parser.yyVAL.item = nil
}
case 2732:
{
parser.yyVAL.item = yyS[yypt-0].ident
}
case 2733:
{
parser.yyVAL.item = (*ast.FieldsClause)(nil)
}
case 2734:
{
fieldsClause := &ast.FieldsClause{}
fieldItems := yyS[yypt-0].item.([]*ast.FieldItem)
for _, item := range fieldItems {
switch item.Type {
case ast.Terminated:
fieldsClause.Terminated = &item.Value
case ast.Enclosed:
fieldsClause.Enclosed = &item.Value
fieldsClause.OptEnclosed = item.OptEnclosed
case ast.Escaped:
fieldsClause.Escaped = &item.Value
case ast.DefinedNullBy:
fieldsClause.DefinedNullBy = &item.Value
fieldsClause.NullValueOptEnclosed = item.OptEnclosed
}
}
parser.yyVAL.item = fieldsClause
}
case 2737:
{
fieldItems := yyS[yypt-1].item.([]*ast.FieldItem)
parser.yyVAL.item = append(fieldItems, yyS[yypt-0].item.(*ast.FieldItem))
}
case 2738:
{
fieldItems := make([]*ast.FieldItem, 1, 1)
fieldItems[0] = yyS[yypt-0].item.(*ast.FieldItem)
parser.yyVAL.item = fieldItems
}
case 2739:
{
parser.yyVAL.item = &ast.FieldItem{
Type: ast.Terminated,
Value: yyS[yypt-0].ident,
}
}
case 2740:
{
str := yyS[yypt-0].ident
if str != "\\" && len(str) > 1 {
yylex.AppendError(ErrWrongFieldTerminators.GenWithStackByArgs())
return 1
}
parser.yyVAL.item = &ast.FieldItem{
Type: ast.Enclosed,
Value: str,
OptEnclosed: true,
}
}
case 2741:
{
str := yyS[yypt-0].ident
if str != "\\" && len(str) > 1 {
yylex.AppendError(ErrWrongFieldTerminators.GenWithStackByArgs())
return 1
}
parser.yyVAL.item = &ast.FieldItem{
Type: ast.Enclosed,
Value: str,
}
}
case 2742:
{
str := yyS[yypt-0].ident
if str != "\\" && len(str) > 1 {
yylex.AppendError(ErrWrongFieldTerminators.GenWithStackByArgs())
return 1
}
parser.yyVAL.item = &ast.FieldItem{
Type: ast.Escaped,
Value: str,
}
}
case 2743:
{
parser.yyVAL.item = &ast.FieldItem{
Type: ast.DefinedNullBy,
Value: yyS[yypt-0].item.(*ast.TextString).Value,
}
}
case 2744:
{
parser.yyVAL.item = &ast.FieldItem{
Type: ast.DefinedNullBy,
Value: yyS[yypt-2].item.(*ast.TextString).Value,
OptEnclosed: true,
}
}
case 2746:
{
parser.yyVAL.ident = yyS[yypt-0].item.(ast.BinaryLiteral).ToString()
}
case 2747:
{
parser.yyVAL.ident = yyS[yypt-0].item.(ast.BinaryLiteral).ToString()
}
case 2748:
{
parser.yyVAL.item = (*ast.LinesClause)(nil)
}
case 2749:
{
parser.yyVAL.item = &ast.LinesClause{Starting: yyS[yypt-1].item.(*string), Terminated: yyS[yypt-0].item.(*string)}
}
case 2750:
{
parser.yyVAL.item = (*string)(nil)
}
case 2751:
{
s := yyS[yypt-0].ident
parser.yyVAL.item = &s
}
case 2752:
{
parser.yyVAL.item = (*string)(nil)
}
case 2753:
{
s := yyS[yypt-0].ident
parser.yyVAL.item = &s
}
case 2754:
{
parser.yyVAL.item = ([]*ast.Assignment)(nil)
}
case 2755:
{
parser.yyVAL.item = yyS[yypt-0].item
}
case 2756:
{
l := yyS[yypt-2].item.([]*ast.Assignment)
parser.yyVAL.item = append(l, yyS[yypt-0].item.(*ast.Assignment))
}
case 2757:
{
parser.yyVAL.item = []*ast.Assignment{yyS[yypt-0].item.(*ast.Assignment)}
}
case 2758:
{
parser.yyVAL.item = &ast.Assignment{
Column: yyS[yypt-2].expr.(*ast.ColumnNameExpr).Name,
Expr: yyS[yypt-0].expr,
}
}
case 2759:
{
parser.yyVAL.item = []*ast.LoadDataOpt{}
}
case 2760:
{
parser.yyVAL.item = yyS[yypt-0].item.([]*ast.LoadDataOpt)
}
case 2761:
{
parser.yyVAL.item = []*ast.LoadDataOpt{yyS[yypt-0].item.(*ast.LoadDataOpt)}
}
case 2762:
{
parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.LoadDataOpt), yyS[yypt-0].item.(*ast.LoadDataOpt))
}
case 2763:
{
parser.yyVAL.item = &ast.LoadDataOpt{Name: strings.ToLower(yyS[yypt-0].ident)}
}
case 2764:
{
parser.yyVAL.item = &ast.LoadDataOpt{Name: strings.ToLower(yyS[yypt-2].ident), Value: yyS[yypt-0].expr.(ast.ExprNode)}
}
case 2765:
{
parser.yyVAL.statement = &ast.ImportIntoStmt{
Table: yyS[yypt-6].item.(*ast.TableName),
ColumnsAndUserVars: yyS[yypt-5].item.([]*ast.ColumnNameOrUserVar),
ColumnAssignments: yyS[yypt-4].item.([]*ast.Assignment),
Path: yyS[yypt-2].ident,
Format: yyS[yypt-1].item.(*string),
Options: yyS[yypt-0].item.([]*ast.LoadDataOpt),
}
}
case 2766:
{
st := &ast.ImportIntoStmt{
Table: yyS[yypt-5].item.(*ast.TableName),
ColumnsAndUserVars: yyS[yypt-4].item.([]*ast.ColumnNameOrUserVar),
Select: yyS[yypt-1].statement.(ast.ResultSetNode),
Options: yyS[yypt-0].item.([]*ast.LoadDataOpt),
}
for _, cu := range st.ColumnsAndUserVars {
if cu.ColumnName == nil {
yylex.AppendError(yylex.Errorf("Cannot use user variable(%s) in IMPORT INTO FROM SELECT statement.", cu.UserVar.Name))
return 1
}
}
if yyS[yypt-3].item.([]*ast.Assignment) != nil {
yylex.AppendError(yylex.Errorf("Cannot use SET clause in IMPORT INTO FROM SELECT statement."))
return 1
}
parser.yyVAL.statement = st
}
case 2767:
{
parser.yyVAL.statement = yyS[yypt-0].statement
}
case 2768:
{
parser.yyVAL.statement = yyS[yypt-0].statement
}
case 2769:
{
parser.yyVAL.statement = yyS[yypt-0].statement
}
case 2770:
{
var sel ast.ResultSetNode
switch x := yyS[yypt-0].expr.(*ast.SubqueryExpr).Query.(type) {
case *ast.SelectStmt:
x.IsInBraces = true
sel = x
case *ast.SetOprStmt:
x.IsInBraces = true
sel = x
}
parser.yyVAL.statement = sel.(ast.StmtNode)
}
case 2771:
{
parser.yyVAL.statement = &ast.UnlockTablesStmt{}
}
case 2772:
{
parser.yyVAL.statement = &ast.LockTablesStmt{
TableLocks: yyS[yypt-0].item.([]ast.TableLock),
}
}
case 2775:
{
parser.yyVAL.item = ast.TableLock{
Table: yyS[yypt-1].item.(*ast.TableName),
Type: yyS[yypt-0].item.(ast.TableLockType),
}
}
case 2776:
{
parser.yyVAL.item = ast.TableLockRead
}
case 2777:
{
parser.yyVAL.item = ast.TableLockReadLocal
}
case 2778:
{
parser.yyVAL.item = ast.TableLockWrite
}
case 2779:
{
parser.yyVAL.item = ast.TableLockWriteLocal
}
case 2780:
{
parser.yyVAL.item = []ast.TableLock{yyS[yypt-0].item.(ast.TableLock)}
}
case 2781:
{
parser.yyVAL.item = append(yyS[yypt-2].item.([]ast.TableLock), yyS[yypt-0].item.(ast.TableLock))
}
case 2782:
{
parser.yyVAL.statement = &ast.NonTransactionalDMLStmt{
DryRun: yyS[yypt-1].item.(int),
ShardColumn: yyS[yypt-4].item.(*ast.ColumnName),
Limit: getUint64FromNUM(yyS[yypt-2].item),
DMLStmt: yyS[yypt-0].statement.(ast.ShardableDMLStmt),
}
}
case 2787:
{
parser.yyVAL.item = ast.NoDryRun
}
case 2788:
{
parser.yyVAL.item = ast.DryRunSplitDml
}
case 2789:
{
parser.yyVAL.item = ast.DryRunQuery
}
case 2790:
{
parser.yyVAL.item = (*ast.ColumnName)(nil)
}
case 2791:
{
parser.yyVAL.item = yyS[yypt-0].item.(*ast.ColumnName)
}
case 2792:
{
parser.yyVAL.statement = &ast.OptimizeTableStmt{
Tables: yyS[yypt-0].item.([]*ast.TableName),
NoWriteToBinLog: yyS[yypt-2].item.(bool),
}
}
case 2793:
{
parser.yyVAL.statement = &ast.KillStmt{
ConnectionID: getUint64FromNUM(yyS[yypt-0].item),
TiDBExtension: yyS[yypt-1].item.(bool),
}
}
case 2794:
{
parser.yyVAL.statement = &ast.KillStmt{
ConnectionID: getUint64FromNUM(yyS[yypt-0].item),
TiDBExtension: yyS[yypt-2].item.(bool),
}
}
case 2795:
{
parser.yyVAL.statement = &ast.KillStmt{
ConnectionID: getUint64FromNUM(yyS[yypt-0].item),
Query: true,
TiDBExtension: yyS[yypt-2].item.(bool),
}
}
case 2796:
{
parser.yyVAL.statement = &ast.KillStmt{
TiDBExtension: yyS[yypt-1].item.(bool),
Expr: yyS[yypt-0].expr,
}
}
case 2797:
{
parser.yyVAL.item = false
}
case 2798:
{
parser.yyVAL.item = true
}
case 2799:
{
parser.yyVAL.statement = &ast.LoadStatsStmt{
Path: yyS[yypt-0].ident,
}
}
case 2800:
{
parser.yyVAL.statement = &ast.LockStatsStmt{
Tables: yyS[yypt-0].item.([]*ast.TableName),
}
}
case 2801:
{
x := yyS[yypt-2].item.(*ast.TableName)
x.PartitionNames = yyS[yypt-0].item.([]ast.CIStr)
parser.yyVAL.statement = &ast.LockStatsStmt{
Tables: []*ast.TableName{x},
}
}
case 2802:
{
x := yyS[yypt-4].item.(*ast.TableName)
x.PartitionNames = yyS[yypt-1].item.([]ast.CIStr)
parser.yyVAL.statement = &ast.LockStatsStmt{
Tables: []*ast.TableName{x},
}
}
case 2803:
{
parser.yyVAL.statement = &ast.UnlockStatsStmt{
Tables: yyS[yypt-0].item.([]*ast.TableName),
}
}
case 2804:
{
x := yyS[yypt-2].item.(*ast.TableName)
x.PartitionNames = yyS[yypt-0].item.([]ast.CIStr)
parser.yyVAL.statement = &ast.UnlockStatsStmt{
Tables: []*ast.TableName{x},
}
}
case 2805:
{
x := yyS[yypt-4].item.(*ast.TableName)
x.PartitionNames = yyS[yypt-1].item.([]ast.CIStr)
parser.yyVAL.statement = &ast.UnlockStatsStmt{
Tables: []*ast.TableName{x},
}
}
case 2806:
{
stmt := &ast.RefreshStatsStmt{
RefreshObjects: yyS[yypt-2].item.([]*ast.RefreshObject),
}
if mode, ok := yyS[yypt-1].item.(*ast.RefreshStatsMode); ok {
stmt.RefreshMode = mode
}
stmt.IsClusterWide = yyS[yypt-0].item.(bool)
parser.yyVAL.statement = stmt
}
case 2807:
{
parser.yyVAL.item = []*ast.RefreshObject{yyS[yypt-0].item.(*ast.RefreshObject)}
}
case 2808:
{
parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.RefreshObject), yyS[yypt-0].item.(*ast.RefreshObject))
}
case 2809:
{
parser.yyVAL.item = nil
}
case 2810:
{
mode := yyS[yypt-0].item.(ast.RefreshStatsMode)
parser.yyVAL.item = &mode
}
case 2811:
{
parser.yyVAL.item = ast.RefreshStatsModeFull
}
case 2812:
{
parser.yyVAL.item = ast.RefreshStatsModeLite
}
case 2813:
{
parser.yyVAL.item = false
}
case 2814:
{
parser.yyVAL.item = true
}
case 2815:
{
parser.yyVAL.item = &ast.RefreshObject{
RefreshObjectScope: ast.RefreshObjectScopeGlobal,
}
}
case 2816:
{
parser.yyVAL.item = &ast.RefreshObject{
RefreshObjectScope: ast.RefreshObjectScopeDatabase,
DBName: ast.NewCIStr(yyS[yypt-2].ident),
}
}
case 2817:
{
parser.yyVAL.item = &ast.RefreshObject{
RefreshObjectScope: ast.RefreshObjectScopeTable,
DBName: ast.NewCIStr(yyS[yypt-2].ident),
TableName: ast.NewCIStr(yyS[yypt-0].ident),
}
}
case 2818:
{
parser.yyVAL.item = &ast.RefreshObject{
RefreshObjectScope: ast.RefreshObjectScopeTable,
TableName: ast.NewCIStr(yyS[yypt-0].ident),
}
}
case 2819:
{
parser.yyVAL.statement = &ast.DropPlacementPolicyStmt{
IfExists: yyS[yypt-1].item.(bool),
PolicyName: ast.NewCIStr(yyS[yypt-0].ident),
}
}
case 2820:
{
parser.yyVAL.statement = &ast.CreateResourceGroupStmt{
IfNotExists: yyS[yypt-2].item.(bool),
ResourceGroupName: ast.NewCIStr(yyS[yypt-1].ident),
ResourceGroupOptionList: yyS[yypt-0].item.([]*ast.ResourceGroupOption),
}
}
case 2821:
{
parser.yyVAL.statement = &ast.AlterResourceGroupStmt{
IfExists: yyS[yypt-2].item.(bool),
ResourceGroupName: ast.NewCIStr(yyS[yypt-1].ident),
ResourceGroupOptionList: yyS[yypt-0].item.([]*ast.ResourceGroupOption),
}
}
case 2822:
{
parser.yyVAL.statement = &ast.DropResourceGroupStmt{
IfExists: yyS[yypt-1].item.(bool),
ResourceGroupName: ast.NewCIStr(yyS[yypt-0].ident),
}
}
case 2823:
{
parser.yyVAL.statement = &ast.CreatePlacementPolicyStmt{
OrReplace: yyS[yypt-5].item.(bool),
IfNotExists: yyS[yypt-2].item.(bool),
PolicyName: ast.NewCIStr(yyS[yypt-1].ident),
PlacementOptions: yyS[yypt-0].item.([]*ast.PlacementOption),
}
}
case 2824:
{
parser.yyVAL.statement = &ast.AlterPlacementPolicyStmt{
IfExists: yyS[yypt-2].item.(bool),
PolicyName: ast.NewCIStr(yyS[yypt-1].ident),
PlacementOptions: yyS[yypt-0].item.([]*ast.PlacementOption),
}
}
case 2825:
{
parser.yyVAL.statement = &ast.CreateSequenceStmt{
IfNotExists: yyS[yypt-3].item.(bool),
Name: yyS[yypt-2].item.(*ast.TableName),
SeqOptions: yyS[yypt-1].item.([]*ast.SequenceOption),
TblOptions: yyS[yypt-0].item.([]*ast.TableOption),
}
}
case 2826:
{
parser.yyVAL.item = []*ast.SequenceOption{}
}
case 2828:
{
parser.yyVAL.item = []*ast.SequenceOption{yyS[yypt-0].item.(*ast.SequenceOption)}
}
case 2829:
{
parser.yyVAL.item = append(yyS[yypt-1].item.([]*ast.SequenceOption), yyS[yypt-0].item.(*ast.SequenceOption))
}
case 2830:
{
parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceOptionIncrementBy, IntValue: yyS[yypt-0].item.(int64)}
}
case 2831:
{
parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceOptionIncrementBy, IntValue: yyS[yypt-0].item.(int64)}
}
case 2832:
{
parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceStartWith, IntValue: yyS[yypt-0].item.(int64)}
}
case 2833:
{
parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceStartWith, IntValue: yyS[yypt-0].item.(int64)}
}
case 2834:
{
parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceMinValue, IntValue: yyS[yypt-0].item.(int64)}
}
case 2835:
{
parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceNoMinValue}
}
case 2836:
{
parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceNoMinValue}
}
case 2837:
{
parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceMaxValue, IntValue: yyS[yypt-0].item.(int64)}
}
case 2838:
{
parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceNoMaxValue}
}
case 2839:
{
parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceNoMaxValue}
}
case 2840:
{
parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceCache, IntValue: yyS[yypt-0].item.(int64)}
}
case 2841:
{
parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceNoCache}
}
case 2842:
{
parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceNoCache}
}
case 2843:
{
parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceCycle}
}
case 2844:
{
parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceNoCycle}
}
case 2845:
{
parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceNoCycle}
}
case 2847:
{
parser.yyVAL.item = yyS[yypt-0].item
}
case 2848:
{
unsigned_num := getUint64FromNUM(yyS[yypt-0].item)
if unsigned_num > 9223372036854775808 {
yylex.AppendError(yylex.Errorf("the Signed Value should be at the range of [-9223372036854775808, 9223372036854775807]."))
return 1
} else if unsigned_num == 9223372036854775808 {
signed_one := int64(1)
parser.yyVAL.item = signed_one << 63
} else {
parser.yyVAL.item = -int64(unsigned_num)
}
}
case 2849:
{
parser.yyVAL.statement = &ast.DropSequenceStmt{
IfExists: yyS[yypt-1].item.(bool),
Sequences: yyS[yypt-0].item.([]*ast.TableName),
}
}
case 2850:
{
parser.yyVAL.statement = &ast.AlterSequenceStmt{
IfExists: yyS[yypt-2].item.(bool),
Name: yyS[yypt-1].item.(*ast.TableName),
SeqOptions: yyS[yypt-0].item.([]*ast.SequenceOption),
}
}
case 2851:
{
parser.yyVAL.item = []*ast.SequenceOption{yyS[yypt-0].item.(*ast.SequenceOption)}
}
case 2852:
{
parser.yyVAL.item = append(yyS[yypt-1].item.([]*ast.SequenceOption), yyS[yypt-0].item.(*ast.SequenceOption))
}
case 2854:
{
parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceRestart}
}
case 2855:
{
parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceRestartWith, IntValue: yyS[yypt-0].item.(int64)}
}
case 2856:
{
parser.yyVAL.item = &ast.SequenceOption{Tp: ast.SequenceRestartWith, IntValue: yyS[yypt-0].item.(int64)}
}
case 2857:
{
// Parse it but will ignore it
switch yyS[yypt-0].ident {
case "Y", "y":
yylex.AppendError(yylex.Errorf("The ENCRYPTION clause is parsed but ignored by all storage engines."))
parser.lastErrorAsWarn()
case "N", "n":
break
default:
yylex.AppendError(ErrWrongValue.GenWithStackByArgs("argument (should be Y or N)", yyS[yypt-0].ident))
return 1
}
parser.yyVAL.ident = yyS[yypt-0].ident
}
case 2858:
{
parser.yyVAL.item = append([]*ast.RowExpr{}, yyS[yypt-0].item.(*ast.RowExpr))
}
case 2859:
{
parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.RowExpr), yyS[yypt-0].item.(*ast.RowExpr))
}
case 2860:
{
parser.yyVAL.item = &ast.RowExpr{Values: yyS[yypt-0].item.([]ast.ExprNode)}
}
case 2861:
{
x := &ast.PlanReplayerStmt{
Stmt: yyS[yypt-0].statement,
Analyze: false,
Load: false,
File: "",
Where: nil,
OrderBy: nil,
Limit: nil,
}
if yyS[yypt-2].item != nil {
x.HistoricalStatsInfo = yyS[yypt-2].item.(*ast.AsOfClause)
}
startOffset := parser.startOffset(&yyS[yypt])
x.Stmt.SetText(parser.lexer.client, strings.TrimSpace(parser.src[startOffset:]))
parser.yyVAL.statement = x
}
case 2862:
{
x := &ast.PlanReplayerStmt{
Stmt: yyS[yypt-0].statement,
Analyze: true,
Load: false,
File: "",
Where: nil,
OrderBy: nil,
Limit: nil,
}
if yyS[yypt-3].item != nil {
x.HistoricalStatsInfo = yyS[yypt-3].item.(*ast.AsOfClause)
}
startOffset := parser.startOffset(&yyS[yypt])
x.Stmt.SetText(parser.lexer.client, strings.TrimSpace(parser.src[startOffset:]))
parser.yyVAL.statement = x
}
case 2863:
{
x := &ast.PlanReplayerStmt{
Stmt: nil,
Analyze: false,
Load: false,
File: "",
}
if yyS[yypt-6].item != nil {
x.HistoricalStatsInfo = yyS[yypt-6].item.(*ast.AsOfClause)
}
if yyS[yypt-2].item != nil {
x.Where = yyS[yypt-2].item.(ast.ExprNode)
}
if yyS[yypt-1].item != nil {
x.OrderBy = yyS[yypt-1].item.(*ast.OrderByClause)
}
if yyS[yypt-0].item != nil {
x.Limit = yyS[yypt-0].item.(*ast.Limit)
}
parser.yyVAL.statement = x
}
case 2864:
{
x := &ast.PlanReplayerStmt{
Stmt: nil,
Analyze: true,
Load: false,
File: "",
}
if yyS[yypt-7].item != nil {
x.HistoricalStatsInfo = yyS[yypt-7].item.(*ast.AsOfClause)
}
if yyS[yypt-2].item != nil {
x.Where = yyS[yypt-2].item.(ast.ExprNode)
}
if yyS[yypt-1].item != nil {
x.OrderBy = yyS[yypt-1].item.(*ast.OrderByClause)
}
if yyS[yypt-0].item != nil {
x.Limit = yyS[yypt-0].item.(*ast.Limit)
}
parser.yyVAL.statement = x
}
case 2865:
{
x := &ast.PlanReplayerStmt{
Stmt: nil,
Analyze: false,
Load: false,
File: yyS[yypt-0].ident,
}
if yyS[yypt-2].item != nil {
x.HistoricalStatsInfo = yyS[yypt-2].item.(*ast.AsOfClause)
}
parser.yyVAL.statement = x
}
case 2866:
{
x := &ast.PlanReplayerStmt{
Stmt: nil,
Analyze: true,
Load: false,
File: yyS[yypt-0].ident,
}
if yyS[yypt-3].item != nil {
x.HistoricalStatsInfo = yyS[yypt-3].item.(*ast.AsOfClause)
}
parser.yyVAL.statement = x
}
case 2867:
{
x := &ast.PlanReplayerStmt{
Stmt: nil,
Analyze: false,
Load: true,
File: yyS[yypt-0].ident,
Where: nil,
OrderBy: nil,
Limit: nil,
}
parser.yyVAL.statement = x
}
case 2868:
{
x := &ast.PlanReplayerStmt{
Stmt: nil,
Analyze: false,
Capture: true,
SQLDigest: yyS[yypt-1].ident,
PlanDigest: yyS[yypt-0].ident,
Where: nil,
OrderBy: nil,
Limit: nil,
}
parser.yyVAL.statement = x
}
case 2869:
{
x := &ast.PlanReplayerStmt{
Stmt: nil,
Analyze: false,
Remove: true,
SQLDigest: yyS[yypt-1].ident,
PlanDigest: yyS[yypt-0].ident,
Where: nil,
OrderBy: nil,
Limit: nil,
}
parser.yyVAL.statement = x
}
case 2870:
{
parser.yyVAL.item = nil
}
case 2871:
{
parser.yyVAL.item = yyS[yypt-0].item.(*ast.AsOfClause)
}
case 2872:
{
x := &ast.TrafficStmt{
OpType: ast.TrafficOpCapture,
Dir: yyS[yypt-1].ident,
}
if yyS[yypt-0].item != nil {
x.Options = yyS[yypt-0].item.([]*ast.TrafficOption)
}
parser.yyVAL.statement = x
}
case 2873:
{
x := &ast.TrafficStmt{
OpType: ast.TrafficOpReplay,
Dir: yyS[yypt-1].ident,
}
if yyS[yypt-0].item != nil {
x.Options = yyS[yypt-0].item.([]*ast.TrafficOption)
}
parser.yyVAL.statement = x
}
case 2874:
{
parser.yyVAL.statement = &ast.TrafficStmt{
OpType: ast.TrafficOpShow,
}
}
case 2875:
{
parser.yyVAL.statement = &ast.TrafficStmt{
OpType: ast.TrafficOpCancel,
}
}
case 2876:
{
parser.yyVAL.item = []*ast.TrafficOption{yyS[yypt-0].item.(*ast.TrafficOption)}
}
case 2877:
{
parser.yyVAL.item = append(yyS[yypt-1].item.([]*ast.TrafficOption), yyS[yypt-0].item.(*ast.TrafficOption))
}
case 2878:
{
_, err := time.ParseDuration(yyS[yypt-0].ident)
if err != nil {
yylex.AppendError(yylex.Errorf("The DURATION option is not a valid duration: %s", err.Error()))
return 1
}
parser.yyVAL.item = &ast.TrafficOption{OptionType: ast.TrafficOptionDuration, StrValue: yyS[yypt-0].ident}
}
case 2879:
{
parser.yyVAL.item = &ast.TrafficOption{OptionType: ast.TrafficOptionEncryptionMethod, StrValue: yyS[yypt-0].ident}
}
case 2880:
{
parser.yyVAL.item = &ast.TrafficOption{OptionType: ast.TrafficOptionCompress, BoolValue: yyS[yypt-0].item.(bool)}
}
case 2881:
{
parser.yyVAL.item = []*ast.TrafficOption{yyS[yypt-0].item.(*ast.TrafficOption)}
}
case 2882:
{
parser.yyVAL.item = append(yyS[yypt-1].item.([]*ast.TrafficOption), yyS[yypt-0].item.(*ast.TrafficOption))
}
case 2883:
{
parser.yyVAL.item = &ast.TrafficOption{OptionType: ast.TrafficOptionUsername, StrValue: yyS[yypt-0].ident}
}
case 2884:
{
parser.yyVAL.item = &ast.TrafficOption{OptionType: ast.TrafficOptionPassword, StrValue: yyS[yypt-0].ident}
}
case 2885:
{
parser.yyVAL.item = &ast.TrafficOption{OptionType: ast.TrafficOptionSpeed, FloatValue: ast.NewValueExpr(yyS[yypt-0].item, "", "")}
}
case 2886:
{
parser.yyVAL.item = &ast.TrafficOption{OptionType: ast.TrafficOptionReadOnly, BoolValue: yyS[yypt-0].item.(bool)}
}
case 2887:
{
parser.yyVAL.item = []*ast.StoreParameter{}
}
case 2888:
{
parser.yyVAL.item = yyS[yypt-0].item
}
case 2889:
{
l := yyS[yypt-2].item.([]*ast.StoreParameter)
l = append(l, yyS[yypt-0].item.(*ast.StoreParameter))
parser.yyVAL.item = l
}
case 2890:
{
parser.yyVAL.item = []*ast.StoreParameter{yyS[yypt-0].item.(*ast.StoreParameter)}
}
case 2891:
{
x := &ast.StoreParameter{
Paramstatus: yyS[yypt-2].item.(int),
ParamType: yyS[yypt-0].item.(*types.FieldType),
ParamName: yyS[yypt-1].ident,
}
parser.yyVAL.item = x
}
case 2892:
{
parser.yyVAL.item = ast.MODE_IN
}
case 2893:
{
parser.yyVAL.item = ast.MODE_IN
}
case 2894:
{
parser.yyVAL.item = ast.MODE_OUT
}
case 2895:
{
parser.yyVAL.item = ast.MODE_INOUT
}
case 2898:
{
var sel ast.StmtNode
switch x := yyS[yypt-0].expr.(*ast.SubqueryExpr).Query.(type) {
case *ast.SelectStmt:
x.IsInBraces = true
sel = x
case *ast.SetOprStmt:
x.IsInBraces = true
sel = x
}
parser.yyVAL.statement = sel
}
case 2913:
{
var sel ast.StmtNode
switch x := yyS[yypt-0].expr.(*ast.SubqueryExpr).Query.(type) {
case *ast.SelectStmt:
x.IsInBraces = true
sel = x
case *ast.SetOprStmt:
x.IsInBraces = true
sel = x
}
parser.yyVAL.statement = sel
}
case 2915:
{
parser.yyVAL.statement = yyS[yypt-0].statement
}
case 2916:
{
parser.yyVAL.item = []string{strings.ToLower(yyS[yypt-0].ident)}
}
case 2917:
{
l := yyS[yypt-2].item.([]string)
l = append(l, strings.ToLower(yyS[yypt-0].ident))
parser.yyVAL.item = l
}
case 2918:
{
parser.yyVAL.item = nil
}
case 2919:
{
parser.yyVAL.item = yyS[yypt-0].expr
}
case 2920:
{
x := &ast.ProcedureDecl{
DeclNames: yyS[yypt-2].item.([]string),
DeclType: yyS[yypt-1].item.(*types.FieldType),
}
if yyS[yypt-0].item != nil {
x.DeclDefault = yyS[yypt-0].item.(ast.ExprNode)
}
parser.yyVAL.item = x
}
case 2921:
{
name := strings.ToLower(yyS[yypt-3].ident)
parser.yyVAL.item = &ast.ProcedureCursor{
CurName: name,
Selectstring: yyS[yypt-0].statement.(ast.StmtNode),
}
}
case 2922:
{
parser.yyVAL.item = &ast.ProcedureErrorControl{
ControlHandle: yyS[yypt-4].item.(int),
ErrorCon: yyS[yypt-1].item.([]ast.ErrNode),
Operate: yyS[yypt-0].statement.(ast.StmtNode),
}
}
case 2923:
{
parser.yyVAL.item = ast.PROCEDUR_CONTINUE
}
case 2924:
{
parser.yyVAL.item = ast.PROCEDUR_EXIT
}
case 2925:
{
parser.yyVAL.item = []ast.ErrNode{yyS[yypt-0].statement.(ast.ErrNode)}
}
case 2926:
{
l := yyS[yypt-2].item.([]ast.ErrNode)
l = append(l, yyS[yypt-0].statement.(ast.ErrNode))
parser.yyVAL.item = l
}
case 2927:
{
parser.yyVAL.statement = yyS[yypt-0].statement.(ast.ErrNode)
}
case 2928:
{
parser.yyVAL.statement = &ast.ProcedureErrorCon{
ErrorCon: ast.PROCEDUR_SQLWARNING,
}
}
case 2929:
{
parser.yyVAL.statement = &ast.ProcedureErrorCon{
ErrorCon: ast.PROCEDUR_NOT_FOUND,
}
}
case 2930:
{
parser.yyVAL.statement = &ast.ProcedureErrorCon{
ErrorCon: ast.PROCEDUR_SQLEXCEPTION,
}
}
case 2931:
{
parser.yyVAL.statement = &ast.ProcedureErrorVal{
ErrorNum: getUint64FromNUM(yyS[yypt-0].item),
}
}
case 2932:
{
parser.yyVAL.statement = &ast.ProcedureErrorState{
CodeStatus: yyS[yypt-0].ident,
}
}
case 2935:
{
name := strings.ToLower(yyS[yypt-0].ident)
parser.yyVAL.statement = &ast.ProcedureOpenCur{
CurName: name,
}
}
case 2936:
{
name := strings.ToLower(yyS[yypt-2].ident)
parser.yyVAL.statement = &ast.ProcedureFetchInto{
CurName: name,
Variables: yyS[yypt-0].item.([]string),
}
}
case 2937:
{
name := strings.ToLower(yyS[yypt-0].ident)
parser.yyVAL.statement = &ast.ProcedureCloseCur{
CurName: name,
}
}
case 2941:
{
parser.yyVAL.item = []string{strings.ToLower(yyS[yypt-0].ident)}
}
case 2942:
{
l := yyS[yypt-2].item.([]string)
l = append(l, strings.ToLower(yyS[yypt-0].ident))
parser.yyVAL.item = l
}
case 2943:
{
parser.yyVAL.item = []ast.DeclNode{}
}
case 2944:
{
parser.yyVAL.item = yyS[yypt-0].item
}
case 2945:
{
parser.yyVAL.item = []ast.DeclNode{yyS[yypt-1].item.(ast.DeclNode)}
}
case 2946:
{
l := yyS[yypt-2].item.([]ast.DeclNode)
l = append(l, yyS[yypt-1].item.(ast.DeclNode))
parser.yyVAL.item = l
}
case 2947:
{
parser.yyVAL.item = []ast.StmtNode{}
}
case 2948:
{
l := yyS[yypt-2].item.([]ast.StmtNode)
l = append(l, yyS[yypt-1].statement.(ast.StmtNode))
parser.yyVAL.item = l
}
case 2949:
{
parser.yyVAL.item = []ast.StmtNode{yyS[yypt-1].statement.(ast.StmtNode)}
}
case 2950:
{
l := yyS[yypt-2].item.([]ast.StmtNode)
l = append(l, yyS[yypt-1].statement.(ast.StmtNode))
parser.yyVAL.item = l
}
case 2951:
{
x := &ast.ProcedureBlock{
ProcedureVars: yyS[yypt-2].item.([]ast.DeclNode),
ProcedureProcStmts: yyS[yypt-1].item.([]ast.StmtNode),
}
parser.yyVAL.statement = x
}
case 2952:
{
parser.yyVAL.statement = &ast.ProcedureIfInfo{
IfBody: yyS[yypt-2].statement.(*ast.ProcedureIfBlock),
}
}
case 2953:
{
ifBlock := &ast.ProcedureIfBlock{
IfExpr: yyS[yypt-3].expr.(ast.ExprNode),
ProcedureIfStmts: yyS[yypt-1].item.([]ast.StmtNode),
}
if yyS[yypt-0].statement != nil {
ifBlock.ProcedureElseStmt = yyS[yypt-0].statement.(ast.StmtNode)
}
parser.yyVAL.statement = ifBlock
}
case 2954:
{
parser.yyVAL.statement = nil
}
case 2955:
{
parser.yyVAL.statement = &ast.ProcedureElseIfBlock{
ProcedureIfStmt: yyS[yypt-0].statement.(*ast.ProcedureIfBlock),
}
}
case 2956:
{
parser.yyVAL.statement = &ast.ProcedureElseBlock{
ProcedureIfStmts: yyS[yypt-0].item.([]ast.StmtNode),
}
}
case 2957:
{
parser.yyVAL.statement = yyS[yypt-0].statement
}
case 2958:
{
parser.yyVAL.statement = yyS[yypt-0].statement
}
case 2959:
{
parser.yyVAL.item = []*ast.SimpleWhenThenStmt{yyS[yypt-0].statement.(*ast.SimpleWhenThenStmt)}
}
case 2960:
{
l := yyS[yypt-1].item.([]*ast.SimpleWhenThenStmt)
l = append(l, yyS[yypt-0].statement.(*ast.SimpleWhenThenStmt))
parser.yyVAL.item = l
}
case 2961:
{
parser.yyVAL.item = []*ast.SearchWhenThenStmt{yyS[yypt-0].statement.(*ast.SearchWhenThenStmt)}
}
case 2962:
{
l := yyS[yypt-1].item.([]*ast.SearchWhenThenStmt)
l = append(l, yyS[yypt-0].statement.(*ast.SearchWhenThenStmt))
parser.yyVAL.item = l
}
case 2963:
{
parser.yyVAL.statement = &ast.SimpleWhenThenStmt{
Expr: yyS[yypt-2].expr.(ast.ExprNode),
ProcedureStmts: yyS[yypt-0].item.([]ast.StmtNode),
}
}
case 2964:
{
parser.yyVAL.statement = &ast.SearchWhenThenStmt{
Expr: yyS[yypt-2].expr.(ast.ExprNode),
ProcedureStmts: yyS[yypt-0].item.([]ast.StmtNode),
}
}
case 2965:
{
parser.yyVAL.item = nil
}
case 2966:
{
parser.yyVAL.item = yyS[yypt-0].item.([]ast.StmtNode)
}
case 2967:
{
caseStmt := &ast.SimpleCaseStmt{
Condition: yyS[yypt-4].expr.(ast.ExprNode),
WhenCases: yyS[yypt-3].item.([]*ast.SimpleWhenThenStmt),
}
if yyS[yypt-2].item != nil {
caseStmt.ElseCases = yyS[yypt-2].item.([]ast.StmtNode)
}
parser.yyVAL.statement = caseStmt
}
case 2968:
{
caseStmt := &ast.SearchCaseStmt{
WhenCases: yyS[yypt-3].item.([]*ast.SearchWhenThenStmt),
}
if yyS[yypt-2].item != nil {
caseStmt.ElseCases = yyS[yypt-2].item.([]ast.StmtNode)
}
parser.yyVAL.statement = caseStmt
}
case 2969:
{
parser.yyVAL.statement = yyS[yypt-0].statement
}
case 2970:
{
parser.yyVAL.statement = &ast.ProcedureWhileStmt{
Condition: yyS[yypt-4].expr.(ast.ExprNode),
Body: yyS[yypt-2].item.([]ast.StmtNode),
}
}
case 2971:
{
parser.yyVAL.statement = &ast.ProcedureRepeatStmt{
Body: yyS[yypt-4].item.([]ast.StmtNode),
Condition: yyS[yypt-2].expr.(ast.ExprNode),
}
}
case 2972:
{
labelBlock := &ast.ProcedureLabelBlock{
LabelName: yyS[yypt-3].ident,
Block: yyS[yypt-1].statement.(*ast.ProcedureBlock),
}
if yyS[yypt-0].ident != "" && (yyS[yypt-3].ident != yyS[yypt-0].ident) {
labelBlock.LabelError = true
labelBlock.LabelEnd = yyS[yypt-0].ident
}
parser.yyVAL.statement = labelBlock
}
case 2973:
{
parser.yyVAL.ident = ""
}
case 2974:
{
parser.yyVAL.ident = yyS[yypt-0].ident
}
case 2975:
{
labelLoop := &ast.ProcedureLabelLoop{
LabelName: yyS[yypt-3].ident,
Block: yyS[yypt-1].statement.(ast.StmtNode),
}
if yyS[yypt-0].ident != "" && (yyS[yypt-3].ident != yyS[yypt-0].ident) {
labelLoop.LabelError = true
labelLoop.LabelEnd = yyS[yypt-0].ident
}
parser.yyVAL.statement = labelLoop
}
case 2976:
{
parser.yyVAL.statement = &ast.ProcedureJump{
Name: yyS[yypt-0].ident,
IsLeave: false,
}
}
case 2977:
{
parser.yyVAL.statement = &ast.ProcedureJump{
Name: yyS[yypt-0].ident,
IsLeave: true,
}
}
case 2990:
{
x := &ast.ProcedureInfo{
IfNotExists: yyS[yypt-5].item.(bool),
ProcedureName: yyS[yypt-4].item.(*ast.TableName),
ProcedureParam: yyS[yypt-2].item.([]*ast.StoreParameter),
ProcedureBody: yyS[yypt-0].statement,
}
startOffset := parser.startOffset(&yyS[yypt])
originStmt := yyS[yypt-0].statement
originStmt.SetText(parser.lexer.client, strings.TrimSpace(parser.src[startOffset:parser.yylval.offset]))
startOffset = parser.startOffset(&yyS[yypt-3])
if parser.src[startOffset] == '(' {
startOffset++
}
endOffset := parser.startOffset(&yyS[yypt-1])
x.ProcedureParamStr = strings.TrimSpace(parser.src[startOffset:endOffset])
parser.yyVAL.statement = x
}
case 2991:
{
parser.yyVAL.statement = &ast.DropProcedureStmt{
IfExists: yyS[yypt-1].item.(bool),
ProcedureName: yyS[yypt-0].item.(*ast.TableName),
}
}
case 2992:
{
parser.yyVAL.statement = yyS[yypt-0].item.(*ast.CalibrateResourceStmt)
}
case 2993:
{
parser.yyVAL.item = &ast.CalibrateResourceStmt{}
}
case 2994:
{
parser.yyVAL.item = &ast.CalibrateResourceStmt{
DynamicCalibrateResourceOptionList: yyS[yypt-0].item.([]*ast.DynamicCalibrateResourceOption),
}
}
case 2995:
{
parser.yyVAL.item = &ast.CalibrateResourceStmt{
Tp: yyS[yypt-0].item.(ast.CalibrateResourceType),
}
}
case 2996:
{
parser.yyVAL.item = []*ast.DynamicCalibrateResourceOption{yyS[yypt-0].item.(*ast.DynamicCalibrateResourceOption)}
}
case 2997:
{
if yyS[yypt-1].item.([]*ast.DynamicCalibrateResourceOption)[0].Tp == yyS[yypt-0].item.(*ast.DynamicCalibrateResourceOption).Tp ||
(len(yyS[yypt-1].item.([]*ast.DynamicCalibrateResourceOption)) > 1 && yyS[yypt-1].item.([]*ast.DynamicCalibrateResourceOption)[1].Tp == yyS[yypt-0].item.(*ast.DynamicCalibrateResourceOption).Tp) {
yylex.AppendError(yylex.Errorf("Dupliated options specified"))
return 1
}
parser.yyVAL.item = append(yyS[yypt-1].item.([]*ast.DynamicCalibrateResourceOption), yyS[yypt-0].item.(*ast.DynamicCalibrateResourceOption))
}
case 2998:
{
if yyS[yypt-2].item.([]*ast.DynamicCalibrateResourceOption)[0].Tp == yyS[yypt-0].item.(*ast.DynamicCalibrateResourceOption).Tp ||
(len(yyS[yypt-2].item.([]*ast.DynamicCalibrateResourceOption)) > 1 && yyS[yypt-2].item.([]*ast.DynamicCalibrateResourceOption)[1].Tp == yyS[yypt-0].item.(*ast.DynamicCalibrateResourceOption).Tp) {
yylex.AppendError(yylex.Errorf("Dupliated options specified"))
return 1
}
parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.DynamicCalibrateResourceOption), yyS[yypt-0].item.(*ast.DynamicCalibrateResourceOption))
}
case 2999:
{
parser.yyVAL.item = &ast.DynamicCalibrateResourceOption{Tp: ast.CalibrateStartTime, Ts: yyS[yypt-0].expr.(ast.ExprNode)}
}
case 3000:
{
parser.yyVAL.item = &ast.DynamicCalibrateResourceOption{Tp: ast.CalibrateEndTime, Ts: yyS[yypt-0].expr.(ast.ExprNode)}
}
case 3001:
{
_, err := duration.ParseDuration(yyS[yypt-0].ident)
if err != nil {
yylex.AppendError(yylex.Errorf("The DURATION option is not a valid duration: %s", err.Error()))
return 1
}
parser.yyVAL.item = &ast.DynamicCalibrateResourceOption{Tp: ast.CalibrateDuration, StrValue: yyS[yypt-0].ident}
}
case 3002:
{
parser.yyVAL.item = &ast.DynamicCalibrateResourceOption{Tp: ast.CalibrateDuration, Ts: yyS[yypt-1].expr.(ast.ExprNode), Unit: yyS[yypt-0].item.(ast.TimeUnitType)}
}
case 3003:
{
parser.yyVAL.item = ast.TPCC
}
case 3004:
{
parser.yyVAL.item = ast.OLTPREADWRITE
}
case 3005:
{
parser.yyVAL.item = ast.OLTPREADONLY
}
case 3006:
{
parser.yyVAL.item = ast.OLTPWRITEONLY
}
case 3007:
{
parser.yyVAL.item = ast.TPCH10
}
case 3008:
{
parser.yyVAL.statement = &ast.AddQueryWatchStmt{
QueryWatchOptionList: yyS[yypt-0].item.([]*ast.QueryWatchOption),
}
}
case 3009:
{
parser.yyVAL.item = []*ast.QueryWatchOption{yyS[yypt-0].item.(*ast.QueryWatchOption)}
}
case 3010:
{
if !ast.CheckQueryWatchAppend(yyS[yypt-1].item.([]*ast.QueryWatchOption), yyS[yypt-0].item.(*ast.QueryWatchOption)) {
yylex.AppendError(yylex.Errorf("Dupliated options specified"))
return 1
}
parser.yyVAL.item = append(yyS[yypt-1].item.([]*ast.QueryWatchOption), yyS[yypt-0].item.(*ast.QueryWatchOption))
}
case 3011:
{
if !ast.CheckQueryWatchAppend(yyS[yypt-2].item.([]*ast.QueryWatchOption), yyS[yypt-0].item.(*ast.QueryWatchOption)) {
yylex.AppendError(yylex.Errorf("Dupliated options specified"))
return 1
}
parser.yyVAL.item = append(yyS[yypt-2].item.([]*ast.QueryWatchOption), yyS[yypt-0].item.(*ast.QueryWatchOption))
}
case 3012:
{
parser.yyVAL.item = &ast.QueryWatchOption{
Tp: ast.QueryWatchResourceGroup,
ResourceGroupOption: &ast.QueryWatchResourceGroupOption{
GroupNameStr: ast.NewCIStr(yyS[yypt-0].ident),
},
}
}
case 3013:
{
parser.yyVAL.item = &ast.QueryWatchOption{
Tp: ast.QueryWatchResourceGroup,
ResourceGroupOption: &ast.QueryWatchResourceGroupOption{
GroupNameExpr: yyS[yypt-0].expr,
},
}
}
case 3014:
{
parser.yyVAL.item = &ast.QueryWatchOption{
Tp: ast.QueryWatchAction,
ActionOption: yyS[yypt-0].item.(*ast.ResourceGroupRunawayActionOption),
}
}
case 3015:
{
parser.yyVAL.item = &ast.QueryWatchOption{
Tp: ast.QueryWatchType,
TextOption: yyS[yypt-0].item.(*ast.QueryWatchTextOption),
}
}
case 3016:
{
parser.yyVAL.item = &ast.QueryWatchTextOption{
Type: ast.WatchSimilar,
PatternExpr: yyS[yypt-0].expr,
}
}
case 3017:
{
parser.yyVAL.item = &ast.QueryWatchTextOption{
Type: ast.WatchPlan,
PatternExpr: yyS[yypt-0].expr,
}
}
case 3018:
{
parser.yyVAL.item = &ast.QueryWatchTextOption{
Type: yyS[yypt-2].item.(ast.RunawayWatchType),
PatternExpr: yyS[yypt-0].expr,
TypeSpecified: true,
}
}
case 3019:
{
parser.yyVAL.statement = &ast.DropQueryWatchStmt{
IntValue: yyS[yypt-0].item.(int64),
}
}
case 3020:
{
parser.yyVAL.statement = &ast.DropQueryWatchStmt{
GroupNameStr: ast.NewCIStr(yyS[yypt-0].ident),
}
}
case 3021:
{
parser.yyVAL.statement = &ast.DropQueryWatchStmt{
GroupNameExpr: yyS[yypt-0].expr.(ast.ExprNode),
}
}
}
if !parser.lexer.skipPositionRecording {
yySetOffset(parser.yyVAL, parser.yyVAL.offset)
}
if yyEx != nil && yyEx.Reduced(r, exState, parser.yyVAL) {
return -1
}
goto yystack /* stack new state and value */
}
// Copyright 2015 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// See the License for the specific language governing permissions and
// limitations under the License.
package terror
import (
"fmt"
"runtime/debug"
"strconv"
"strings"
"sync"
"sync/atomic"
"github.com/pingcap/errors"
"github.com/pingcap/log"
"github.com/pingcap/tidb/pkg/parser/mysql"
"go.uber.org/zap"
)
// ErrCode represents a specific error type in a error class.
// Same error code can be used in different error classes.
type ErrCode int
const (
// Executor error codes.
// CodeUnknown is for errors of unknown reason.
CodeUnknown ErrCode = -1
// CodeExecResultIsEmpty indicates execution result is empty.
CodeExecResultIsEmpty ErrCode = 3
// Expression error codes.
// CodeMissConnectionID indicates connection id is missing.
CodeMissConnectionID ErrCode = 1
// Special error codes.
// CodeResultUndetermined indicates the sql execution result is undetermined.
CodeResultUndetermined ErrCode = 2
)
// ErrClass represents a class of errors.
type ErrClass int
// Error implements error interface.
type Error = errors.Error
// Error classes.
var (
ClassAutoid = RegisterErrorClass(1, "autoid")
ClassDDL = RegisterErrorClass(2, "ddl")
ClassDomain = RegisterErrorClass(3, "domain")
ClassEvaluator = RegisterErrorClass(4, "evaluator")
ClassExecutor = RegisterErrorClass(5, "executor")
ClassExpression = RegisterErrorClass(6, "expression")
ClassAdmin = RegisterErrorClass(7, "admin")
ClassKV = RegisterErrorClass(8, "kv")
ClassMeta = RegisterErrorClass(9, "meta")
ClassOptimizer = RegisterErrorClass(10, "planner")
ClassParser = RegisterErrorClass(11, "parser")
ClassPerfSchema = RegisterErrorClass(12, "perfschema")
ClassPrivilege = RegisterErrorClass(13, "privilege")
ClassSchema = RegisterErrorClass(14, "schema")
ClassServer = RegisterErrorClass(15, "server")
ClassStructure = RegisterErrorClass(16, "structure")
ClassVariable = RegisterErrorClass(17, "variable")
ClassXEval = RegisterErrorClass(18, "xeval")
ClassTable = RegisterErrorClass(19, "table")
ClassTypes = RegisterErrorClass(20, "types")
ClassGlobal = RegisterErrorClass(21, "global")
ClassMockTikv = RegisterErrorClass(22, "mocktikv")
ClassJSON = RegisterErrorClass(23, "json")
ClassTiKV = RegisterErrorClass(24, "tikv")
ClassSession = RegisterErrorClass(25, "session")
ClassPlugin = RegisterErrorClass(26, "plugin")
ClassUtil = RegisterErrorClass(27, "util")
// Add more as needed.
)
var errClass2Desc = make(map[ErrClass]string)
var rfcCode2errClass = newCode2ErrClassMap()
type code2ErrClassMap struct {
data sync.Map
}
func newCode2ErrClassMap() *code2ErrClassMap {
return &code2ErrClassMap{
data: sync.Map{},
}
}
func (m *code2ErrClassMap) Get(key string) (ErrClass, bool) {
ret, have := m.data.Load(key)
if !have {
return ErrClass(-1), false
}
return ret.(ErrClass), true
}
func (m *code2ErrClassMap) Put(key string, err ErrClass) {
m.data.Store(key, err)
}
var registerFinish uint32
// RegisterFinish makes the register of new error panic.
// The use pattern should be register all the errors during initialization, and then call RegisterFinish.
func RegisterFinish() {
atomic.StoreUint32(®isterFinish, 1)
}
func frozen() bool {
return atomic.LoadUint32(®isterFinish) != 0
}
// RegisterErrorClass registers new error class for terror.
func RegisterErrorClass(classCode int, desc string) ErrClass {
errClass := ErrClass(classCode)
if _, exists := errClass2Desc[errClass]; exists {
panic(fmt.Sprintf("duplicate register ClassCode %d - %s", classCode, desc))
}
errClass2Desc[errClass] = desc
return errClass
}
// String implements fmt.Stringer interface.
func (ec ErrClass) String() string {
if s, exists := errClass2Desc[ec]; exists {
return s
}
return strconv.Itoa(int(ec))
}
// EqualClass returns true if err is *Error with the same class.
func (ec ErrClass) EqualClass(err error) bool {
e := errors.Cause(err)
if e == nil {
return false
}
if te, ok := e.(*Error); ok {
rfcCode := te.RFCCode()
if index := strings.Index(string(rfcCode), ":"); index > 0 {
if class, has := rfcCode2errClass.Get(string(rfcCode)[:index]); has {
return class == ec
}
}
}
return false
}
// NotEqualClass returns true if err is not *Error with the same class.
func (ec ErrClass) NotEqualClass(err error) bool {
return !ec.EqualClass(err)
}
func (ec ErrClass) initError(code ErrCode) string {
if frozen() {
debug.PrintStack()
panic("register error after initialized is prohibited")
}
clsMap, ok := ErrClassToMySQLCodes[ec]
if !ok {
clsMap = make(map[ErrCode]struct{})
ErrClassToMySQLCodes[ec] = clsMap
}
clsMap[code] = struct{}{}
class := errClass2Desc[ec]
rfcCode := fmt.Sprintf("%s:%d", class, code)
rfcCode2errClass.Put(class, ec)
return rfcCode
}
// New defines an *Error with an error code and an error message.
// Usually used to create base *Error.
// Attention:
// this method is not goroutine-safe and
// usually be used in global variable initializer
//
// Deprecated: use NewStd or NewStdErr instead.
func (ec ErrClass) New(code ErrCode, message string) *Error {
rfcCode := ec.initError(code)
err := errors.Normalize(message, errors.MySQLErrorCode(int(code)), errors.RFCCodeText(rfcCode))
return err
}
// NewStdErr defines an *Error with an error code, an error
// message and workaround to create standard error.
func (ec ErrClass) NewStdErr(code ErrCode, message *mysql.ErrMessage) *Error {
rfcCode := ec.initError(code)
err := errors.Normalize(
message.Raw, errors.RedactArgs(message.RedactArgPos),
errors.MySQLErrorCode(int(code)), errors.RFCCodeText(rfcCode),
)
return err
}
// NewStd calls New using the standard message for the error code
// Attention:
// this method is not goroutine-safe and
// usually be used in global variable initializer
func (ec ErrClass) NewStd(code ErrCode) *Error {
return ec.NewStdErr(code, mysql.MySQLErrName[uint16(code)])
}
// Synthesize synthesizes an *Error in the air
// it didn't register error into ErrClassToMySQLCodes
// so it's goroutine-safe
// and often be used to create Error came from other systems like TiKV.
func (ec ErrClass) Synthesize(code ErrCode, message string) *Error {
return errors.Normalize(
message, errors.MySQLErrorCode(int(code)),
errors.RFCCodeText(fmt.Sprintf("%s:%d", errClass2Desc[ec], code)),
)
}
// ToSQLError convert Error to mysql.SQLError.
func ToSQLError(e *Error) *mysql.SQLError {
code := getMySQLErrorCode(e)
return mysql.NewErrf(code, "%s", nil, e.GetMsg())
}
var defaultMySQLErrorCode uint16
func getMySQLErrorCode(e *Error) uint16 {
rfcCode := e.RFCCode()
var class ErrClass
if index := strings.Index(string(rfcCode), ":"); index > 0 {
ec, has := rfcCode2errClass.Get(string(rfcCode)[:index])
if !has {
log.Warn("Unknown error class", zap.String("class", string(rfcCode)[:index]))
return defaultMySQLErrorCode
}
class = ec
}
codeMap, ok := ErrClassToMySQLCodes[class]
if !ok {
log.Warn("Unknown error class", zap.Int("class", int(class)))
return defaultMySQLErrorCode
}
_, ok = codeMap[ErrCode(e.Code())]
if !ok {
log.Debug("Unknown error code", zap.Int("class", int(class)), zap.Int("code", int(e.Code())))
return defaultMySQLErrorCode
}
return uint16(e.Code())
}
var (
// ErrClassToMySQLCodes is the map of ErrClass to code-set.
ErrClassToMySQLCodes = make(map[ErrClass]map[ErrCode]struct{})
// ErrCritical is the critical error class.
ErrCritical = ClassGlobal.NewStdErr(CodeExecResultIsEmpty, mysql.Message("critical error %v", nil))
// ErrResultUndetermined is the error when execution result is unknown.
ErrResultUndetermined = ClassGlobal.NewStdErr(
CodeResultUndetermined,
mysql.Message("execution result undetermined", nil),
)
)
func init() {
defaultMySQLErrorCode = mysql.ErrUnknown
}
// ErrorEqual returns a boolean indicating whether err1 is equal to err2.
func ErrorEqual(err1, err2 error) bool {
e1 := errors.Cause(err1)
e2 := errors.Cause(err2)
if e1 == e2 {
return true
}
if e1 == nil || e2 == nil {
return e1 == e2
}
te1, ok1 := e1.(*Error)
te2, ok2 := e2.(*Error)
if ok1 && ok2 {
return te1.RFCCode() == te2.RFCCode()
}
return e1.Error() == e2.Error()
}
// ErrorNotEqual returns a boolean indicating whether err1 isn't equal to err2.
func ErrorNotEqual(err1, err2 error) bool {
return !ErrorEqual(err1, err2)
}
// MustNil cleans up and fatals if err is not nil.
func MustNil(err error, closeFuns ...func()) {
if err != nil {
for _, f := range closeFuns {
f()
}
log.Fatal("unexpected error", zap.Error(err), zap.Stack("stack"))
}
}
// Call executes a function and checks the returned err.
func Call(fn func() error) {
err := fn()
if err != nil {
log.Error("function call errored", zap.Error(err), zap.Stack("stack"))
}
}
// Log logs the error if it is not nil.
func Log(err error) {
if err != nil {
log.Error("encountered error", zap.Error(err), zap.Stack("stack"))
}
}
// GetErrClass returns the error class of the error.
func GetErrClass(e *Error) ErrClass {
rfcCode := e.RFCCode()
if index := strings.Index(string(rfcCode), ":"); index > 0 {
if class, has := rfcCode2errClass.Get(string(rfcCode)[:index]); has {
return class
}
}
return ErrClass(-1)
}
// Copyright 2021 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// See the License for the specific language governing permissions and
// limitations under the License.
package tidb
const (
// FeatureIDTiDB represents the general TiDB-specific features.
FeatureIDTiDB = ""
// FeatureIDAutoRandom is the `auto_random` feature.
FeatureIDAutoRandom = "auto_rand"
// FeatureIDAutoIDCache is the `auto_id_cache` feature.
FeatureIDAutoIDCache = "auto_id_cache"
// FeatureIDAutoRandomBase is the `auto_random_base` feature.
FeatureIDAutoRandomBase = "auto_rand_base"
// FeatureIDClusteredIndex is the `clustered_index` feature.
FeatureIDClusteredIndex = "clustered_index"
// FeatureIDForceAutoInc is the `force auto_increment` feature.
FeatureIDForceAutoInc = "force_inc"
// FeatureIDPlacement is the `placement rule` feature.
FeatureIDPlacement = "placement"
// FeatureIDTTL is the `ttl` feature
FeatureIDTTL = "ttl"
// FeatureIDResourceGroup is the `resource group` feature.
FeatureIDResourceGroup = "resource_group"
// FeatureIDGlobalIndex is the `Global Index` feature.
FeatureIDGlobalIndex = "global_index"
// FeatureIDPresplit is the pre-split feature.
FeatureIDPresplit = "pre_split"
)
var featureIDs = map[string]struct{}{
FeatureIDAutoRandom: {},
FeatureIDAutoIDCache: {},
FeatureIDAutoRandomBase: {},
FeatureIDClusteredIndex: {},
FeatureIDForceAutoInc: {},
FeatureIDPlacement: {},
FeatureIDTTL: {},
FeatureIDGlobalIndex: {},
FeatureIDPresplit: {},
}
// CanParseFeature is used to check if a feature can be parsed.
func CanParseFeature(fs ...string) bool {
for _, f := range fs {
if _, ok := featureIDs[f]; !ok {
return false
}
}
return true
}
// Copyright 2014 The ql Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSES/QL-LICENSE file.
// Copyright 2015 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// See the License for the specific language governing permissions and
// limitations under the License.
package types
import (
"strings"
"github.com/pingcap/tidb/pkg/parser/mysql"
"github.com/pingcap/tidb/pkg/parser/terror"
)
// IsTypeBlob returns a boolean indicating whether the tp is a blob type.
func IsTypeBlob(tp byte) bool {
switch tp {
case mysql.TypeTinyBlob, mysql.TypeMediumBlob, mysql.TypeBlob, mysql.TypeLongBlob:
return true
default:
return false
}
}
// IsTypeChar returns a boolean indicating
// whether the tp is the char type like a string type or a varchar type.
func IsTypeChar(tp byte) bool {
return tp == mysql.TypeString || tp == mysql.TypeVarchar
}
// IsTypeVector returns whether tp is a vector type.
func IsTypeVector(tp byte) bool {
return tp == mysql.TypeTiDBVectorFloat32
}
var type2Str = map[byte]string{
mysql.TypeBit: "bit",
mysql.TypeBlob: "text",
mysql.TypeDate: "date",
mysql.TypeDatetime: "datetime",
mysql.TypeUnspecified: "unspecified",
mysql.TypeNewDecimal: "decimal",
mysql.TypeDouble: "double",
mysql.TypeEnum: "enum",
mysql.TypeFloat: "float",
mysql.TypeGeometry: "geometry",
mysql.TypeTiDBVectorFloat32: "vector",
mysql.TypeInt24: "mediumint",
mysql.TypeJSON: "json",
mysql.TypeLong: "int",
mysql.TypeLonglong: "bigint",
mysql.TypeLongBlob: "longtext",
mysql.TypeMediumBlob: "mediumtext",
mysql.TypeNull: "null",
mysql.TypeSet: "set",
mysql.TypeShort: "smallint",
mysql.TypeString: "char",
mysql.TypeDuration: "time",
mysql.TypeTimestamp: "timestamp",
mysql.TypeTiny: "tinyint",
mysql.TypeTinyBlob: "tinytext",
mysql.TypeVarchar: "varchar",
mysql.TypeVarString: "var_string",
mysql.TypeYear: "year",
}
var str2Type = map[string]byte{
"bit": mysql.TypeBit,
"text": mysql.TypeBlob,
"date": mysql.TypeDate,
"datetime": mysql.TypeDatetime,
"unspecified": mysql.TypeUnspecified,
"decimal": mysql.TypeNewDecimal,
"double": mysql.TypeDouble,
"enum": mysql.TypeEnum,
"float": mysql.TypeFloat,
"geometry": mysql.TypeGeometry,
"vector": mysql.TypeTiDBVectorFloat32,
"mediumint": mysql.TypeInt24,
"json": mysql.TypeJSON,
"int": mysql.TypeLong,
"bigint": mysql.TypeLonglong,
"longtext": mysql.TypeLongBlob,
"mediumtext": mysql.TypeMediumBlob,
"null": mysql.TypeNull,
"set": mysql.TypeSet,
"smallint": mysql.TypeShort,
"char": mysql.TypeString,
"time": mysql.TypeDuration,
"timestamp": mysql.TypeTimestamp,
"tinyint": mysql.TypeTiny,
"tinytext": mysql.TypeTinyBlob,
"varchar": mysql.TypeVarchar,
"var_string": mysql.TypeVarString,
"year": mysql.TypeYear,
}
// TypeStr converts tp to a string.
func TypeStr(tp byte) (r string) {
return type2Str[tp]
}
// TypeToStr converts a field to a string.
// It is used for converting Text to Blob,
// or converting Char to Binary.
// Args:
//
// tp: type enum
// cs: charset
func TypeToStr(tp byte, cs string) (r string) {
ts := type2Str[tp]
if cs != "binary" {
return ts
}
if IsTypeBlob(tp) {
ts = strings.Replace(ts, "text", "blob", 1)
} else if IsTypeChar(tp) {
ts = strings.Replace(ts, "char", "binary", 1)
} else if tp == mysql.TypeNull {
ts = "binary"
}
return ts
}
// StrToType convert a string to type enum.
// Args:
//
// ts: type string
func StrToType(ts string) (tp byte) {
ts = strings.Replace(ts, "blob", "text", 1)
ts = strings.Replace(ts, "binary", "char", 1)
if tp, ok := str2Type[ts]; ok {
return tp
}
return mysql.TypeUnspecified
}
var (
dig2bytes = [10]int{0, 1, 1, 2, 2, 3, 3, 4, 4, 4}
)
// constant values.
const (
digitsPerWord = 9 // A word holds 9 digits.
wordSize = 4 // A word is 4 bytes int32.
)
var (
// ErrInvalidDefault is returned when meet a invalid default value.
ErrInvalidDefault = terror.ClassTypes.NewStd(mysql.ErrInvalidDefault)
// ErrDataOutOfRange is returned when meet a value out of range.
ErrDataOutOfRange = terror.ClassTypes.NewStd(mysql.ErrDataOutOfRange)
// ErrTruncatedWrongValue is returned when meet a value bigger than
// 99999999999999999999999999999999999999999999999999999999999999999 during parsing.
ErrTruncatedWrongValue = terror.ClassTypes.NewStd(mysql.ErrTruncatedWrongValue)
// ErrIllegalValueForType is returned when strconv.ParseFloat meet strconv.ErrRange during parsing.
ErrIllegalValueForType = terror.ClassTypes.NewStd(mysql.ErrIllegalValueForType)
)
// Copyright 2017 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// See the License for the specific language governing permissions and
// limitations under the License.
package types
import "fmt"
// EvalType indicates the specified types that arguments and result of a built-in function should be.
type EvalType byte
const (
// ETInt represents type INT in evaluation.
ETInt EvalType = iota
// ETReal represents type REAL in evaluation.
ETReal
// ETDecimal represents type DECIMAL in evaluation.
ETDecimal
// ETString represents type STRING in evaluation.
ETString
// ETDatetime represents type DATETIME in evaluation.
ETDatetime
// ETTimestamp represents type TIMESTAMP in evaluation.
ETTimestamp
// ETDuration represents type DURATION in evaluation.
ETDuration
// ETJson represents type JSON in evaluation.
ETJson
// ETVectorFloat32 represents type VectorFloat32 in evaluation.
ETVectorFloat32
)
// IsStringKind returns true for ETString, ETDatetime, ETTimestamp, ETDuration, ETJson EvalTypes.
func (et EvalType) IsStringKind() bool {
return et == ETString || et == ETDatetime ||
et == ETTimestamp || et == ETDuration || et == ETJson || et == ETVectorFloat32
}
// IsVectorKind returns true for ETVectorXxx EvalTypes.
func (et EvalType) IsVectorKind() bool {
return et == ETVectorFloat32
}
// String implements fmt.Stringer interface.
func (et EvalType) String() string {
switch et {
case ETInt:
return "Int"
case ETReal:
return "Real"
case ETDecimal:
return "Decimal"
case ETString:
return "String"
case ETDatetime:
return "Datetime"
case ETTimestamp:
return "Timestamp"
case ETDuration:
return "Time"
case ETJson:
return "Json"
case ETVectorFloat32:
return "VectorFloat32"
default:
panic(fmt.Sprintf("invalid EvalType %d", et))
}
}
// Copyright 2015 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// See the License for the specific language governing permissions and
// limitations under the License.
package types
import (
"encoding/json"
"fmt"
"io"
"slices"
"strings"
"unsafe"
"github.com/pingcap/tidb/pkg/parser/charset"
"github.com/pingcap/tidb/pkg/parser/format"
"github.com/pingcap/tidb/pkg/parser/mysql"
"github.com/pingcap/tidb/pkg/parser/util"
)
// UnspecifiedLength is unspecified length.
const (
UnspecifiedLength = -1
)
// TiDBStrictIntegerDisplayWidth represent whether return warnings when integerType with (length) was parsed.
// The default is `false`, it will be parsed as warning, and the result in show-create-table will ignore the
// display length when it set to `true`. This is for compatibility with MySQL 8.0 in which integer max display
// length is deprecated, referring this issue #6688 for more details.
var (
TiDBStrictIntegerDisplayWidth bool
)
// FieldType records field type information.
type FieldType struct {
// tp is type of the field
tp byte
// flag represent NotNull, Unsigned, PriKey flags etc.
flag uint
// flen represent size of bytes of the field
flen int
// decimal represent decimal length of the field
decimal int
// charset represent character set
charset string
// collate represent collate rules of the charset
collate string
// elems is the element list for enum and set type.
elems []string
elemsIsBinaryLit []bool
array bool
// Please keep in mind that jsonFieldType should be updated if you add a new field here.
}
// DeepCopy returns a deep copy of the FieldType.
func (ft *FieldType) DeepCopy() *FieldType {
if ft == nil {
return nil
}
ret := &FieldType{
tp: ft.tp,
flag: ft.flag,
flen: ft.flen,
decimal: ft.decimal,
charset: ft.charset,
collate: ft.collate,
array: ft.array,
}
if len(ft.elems) > 0 {
ret.elems = make([]string, len(ft.elems))
copy(ret.elems, ft.elems)
}
if len(ft.elemsIsBinaryLit) > 0 {
ret.elemsIsBinaryLit = make([]bool, len(ft.elemsIsBinaryLit))
copy(ret.elemsIsBinaryLit, ft.elemsIsBinaryLit)
}
return ret
}
// Hash64 implements the cascades/base.Hasher.<0th> interface.
func (ft *FieldType) Hash64(h util.IHasher) {
h.HashByte(ft.tp)
h.HashUint64(uint64(ft.flag))
h.HashInt(ft.flen)
h.HashInt(ft.decimal)
h.HashString(ft.charset)
h.HashString(ft.collate)
h.HashInt(len(ft.elems))
for _, elem := range ft.elems {
h.HashString(elem)
}
h.HashInt(len(ft.elemsIsBinaryLit))
for _, elem := range ft.elemsIsBinaryLit {
h.HashBool(elem)
}
h.HashBool(ft.array)
}
// Equals implements the cascades/base.Hasher.<1th> interface.
func (ft *FieldType) Equals(other any) bool {
ft2, ok := other.(*FieldType)
if !ok {
return false
}
if ft == nil {
return ft2 == nil
}
if other == nil {
return false
}
ok = ft.tp == ft2.tp &&
ft.flag == ft2.flag &&
ft.flen == ft2.flen &&
ft.decimal == ft2.decimal &&
ft.charset == ft2.charset &&
ft.collate == ft2.collate &&
ft.array == ft2.array
if !ok {
return false
}
if len(ft.elems) != len(ft2.elems) {
return false
}
for i, one := range ft.elems {
if one != ft2.elems[i] {
return false
}
}
if len(ft.elemsIsBinaryLit) != len(ft2.elemsIsBinaryLit) {
return false
}
for i, one := range ft.elemsIsBinaryLit {
if one != ft2.elemsIsBinaryLit[i] {
return false
}
}
return true
}
// NewFieldType returns a FieldType,
// with a type and other information about field type.
func NewFieldType(tp byte) *FieldType {
return &FieldType{
tp: tp,
flen: UnspecifiedLength,
decimal: UnspecifiedLength,
}
}
// IsDecimalValid checks whether the decimal is valid.
func (ft *FieldType) IsDecimalValid() bool {
if ft.GetType() == mysql.TypeNewDecimal && (ft.decimal < 0 || ft.decimal > mysql.MaxDecimalScale || ft.flen <= 0 || ft.flen > mysql.MaxDecimalWidth || ft.flen < ft.decimal) {
return false
}
return true
}
// IsVarLengthType Determine whether the column type is a variable-length type
func (ft *FieldType) IsVarLengthType() bool {
switch ft.GetType() {
case mysql.TypeVarchar, mysql.TypeVarString, mysql.TypeJSON, mysql.TypeBlob, mysql.TypeTinyBlob, mysql.TypeMediumBlob, mysql.TypeLongBlob, mysql.TypeTiDBVectorFloat32:
return true
default:
return false
}
}
// GetType returns the type of the FieldType.
func (ft *FieldType) GetType() byte {
if ft.array {
return mysql.TypeJSON
}
return ft.tp
}
// GetFlag returns the flag of the FieldType.
func (ft *FieldType) GetFlag() uint {
return ft.flag
}
// GetFlen returns the length of the field.
func (ft *FieldType) GetFlen() int {
return ft.flen
}
// GetDecimal returns the decimal of the FieldType.
func (ft *FieldType) GetDecimal() int {
return ft.decimal
}
// GetCharset returns the field's charset
func (ft *FieldType) GetCharset() string {
return ft.charset
}
// GetCollate returns the collation of the field.
func (ft *FieldType) GetCollate() string {
return ft.collate
}
// GetElems returns the elements of the FieldType.
func (ft *FieldType) GetElems() []string {
return ft.elems
}
// SetType sets the type of the FieldType.
func (ft *FieldType) SetType(tp byte) {
ft.tp = tp
ft.array = false
}
// SetFlag sets the flag of the FieldType.
func (ft *FieldType) SetFlag(flag uint) {
ft.flag = flag
}
// AddFlag adds a flag to the FieldType.
func (ft *FieldType) AddFlag(flag uint) {
ft.flag |= flag
}
// AndFlag and the flag of the FieldType.
func (ft *FieldType) AndFlag(flag uint) {
ft.flag &= flag
}
// ToggleFlag toggle the flag of the FieldType.
func (ft *FieldType) ToggleFlag(flag uint) {
ft.flag ^= flag
}
// DelFlag delete the flag of the FieldType.
func (ft *FieldType) DelFlag(flag uint) {
ft.flag &= ^flag
}
// SetFlen sets the length of the field.
func (ft *FieldType) SetFlen(flen int) {
ft.flen = flen
}
// SetFlenUnderLimit sets the length of the field to the value of the argument
func (ft *FieldType) SetFlenUnderLimit(flen int) {
if ft.GetType() == mysql.TypeNewDecimal {
ft.flen = min(flen, mysql.MaxDecimalWidth)
} else {
ft.flen = flen
}
}
// SetDecimal sets the decimal of the FieldType.
func (ft *FieldType) SetDecimal(decimal int) {
ft.decimal = decimal
}
// SetDecimalUnderLimit sets the decimal of the field to the value of the argument
func (ft *FieldType) SetDecimalUnderLimit(decimal int) {
if ft.GetType() == mysql.TypeNewDecimal {
ft.decimal = min(decimal, mysql.MaxDecimalScale)
} else {
ft.decimal = decimal
}
}
// UpdateFlenAndDecimalUnderLimit updates the length and decimal to the value of the argument
func (ft *FieldType) UpdateFlenAndDecimalUnderLimit(old *FieldType, deltaDecimal int, deltaFlen int) {
if ft.GetType() != mysql.TypeNewDecimal {
return
}
if old.decimal < 0 {
deltaFlen += mysql.MaxDecimalScale
ft.decimal = mysql.MaxDecimalScale
} else {
ft.SetDecimal(old.decimal + deltaDecimal)
}
if old.flen < 0 {
ft.flen = mysql.MaxDecimalWidth
} else {
ft.SetFlenUnderLimit(old.flen + deltaFlen)
}
}
// SetCharset sets the charset of the FieldType.
func (ft *FieldType) SetCharset(charset string) {
ft.charset = charset
}
// SetCollate sets the collation of the FieldType.
func (ft *FieldType) SetCollate(collate string) {
ft.collate = collate
}
// SetElems sets the elements of the FieldType.
func (ft *FieldType) SetElems(elems []string) {
ft.elems = elems
}
// SetElem sets the element of the FieldType.
func (ft *FieldType) SetElem(idx int, element string) {
ft.elems[idx] = element
}
// SetArray sets the array field of the FieldType.
func (ft *FieldType) SetArray(array bool) {
ft.array = array
}
// IsArray return true if the filed type is array.
func (ft *FieldType) IsArray() bool {
return ft.array
}
// ArrayType return the type of the array.
func (ft *FieldType) ArrayType() *FieldType {
if !ft.array {
return ft
}
clone := ft.Clone()
clone.SetArray(false)
return clone
}
// SetElemWithIsBinaryLit sets the element of the FieldType.
func (ft *FieldType) SetElemWithIsBinaryLit(idx int, element string, isBinaryLit bool) {
ft.elems[idx] = element
if isBinaryLit {
// Create the binary literal flags lazily.
if ft.elemsIsBinaryLit == nil {
ft.elemsIsBinaryLit = make([]bool, len(ft.elems))
}
ft.elemsIsBinaryLit[idx] = true
}
}
// GetElem returns the element of the FieldType.
func (ft *FieldType) GetElem(idx int) string {
return ft.elems[idx]
}
// GetElemIsBinaryLit returns the binary literal flag of the element at index idx.
func (ft *FieldType) GetElemIsBinaryLit(idx int) bool {
if len(ft.elemsIsBinaryLit) == 0 {
return false
}
return ft.elemsIsBinaryLit[idx]
}
// CleanElemIsBinaryLit cleans the binary literal flag of the element at index idx.
func (ft *FieldType) CleanElemIsBinaryLit() {
if ft != nil && ft.elemsIsBinaryLit != nil {
ft.elemsIsBinaryLit = nil
}
}
// Clone returns a copy of itself.
func (ft *FieldType) Clone() *FieldType {
ret := *ft
return &ret
}
// Equal checks whether two FieldType objects are equal.
func (ft *FieldType) Equal(other *FieldType) bool {
// We do not need to compare whole `ft.flag == other.flag` when wrapping cast upon an Expression.
// but need compare unsigned_flag of ft.flag.
// When tp is float or double with decimal unspecified, do not check whether flen is equal,
// because flen for them is useless.
// The decimal field can be ignored if the type is int or string.
tpEqual := (ft.GetType() == other.GetType()) || (ft.GetType() == mysql.TypeVarchar && other.GetType() == mysql.TypeVarString) || (ft.GetType() == mysql.TypeVarString && other.GetType() == mysql.TypeVarchar)
flenEqual := ft.flen == other.flen || (ft.EvalType() == ETReal && ft.decimal == UnspecifiedLength) || ft.EvalType() == ETJson
ignoreDecimal := ft.EvalType() == ETInt || ft.EvalType() == ETString
partialEqual := tpEqual &&
(ignoreDecimal || ft.decimal == other.decimal) &&
ft.charset == other.charset &&
ft.collate == other.collate &&
flenEqual &&
mysql.HasUnsignedFlag(ft.flag) == mysql.HasUnsignedFlag(other.flag)
if !partialEqual {
return false
}
return slices.Equal(ft.elems, other.elems)
}
// PartialEqual checks whether two FieldType objects are equal. Please use this function with caution.
// If unsafe is true and the objects is string type, PartialEqual will ignore flen.
// See https://github.com/pingcap/tidb/issues/35490#issuecomment-1211658886 for more detail.
func (ft *FieldType) PartialEqual(other *FieldType, unsafe bool) bool {
// Special case for NotNUll flag. See https://github.com/pingcap/tidb/issues/61290.
if mysql.HasNotNullFlag(ft.flag) != mysql.HasNotNullFlag(other.flag) {
return false
}
if !unsafe || ft.EvalType() != ETString || other.EvalType() != ETString {
return ft.Equal(other)
}
partialEqual := ft.charset == other.charset && ft.collate == other.collate && mysql.HasUnsignedFlag(ft.flag) == mysql.HasUnsignedFlag(other.flag)
if !partialEqual || len(ft.elems) != len(other.elems) {
return false
}
for i := range ft.elems {
if ft.elems[i] != other.elems[i] {
return false
}
}
return true
}
// EvalType gets the type in evaluation.
func (ft *FieldType) EvalType() EvalType {
switch ft.GetType() {
case mysql.TypeTiny, mysql.TypeShort, mysql.TypeInt24, mysql.TypeLong, mysql.TypeLonglong,
mysql.TypeBit, mysql.TypeYear:
return ETInt
case mysql.TypeFloat, mysql.TypeDouble:
return ETReal
case mysql.TypeNewDecimal:
return ETDecimal
case mysql.TypeDate, mysql.TypeDatetime:
return ETDatetime
case mysql.TypeTimestamp:
return ETTimestamp
case mysql.TypeDuration:
return ETDuration
case mysql.TypeJSON:
return ETJson
case mysql.TypeTiDBVectorFloat32:
return ETVectorFloat32
case mysql.TypeEnum, mysql.TypeSet:
if ft.flag&mysql.EnumSetAsIntFlag > 0 {
return ETInt
}
}
return ETString
}
// Hybrid checks whether a type is a hybrid type, which can represent different types of value in specific context.
func (ft *FieldType) Hybrid() bool {
return ft.GetType() == mysql.TypeEnum || ft.GetType() == mysql.TypeBit || ft.GetType() == mysql.TypeSet
}
// Init initializes the FieldType data.
func (ft *FieldType) Init(tp byte) {
ft.tp = tp
ft.flen = UnspecifiedLength
ft.decimal = UnspecifiedLength
}
// CompactStr only considers tp/CharsetBin/flen/Deimal.
// This is used for showing column type in infoschema.
func (ft *FieldType) CompactStr() string {
ts := TypeToStr(ft.GetType(), ft.charset)
suffix := ""
defaultFlen, defaultDecimal := mysql.GetDefaultFieldLengthAndDecimal(ft.GetType())
isDecimalNotDefault := ft.decimal != defaultDecimal && ft.decimal != 0 && ft.decimal != UnspecifiedLength
// displayFlen and displayDecimal are flen and decimal values with `-1` substituted with default value.
displayFlen, displayDecimal := ft.flen, ft.decimal
if displayFlen == UnspecifiedLength {
displayFlen = defaultFlen
}
if displayDecimal == UnspecifiedLength {
displayDecimal = defaultDecimal
}
switch ft.GetType() {
case mysql.TypeEnum, mysql.TypeSet:
// Format is ENUM ('e1', 'e2') or SET ('e1', 'e2')
es := make([]string, 0, len(ft.elems))
for _, e := range ft.elems {
e = format.OutputFormat(e)
es = append(es, e)
}
suffix = fmt.Sprintf("('%s')", strings.Join(es, "','"))
case mysql.TypeTimestamp, mysql.TypeDatetime, mysql.TypeDuration:
if isDecimalNotDefault {
suffix = fmt.Sprintf("(%d)", displayDecimal)
}
case mysql.TypeDouble, mysql.TypeFloat:
// 1. flen Not Default, decimal Not Default -> Valid
// 2. flen Not Default, decimal Default (-1) -> Invalid
// 3. flen Default, decimal Not Default -> Valid
// 4. flen Default, decimal Default -> Valid (hide)
if isDecimalNotDefault {
suffix = fmt.Sprintf("(%d,%d)", displayFlen, displayDecimal)
}
case mysql.TypeNewDecimal:
suffix = fmt.Sprintf("(%d,%d)", displayFlen, displayDecimal)
case mysql.TypeBit, mysql.TypeVarchar, mysql.TypeString, mysql.TypeVarString:
suffix = fmt.Sprintf("(%d)", displayFlen)
case mysql.TypeTiny:
// With display length deprecation active tinyint(1) still has
// a display length to indicate this might have been a BOOL.
// Connectors expect this.
//
// See also:
// https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-19.html
if !TiDBStrictIntegerDisplayWidth || (mysql.HasZerofillFlag(ft.flag) || displayFlen == 1) {
suffix = fmt.Sprintf("(%d)", displayFlen)
}
case mysql.TypeShort, mysql.TypeInt24, mysql.TypeLong, mysql.TypeLonglong:
// Referring this issue #6688, the integer max display length is deprecated in MySQL 8.0.
// Since the length doesn't take any effect in TiDB storage or showing result, we remove it here.
if !TiDBStrictIntegerDisplayWidth || mysql.HasZerofillFlag(ft.flag) {
suffix = fmt.Sprintf("(%d)", displayFlen)
}
case mysql.TypeYear:
suffix = fmt.Sprintf("(%d)", ft.flen)
case mysql.TypeTiDBVectorFloat32:
if ft.flen != UnspecifiedLength {
suffix = fmt.Sprintf("(%d)", ft.flen)
}
case mysql.TypeNull:
suffix = "(0)"
}
return ts + suffix
}
// InfoSchemaStr joins the CompactStr with unsigned flag and
// returns a string.
func (ft *FieldType) InfoSchemaStr() string {
suffix := ""
if mysql.HasUnsignedFlag(ft.flag) &&
ft.GetType() != mysql.TypeBit &&
ft.GetType() != mysql.TypeYear {
suffix = " unsigned"
}
return ft.CompactStr() + suffix
}
// String joins the information of FieldType and returns a string.
// Note: when flen or decimal is unspecified, this function will use the default value instead of -1.
func (ft *FieldType) String() string {
strs := []string{ft.CompactStr()}
if mysql.HasUnsignedFlag(ft.flag) {
strs = append(strs, "UNSIGNED")
}
if mysql.HasZerofillFlag(ft.flag) {
strs = append(strs, "ZEROFILL")
}
if mysql.HasBinaryFlag(ft.flag) && ft.GetType() != mysql.TypeString {
strs = append(strs, "BINARY")
}
if IsTypeChar(ft.GetType()) || IsTypeBlob(ft.GetType()) {
if ft.charset != "" && ft.charset != charset.CharsetBin {
strs = append(strs, fmt.Sprintf("CHARACTER SET %s", ft.charset))
}
if ft.collate != "" && ft.collate != charset.CharsetBin {
strs = append(strs, fmt.Sprintf("COLLATE %s", ft.collate))
}
}
return strings.Join(strs, " ")
}
// Restore implements Node interface.
func (ft *FieldType) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord(TypeToStr(ft.GetType(), ft.charset))
precision := UnspecifiedLength
scale := UnspecifiedLength
switch ft.GetType() {
case mysql.TypeEnum, mysql.TypeSet:
ctx.WritePlain("(")
for i, e := range ft.elems {
if i != 0 {
ctx.WritePlain(",")
}
ctx.WriteString(e)
}
ctx.WritePlain(")")
case mysql.TypeTimestamp, mysql.TypeDatetime, mysql.TypeDuration:
precision = ft.decimal
case mysql.TypeUnspecified, mysql.TypeFloat, mysql.TypeDouble, mysql.TypeNewDecimal:
precision = ft.flen
scale = ft.decimal
default:
precision = ft.flen
}
if precision != UnspecifiedLength {
ctx.WritePlainf("(%d", precision)
if scale != UnspecifiedLength {
ctx.WritePlainf(",%d", scale)
}
ctx.WritePlain(")")
}
if mysql.HasUnsignedFlag(ft.flag) {
ctx.WriteKeyWord(" UNSIGNED")
}
if mysql.HasZerofillFlag(ft.flag) {
ctx.WriteKeyWord(" ZEROFILL")
}
if mysql.HasBinaryFlag(ft.flag) && ft.charset != charset.CharsetBin {
ctx.WriteKeyWord(" BINARY")
}
if IsTypeChar(ft.GetType()) || IsTypeBlob(ft.GetType()) {
if ft.charset != "" && ft.charset != charset.CharsetBin {
ctx.WriteKeyWord(" CHARACTER SET " + ft.charset)
}
if ft.collate != "" && ft.collate != charset.CharsetBin {
ctx.WriteKeyWord(" COLLATE ")
ctx.WritePlain(ft.collate)
}
}
return nil
}
// RestoreAsCastType is used for write AST back to string.
func (ft *FieldType) RestoreAsCastType(ctx *format.RestoreCtx, explicitCharset bool) {
switch ft.tp {
case mysql.TypeVarString, mysql.TypeString:
skipWriteBinary := false
if ft.charset == charset.CharsetBin && ft.collate == charset.CollationBin {
ctx.WriteKeyWord("BINARY")
skipWriteBinary = true
} else {
ctx.WriteKeyWord("CHAR")
}
if ft.flen != UnspecifiedLength {
ctx.WritePlainf("(%d)", ft.flen)
}
if !explicitCharset {
break
}
if !skipWriteBinary && ft.flag&mysql.BinaryFlag != 0 {
ctx.WriteKeyWord(" BINARY")
}
if ft.charset != charset.CharsetBin && ft.charset != mysql.DefaultCharset {
ctx.WriteKeyWord(" CHARSET ")
ctx.WriteKeyWord(ft.charset)
}
case mysql.TypeDate:
ctx.WriteKeyWord("DATE")
case mysql.TypeDatetime:
ctx.WriteKeyWord("DATETIME")
if ft.decimal > 0 {
ctx.WritePlainf("(%d)", ft.decimal)
}
case mysql.TypeNewDecimal:
ctx.WriteKeyWord("DECIMAL")
if ft.flen > 0 && ft.decimal > 0 {
ctx.WritePlainf("(%d, %d)", ft.flen, ft.decimal)
} else if ft.flen > 0 {
ctx.WritePlainf("(%d)", ft.flen)
}
case mysql.TypeDuration:
ctx.WriteKeyWord("TIME")
if ft.decimal > 0 {
ctx.WritePlainf("(%d)", ft.decimal)
}
case mysql.TypeLonglong:
if ft.flag&mysql.UnsignedFlag != 0 {
ctx.WriteKeyWord("UNSIGNED")
} else {
ctx.WriteKeyWord("SIGNED")
}
case mysql.TypeJSON:
ctx.WriteKeyWord("JSON")
case mysql.TypeDouble:
ctx.WriteKeyWord("DOUBLE")
case mysql.TypeFloat:
ctx.WriteKeyWord("FLOAT")
case mysql.TypeYear:
ctx.WriteKeyWord("YEAR")
case mysql.TypeTiDBVectorFloat32:
ctx.WriteKeyWord("VECTOR")
}
if ft.array {
ctx.WritePlain(" ")
ctx.WriteKeyWord("ARRAY")
}
}
// FormatAsCastType is used for write AST back to string.
func (ft *FieldType) FormatAsCastType(w io.Writer, explicitCharset bool) {
var sb strings.Builder
restoreCtx := format.NewRestoreCtx(format.DefaultRestoreFlags, &sb)
ft.RestoreAsCastType(restoreCtx, explicitCharset)
fmt.Fprint(w, sb.String())
}
// VarStorageLen indicates this column is a variable length column.
const VarStorageLen = -1
// StorageLength is the length of stored value for the type.
func (ft *FieldType) StorageLength() int {
switch ft.GetType() {
case mysql.TypeTiny, mysql.TypeShort, mysql.TypeInt24, mysql.TypeLong,
mysql.TypeLonglong, mysql.TypeDouble, mysql.TypeFloat, mysql.TypeYear, mysql.TypeDuration,
mysql.TypeDate, mysql.TypeDatetime, mysql.TypeTimestamp, mysql.TypeEnum, mysql.TypeSet,
mysql.TypeBit:
// This may not be the accurate length, because we may encode them as varint.
return 8
case mysql.TypeNewDecimal:
precision, frac := ft.flen-ft.decimal, ft.decimal
return precision/digitsPerWord*wordSize + dig2bytes[precision%digitsPerWord] + frac/digitsPerWord*wordSize + dig2bytes[frac%digitsPerWord]
default:
return VarStorageLen
}
}
// HasCharset indicates if a COLUMN has an associated charset. Returning false here prevents some information
// statements(like `SHOW CREATE TABLE`) from attaching a CHARACTER SET clause to the column.
func HasCharset(ft *FieldType) bool {
switch ft.GetType() {
case mysql.TypeVarchar, mysql.TypeString, mysql.TypeVarString, mysql.TypeBlob,
mysql.TypeTinyBlob, mysql.TypeMediumBlob, mysql.TypeLongBlob:
return !mysql.HasBinaryFlag(ft.flag)
case mysql.TypeEnum, mysql.TypeSet:
return true
}
return false
}
// for json
type jsonFieldType struct {
Tp byte
Flag uint
Flen int
Decimal int
Charset string
Collate string
Elems []string
ElemsIsBinaryLit []bool
Array bool
}
// UnmarshalJSON implements the json.Unmarshaler interface.
func (ft *FieldType) UnmarshalJSON(data []byte) error {
var r jsonFieldType
err := json.Unmarshal(data, &r)
if err == nil {
ft.tp = r.Tp
ft.flag = r.Flag
ft.flen = r.Flen
ft.decimal = r.Decimal
ft.charset = r.Charset
ft.collate = r.Collate
ft.elems = r.Elems
ft.elemsIsBinaryLit = r.ElemsIsBinaryLit
ft.array = r.Array
}
return err
}
// MarshalJSON marshals the FieldType to JSON.
func (ft *FieldType) MarshalJSON() ([]byte, error) {
var r jsonFieldType
r.Tp = ft.tp
r.Flag = ft.flag
r.Flen = ft.flen
r.Decimal = ft.decimal
r.Charset = ft.charset
r.Collate = ft.collate
r.Elems = ft.elems
r.ElemsIsBinaryLit = ft.elemsIsBinaryLit
r.Array = ft.array
return json.Marshal(r)
}
const emptyFieldTypeSize = int64(unsafe.Sizeof(FieldType{}))
// MemoryUsage return the memory usage of FieldType
func (ft *FieldType) MemoryUsage() (sum int64) {
if ft == nil {
return
}
sum = emptyFieldTypeSize + int64(len(ft.charset)+len(ft.collate)) + int64(cap(ft.elems))*int64(unsafe.Sizeof(*new(string))) +
int64(cap(ft.elemsIsBinaryLit))*int64(unsafe.Sizeof(*new(bool)))
for _, s := range ft.elems {
sum += int64(len(s))
}
return
}
// Copyright 2015 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// See the License for the specific language governing permissions and
// limitations under the License.
package parser
import (
"fmt"
"math"
"regexp"
"slices"
"strconv"
"unicode"
"github.com/pingcap/errors"
"github.com/pingcap/tidb/pkg/parser/ast"
"github.com/pingcap/tidb/pkg/parser/auth"
"github.com/pingcap/tidb/pkg/parser/charset"
"github.com/pingcap/tidb/pkg/parser/mysql"
"github.com/pingcap/tidb/pkg/parser/terror"
"github.com/pingcap/tidb/pkg/parser/types"
)
var (
// ErrSyntax returns for sql syntax error.
ErrSyntax = terror.ClassParser.NewStd(mysql.ErrSyntax)
// ErrParse returns for sql parse error.
ErrParse = terror.ClassParser.NewStd(mysql.ErrParse)
// ErrUnknownCharacterSet returns for no character set found error.
ErrUnknownCharacterSet = terror.ClassParser.NewStd(mysql.ErrUnknownCharacterSet)
// ErrInvalidYearColumnLength returns for illegal column length for year type.
ErrInvalidYearColumnLength = terror.ClassParser.NewStd(mysql.ErrInvalidYearColumnLength)
// ErrWrongArguments returns for illegal argument.
ErrWrongArguments = terror.ClassParser.NewStd(mysql.ErrWrongArguments)
// ErrWrongFieldTerminators returns for illegal field terminators.
ErrWrongFieldTerminators = terror.ClassParser.NewStd(mysql.ErrWrongFieldTerminators)
// ErrTooBigDisplayWidth returns for data display width exceed limit .
ErrTooBigDisplayWidth = terror.ClassParser.NewStd(mysql.ErrTooBigDisplaywidth)
// ErrTooBigPrecision returns for data precision exceed limit.
ErrTooBigPrecision = terror.ClassParser.NewStd(mysql.ErrTooBigPrecision)
// ErrUnknownAlterLock returns for no alter lock type found error.
ErrUnknownAlterLock = terror.ClassParser.NewStd(mysql.ErrUnknownAlterLock)
// ErrUnknownAlterAlgorithm returns for no alter algorithm found error.
ErrUnknownAlterAlgorithm = terror.ClassParser.NewStd(mysql.ErrUnknownAlterAlgorithm)
// ErrWrongValue returns for wrong value
ErrWrongValue = terror.ClassParser.NewStd(mysql.ErrWrongValue)
// ErrWarnDeprecatedSyntax return when the syntax was deprecated
ErrWarnDeprecatedSyntax = terror.ClassParser.NewStd(mysql.ErrWarnDeprecatedSyntax)
// ErrWarnDeprecatedSyntaxNoReplacement return when the syntax was deprecated and there is no replacement.
ErrWarnDeprecatedSyntaxNoReplacement = terror.ClassParser.NewStd(mysql.ErrWarnDeprecatedSyntaxNoReplacement)
// ErrWrongUsage returns for incorrect usages.
ErrWrongUsage = terror.ClassParser.NewStd(mysql.ErrWrongUsage)
// ErrWrongDBName returns for incorrect DB name.
ErrWrongDBName = terror.ClassParser.NewStd(mysql.ErrWrongDBName)
// SpecFieldPattern special result field pattern
SpecFieldPattern = regexp.MustCompile(`(\/\*!(M?[0-9]{5,6})?|\*\/)`)
specCodeStart = regexp.MustCompile(`^\/\*!(M?[0-9]{5,6})?[ \t]*`)
specCodeEnd = regexp.MustCompile(`[ \t]*\*\/$`)
)
// TrimComment trim comment for special comment code of MySQL.
func TrimComment(txt string) string {
txt = specCodeStart.ReplaceAllString(txt, "")
return specCodeEnd.ReplaceAllString(txt, "")
}
//revive:disable:exported
// ParserConfig is the parser config.
type ParserConfig struct {
EnableWindowFunction bool
EnableStrictDoubleTypeCheck bool
SkipPositionRecording bool
}
//revive:enable:exported
// Parser represents a parser instance. Some temporary objects are stored in it to reduce object allocation during Parse function.
type Parser struct {
charset string
collation string
result []ast.StmtNode
src string
lexer Scanner
hintParser *hintParser
explicitCharset bool
strictDoubleFieldType bool
// the following fields are used by yyParse to reduce allocation.
cache []yySymType
yylval yySymType
yyVAL *yySymType
}
func yySetOffset(yyVAL *yySymType, offset int) {
if yyVAL.expr != nil {
yyVAL.expr.SetOriginTextPosition(offset)
}
}
func yyhintSetOffset(_ *yyhintSymType, _ int) {
}
type stmtTexter interface {
stmtText() string
}
// New returns a Parser object with default SQL mode.
func New() *Parser {
if ast.NewValueExpr == nil ||
ast.NewParamMarkerExpr == nil ||
ast.NewHexLiteral == nil ||
ast.NewBitLiteral == nil {
panic("no parser driver (forgotten import?) https://github.com/pingcap/parser/issues/43")
}
p := &Parser{
cache: make([]yySymType, 200),
}
p.reset()
return p
}
// Reset resets the parser.
func (parser *Parser) Reset() {
clear(parser.cache)
parser.reset()
}
func (parser *Parser) reset() {
parser.explicitCharset = false
parser.strictDoubleFieldType = false
parser.EnableWindowFunc(true)
parser.SetStrictDoubleTypeCheck(true)
mode, _ := mysql.GetSQLMode(mysql.DefaultSQLMode)
parser.SetSQLMode(mode)
}
// SetStrictDoubleTypeCheck enables/disables strict double type check.
func (parser *Parser) SetStrictDoubleTypeCheck(val bool) {
parser.strictDoubleFieldType = val
}
// SetParserConfig sets the parser config.
func (parser *Parser) SetParserConfig(config ParserConfig) {
parser.EnableWindowFunc(config.EnableWindowFunction)
parser.SetStrictDoubleTypeCheck(config.EnableStrictDoubleTypeCheck)
parser.lexer.skipPositionRecording = config.SkipPositionRecording
}
// ParseSQL parses a query string to raw ast.StmtNode.
func (parser *Parser) ParseSQL(sql string, params ...ParseParam) (stmt []ast.StmtNode, warns []error, err error) {
resetParams(parser)
parser.lexer.reset(sql)
for _, p := range params {
if err := p.ApplyOn(parser); err != nil {
return nil, nil, err
}
}
parser.src = sql
parser.result = parser.result[:0]
var l yyLexer = &parser.lexer
yyParse(l, parser)
warns, errs := l.Errors()
if len(warns) > 0 {
warns = slices.Clone(warns)
} else {
warns = nil
}
if len(errs) != 0 {
return nil, warns, errors.Trace(errs[0])
}
for _, stmt := range parser.result {
ast.SetFlag(stmt)
}
return parser.result, warns, nil
}
// Parse parses a query string to raw ast.StmtNode.
// If charset or collation is "", default charset and collation will be used.
func (parser *Parser) Parse(sql, charset, collation string) (stmt []ast.StmtNode, warns []error, err error) {
return parser.ParseSQL(sql, CharsetConnection(charset), CollationConnection(collation))
}
func (parser *Parser) lastErrorAsWarn() {
parser.lexer.lastErrorAsWarn()
}
// ParseOneStmt parses a query and returns an ast.StmtNode.
// The query must have one statement, otherwise ErrSyntax is returned.
func (parser *Parser) ParseOneStmt(sql, charset, collation string) (ast.StmtNode, error) {
stmts, _, err := parser.ParseSQL(sql, CharsetConnection(charset), CollationConnection(collation))
if err != nil {
return nil, errors.Trace(err)
}
if len(stmts) != 1 {
return nil, ErrSyntax
}
ast.SetFlag(stmts[0])
return stmts[0], nil
}
// SetSQLMode sets the SQL mode for parser.
func (parser *Parser) SetSQLMode(mode mysql.SQLMode) {
parser.lexer.SetSQLMode(mode)
}
// EnableWindowFunc controls whether the parser to parse syntax related with window function.
func (parser *Parser) EnableWindowFunc(val bool) {
parser.lexer.EnableWindowFunc(val)
}
// ParseErrorWith returns "You have a syntax error near..." error message compatible with mysql.
func ParseErrorWith(errstr string, lineno int) error {
if len(errstr) > mysql.ErrTextLength {
errstr = errstr[:mysql.ErrTextLength]
}
return fmt.Errorf("near '%-.80s' at line %d", errstr, lineno)
}
// The select statement is not at the end of the whole statement, if the last
// field text was set from its offset to the end of the src string, update
// the last field text.
func (parser *Parser) setLastSelectFieldText(st *ast.SelectStmt, lastEnd int) {
if st.Kind != ast.SelectStmtKindSelect {
return
}
lastField := st.Fields.Fields[len(st.Fields.Fields)-1]
if lastField.Offset+len(lastField.OriginalText()) >= len(parser.src)-1 {
lastField.SetText(parser.lexer.client, parser.src[lastField.Offset:lastEnd])
}
}
func (*Parser) startOffset(v *yySymType) int {
return v.offset
}
func (parser *Parser) endOffset(v *yySymType) int {
offset := v.offset
for offset > 0 && unicode.IsSpace(rune(parser.src[offset-1])) {
offset--
}
return offset
}
func (parser *Parser) parseHint(input string) ([]*ast.TableOptimizerHint, []error) {
if parser.hintParser == nil {
parser.hintParser = newHintParser()
}
return parser.hintParser.parse(input, parser.lexer.GetSQLMode(), parser.lexer.lastHintPos)
}
func toInt(l yyLexer, lval *yySymType, str string) int {
n, err := strconv.ParseUint(str, 10, 64)
if err != nil {
e := err.(*strconv.NumError)
if e.Err == strconv.ErrRange {
// TODO: toDecimal maybe out of range still.
// This kind of error should be throw to higher level, because truncated data maybe legal.
// For example, this SQL returns error:
// create table test (id decimal(30, 0));
// insert into test values(123456789012345678901234567890123094839045793405723406801943850);
// While this SQL:
// select 1234567890123456789012345678901230948390457934057234068019438509023041874359081325875128590860234789847359871045943057;
// get value 99999999999999999999999999999999999999999999999999999999999999999
return toDecimal(l, lval, str)
}
l.AppendError(l.Errorf("integer literal: %v", err))
return invalid
}
switch {
case n <= math.MaxInt64:
lval.item = int64(n)
default:
lval.item = n
}
return intLit
}
func toDecimal(l yyLexer, lval *yySymType, str string) int {
dec, err := ast.NewDecimal(str)
if err != nil {
if terror.ErrorEqual(err, types.ErrDataOutOfRange) {
l.AppendWarn(types.ErrTruncatedWrongValue.FastGenByArgs("DECIMAL", dec))
dec, _ = ast.NewDecimal(mysql.DefaultDecimal)
} else {
l.AppendError(l.Errorf("decimal literal: %v", err))
}
}
lval.item = dec
return decLit
}
func toFloat(l yyLexer, lval *yySymType, str string) int {
n, err := strconv.ParseFloat(str, 64)
if err != nil {
e := err.(*strconv.NumError)
if e.Err == strconv.ErrRange {
l.AppendError(types.ErrIllegalValueForType.GenWithStackByArgs("double", str))
return invalid
}
l.AppendError(l.Errorf("float literal: %v", err))
return invalid
}
lval.item = n
return floatLit
}
// See https://dev.mysql.com/doc/refman/5.7/en/hexadecimal-literals.html
func toHex(l yyLexer, lval *yySymType, str string) int {
h, err := ast.NewHexLiteral(str)
if err != nil {
l.AppendError(l.Errorf("hex literal: %v", err))
return invalid
}
lval.item = h
return hexLit
}
// See https://dev.mysql.com/doc/refman/5.7/en/bit-type.html
func toBit(l yyLexer, lval *yySymType, str string) int {
b, err := ast.NewBitLiteral(str)
if err != nil {
l.AppendError(l.Errorf("bit literal: %v", err))
return invalid
}
lval.item = b
return bitLit
}
func getUint64FromNUM(num interface{}) uint64 {
switch v := num.(type) {
case int64:
return uint64(v)
case uint64:
return v
}
return 0
}
func getInt64FromNUM(num interface{}) (val int64, errMsg string) {
switch v := num.(type) {
case int64:
return v, ""
default:
return -1, fmt.Sprintf("%d is out of range [–9223372036854775808,9223372036854775807]", num)
}
}
func isRevokeAllGrant(roleOrPrivList []*ast.RoleOrPriv) bool {
if len(roleOrPrivList) != 2 {
return false
}
priv, err := roleOrPrivList[0].ToPriv()
if err != nil {
return false
}
if priv.Priv != mysql.AllPriv {
return false
}
priv, err = roleOrPrivList[1].ToPriv()
if err != nil {
return false
}
if priv.Priv != mysql.GrantPriv {
return false
}
return true
}
// convertToRole tries to convert elements of roleOrPrivList to RoleIdentity
func convertToRole(roleOrPrivList []*ast.RoleOrPriv) ([]*auth.RoleIdentity, error) {
var roles []*auth.RoleIdentity
for _, elem := range roleOrPrivList {
role, err := elem.ToRole()
if err != nil {
return nil, err
}
roles = append(roles, role)
}
return roles, nil
}
// convertToPriv tries to convert elements of roleOrPrivList to PrivElem
func convertToPriv(roleOrPrivList []*ast.RoleOrPriv) ([]*ast.PrivElem, error) {
var privileges []*ast.PrivElem
for _, elem := range roleOrPrivList {
priv, err := elem.ToPriv()
if err != nil {
return nil, err
}
privileges = append(privileges, priv)
}
return privileges, nil
}
var (
_ ParseParam = CharsetConnection("")
_ ParseParam = CollationConnection("")
_ ParseParam = CharsetClient("")
)
func resetParams(p *Parser) {
p.charset = mysql.DefaultCharset
p.collation = mysql.DefaultCollationName
}
// ParseParam represents the parameter of parsing.
type ParseParam interface {
ApplyOn(*Parser) error
}
// CharsetConnection is used for literals specified without a character set.
type CharsetConnection string
// ApplyOn implements ParseParam interface.
func (c CharsetConnection) ApplyOn(p *Parser) error {
if c == "" {
p.charset = mysql.DefaultCharset
} else {
p.charset = string(c)
}
p.lexer.connection = charset.FindEncoding(string(c))
return nil
}
// CollationConnection is used for literals specified without a collation.
type CollationConnection string
// ApplyOn implements ParseParam interface.
func (c CollationConnection) ApplyOn(p *Parser) error {
if c == "" {
p.collation = mysql.DefaultCollationName
} else {
p.collation = string(c)
}
return nil
}
// CharsetClient specifies the charset of a SQL.
// This is used to decode the SQL into a utf-8 string.
type CharsetClient string
// ApplyOn implements ParseParam interface.
func (c CharsetClient) ApplyOn(p *Parser) error {
p.lexer.client = charset.FindEncoding(string(c))
return nil
}
// Copyright 2024 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package base
import (
"math"
)
const (
// both offset and prime are used to compute the fnv-1a's
// hash value which is more unique efficient than fnv-1.
//
// offset64 is ported from fnv.go from go library.
offset64 = 14695981039346656037
// prime64 is ported from fnv.go from go library.
prime64 = 1099511628211
)
// Hasher is the interface for computing hash values of different types.
type Hasher interface {
HashBool(val bool)
HashInt(val int)
HashInt64(val int64)
HashUint64(val uint64)
HashFloat64(val float64)
HashRune(val rune)
HashString(val string)
HashByte(val byte)
HashBytes(val []byte)
Reset()
SetCache([]byte)
Cache() []byte
Sum64() uint64
}
// NilFlag and NotNilFlag are used to indicate whether a pointer/interface type field inside struct is nil or not.
// like a structure:
//
// type MyStruct struct {
// a *OtherStruct
// }
//
// Once a is nil, we should hash the NilFlag, otherwise, we should hash the NotNilFlag
// nil : [0]
// not nil : [1] [xxx]
// the NotNilFlag should not be missed, otherwise, once [xxx] is []byte{0}, it will be treated as nil.
const (
NilFlag byte = 0
NotNilFlag byte = 1
)
// Hash64a is the type for the hash value.
type Hash64a uint64
// hasher is a helper struct that's used for computing **fnv-1a** hash values and tell
// the equivalence on expression/operators. To use, first call the init method, then
// a series of hash methods. The final value is stored in the hash64a field.
type hasher struct {
// hash stores the hash value as it is incrementally computed.
hash64a Hash64a
// cache is the internal bytes slice that's will be reused for some special tmp encoding like datum.
cache []byte
}
// NewHashEqualer creates a new HashEqualer.
func NewHashEqualer() Hasher {
return &hasher{
hash64a: offset64,
}
}
// Reset resets the Hasher to its initial state, reusing the internal bytes slice.
func (h *hasher) Reset() {
h.hash64a = offset64
h.cache = h.cache[:0]
}
// Cache returns the internal bytes slice for re-usage.
func (h *hasher) Cache() []byte {
return h.cache
}
// SetCache sets the internal bytes slice for reu-sage.
func (h *hasher) SetCache(cache []byte) {
h.cache = cache
}
func (h *hasher) Sum64() uint64 {
return uint64(h.hash64a)
}
// ------------------------------ Hash functions ----------------------------------------
// Previously, expressions' hashcode are computed by encoding meta layer by layer from the
// bottom up. This is not efficient and oom risky because each expression has cached numerous
// hash bytes on their own.
//
// The new hash function is based on the fnv-1a hash algorithm, outputting the uint64 only.
// To avoid the OOM during the hash computation, we use a shared bytes slice to take in primitive
// types from targeted expressions/operators. The bytes slice is reused and reset after each
// usage of them.
//
// The standardized fnv-1a lib only takes in bytes slice as input, so we need to convert every
// primitive type to bytes slice inside Hash function implementation of every expression/operators
// by allocating some temporary slice. This is undesirable, and we just made the Hasher to take in
// primitive type directly.
// ---------------------------------------------------------------------------------------
// HashBool hashes a Boolean value.
func (h *hasher) HashBool(val bool) {
i := 0
if val {
i = 1
}
h.hash64a ^= Hash64a(i)
h.hash64a *= prime64
}
// HashInt hashes an integer value.
func (h *hasher) HashInt(val int) {
h.hash64a ^= Hash64a(val)
h.hash64a *= prime64
}
// HashInt64 hashes an int64 value.
func (h *hasher) HashInt64(val int64) {
h.hash64a ^= Hash64a(val)
h.hash64a *= prime64
}
// HashUint64 hashes a uint64 value.
func (h *hasher) HashUint64(val uint64) {
h.hash64a ^= Hash64a(val)
h.hash64a *= prime64
}
// HashFloat64 hashes a float64 value.
func (h *hasher) HashFloat64(val float64) {
h.hash64a ^= Hash64a(math.Float64bits(val))
h.hash64a *= prime64
}
// HashRune hashes a rune value.
func (h *hasher) HashRune(val rune) {
h.hash64a ^= Hash64a(val)
h.hash64a *= prime64
}
// HashString hashes a string value.
// eg: "我是谁" is with 3 rune inside, each rune of them takes up 3-4 bytes.
func (h *hasher) HashString(val string) {
h.HashInt(len(val))
for _, c := range val {
h.HashRune(c)
}
}
// HashByte hashes a byte value.
// a byte can be treated as a simple rune as well.
func (h *hasher) HashByte(val byte) {
h.HashRune(rune(val))
}
// HashBytes hashes a byte slice value.
func (h *hasher) HashBytes(val []byte) {
h.HashInt(len(val))
for _, c := range val {
h.HashByte(c)
}
}
// ------------------------------ Object Implementation -------------------------------------
// For primitive type, we can directly hash them and compare them. Based on the primitive
// interface call listed here, we can easily implement the hash and equal functions for other
// composed and complex user defined structure or types.
//
// Say we have a structure like this:
// type MyStruct struct {
// a int
// b string
// c OtherStruct
// d Pointer
// }
// so we can implement the hash and equal functions like this:
// func (val *MyStruct) Hash64(h Hasher) {
// h.HashInt(val.a)
// h.HashString(val.b)
// // for c here, it calls for the hash function of OtherStruct implementor.
// c.Hash64(h)
// // for pointer, how it could be hashed is up to the implementor.
// h.HashUint64(uint64(val.d))
// }
//
// func (val1 *MyStruct) Equal(val1 *MyStruct) bool {
// return val1.a == val2.a && val1.b == val2.b && val1.c.Equal(val2.c) && val1.d == val2.d
// }
// ------------------------------------------------------------------------------------------
// Copyright 2024 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package util
import (
"bufio"
"io"
"github.com/pingcap/tidb/pkg/util/intest"
)
// StrBufferWriter is interface facilitate quick writing string regardless of error handling and written len.
type StrBufferWriter interface {
WriteString(s string)
Flush()
}
// StrBuffer is a basic wrapper bufio.Writer while override its WriteString func.
type StrBuffer struct {
bio *bufio.Writer
}
// NewStrBuffer new a defined buffed string writer with passed io.writer.
func NewStrBuffer(w io.Writer) StrBufferWriter {
return &StrBuffer{
bio: bufio.NewWriter(w),
}
}
// WriteString implements IBufStrWriter
func (sw *StrBuffer) WriteString(s string) {
_, err := sw.bio.WriteString(s)
intest.Assert(err == nil, "buffer-io WriteString should be no error in test")
}
// Flush implements IBufStrWriter
func (sw *StrBuffer) Flush() {
err := sw.bio.Flush()
intest.Assert(err == nil, "buffer-io Flush should be no error in test")
}
// Copyright 2021 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//go:build !codes
package testsetup
import (
"fmt"
"os"
"github.com/pingcap/log"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
)
// SetupForCommonTest runs before all the tests.
func SetupForCommonTest() {
applyOSLogLevel()
}
func applyOSLogLevel() {
osLoglevel := os.Getenv("log_level")
if len(osLoglevel) > 0 {
cfg := log.Config{
Level: osLoglevel,
Format: "text",
File: log.FileLogConfig{},
}
gl, props, err := log.InitLogger(&cfg, zap.AddStacktrace(zapcore.FatalLevel))
if err != nil {
_, _ = fmt.Fprintf(os.Stderr, "applyOSLogLevel failed: %v", err)
os.Exit(-1)
}
log.ReplaceGlobals(gl, props)
}
}
// Copyright 2023 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package metrics
import (
"fmt"
metricscommon "github.com/pingcap/tidb/pkg/metrics/common"
"github.com/prometheus/client_golang/prometheus"
)
var (
// TimerEventCounter is the counter for timer events
TimerEventCounter *prometheus.CounterVec
)
// InitTimerMetrics initializes timers metrics.
func InitTimerMetrics() {
TimerEventCounter = metricscommon.NewCounterVec(
prometheus.CounterOpts{
Namespace: "tidb",
Subsystem: "server",
Name: "timer_event_count",
Help: "Counter of timer event.",
}, []string{"scope", "type"})
}
// TimerHookWorkerCounter creates a counter for a hook's event
func TimerHookWorkerCounter(hookClass string, event string) prometheus.Counter {
return TimerScopeCounter(fmt.Sprintf("hook.%s", hookClass), event)
}
// TimerScopeCounter creates a counter for a scope
func TimerScopeCounter(scope string, event string) prometheus.Counter {
return TimerEventCounter.WithLabelValues(scope, event)
}
// Copyright 2017 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package types
import (
"bytes"
"encoding/binary"
"encoding/hex"
"fmt"
"math"
"strconv"
"strings"
"github.com/pingcap/errors"
)
// BinaryLiteral is the internal type for storing bit / hex literal type.
type BinaryLiteral []byte
// BitLiteral is the bit literal type.
type BitLiteral BinaryLiteral
// HexLiteral is the hex literal type.
type HexLiteral BinaryLiteral
// ZeroBinaryLiteral is a BinaryLiteral literal with zero value.
var ZeroBinaryLiteral = BinaryLiteral{}
func trimLeadingZeroBytes(bytes []byte) []byte {
if len(bytes) == 0 {
return bytes
}
pos, posMax := 0, len(bytes)-1
for ; pos < posMax; pos++ {
if bytes[pos] != 0 {
break
}
}
return bytes[pos:]
}
// NewBinaryLiteralFromUint creates a new BinaryLiteral instance by the given uint value in BitEndian.
// byteSize will be used as the length of the new BinaryLiteral, with leading bytes filled to zero.
// If byteSize is -1, the leading zeros in new BinaryLiteral will be trimmed.
func NewBinaryLiteralFromUint(value uint64, byteSize int) BinaryLiteral {
if byteSize != -1 && (byteSize < 1 || byteSize > 8) {
panic("Invalid byteSize")
}
buf := make([]byte, 8)
binary.BigEndian.PutUint64(buf, value)
if byteSize == -1 {
buf = trimLeadingZeroBytes(buf)
} else {
buf = buf[8-byteSize:]
}
return buf
}
// String implements fmt.Stringer interface.
func (b BinaryLiteral) String() string {
if len(b) == 0 {
return ""
}
return "0x" + hex.EncodeToString(b)
}
// ToString returns the string representation for the literal.
func (b BinaryLiteral) ToString() string {
return string(b)
}
// ToBitLiteralString returns the bit literal representation for the literal.
func (b BinaryLiteral) ToBitLiteralString(trimLeadingZero bool) string {
if len(b) == 0 {
return "b''"
}
var buf bytes.Buffer
for _, data := range b {
fmt.Fprintf(&buf, "%08b", data)
}
ret := buf.Bytes()
if trimLeadingZero {
ret = bytes.TrimLeft(ret, "0")
if len(ret) == 0 {
ret = []byte{'0'}
}
}
return fmt.Sprintf("b'%s'", string(ret))
}
// ToInt returns the int value for the literal.
func (b BinaryLiteral) ToInt(ctx Context) (uint64, error) {
buf := trimLeadingZeroBytes(b)
length := len(buf)
if length == 0 {
return 0, nil
}
if length > 8 {
var err = ErrTruncatedWrongVal.FastGenByArgs("BINARY", b)
err = ctx.HandleTruncate(err)
return math.MaxUint64, err
}
// Note: the byte-order is BigEndian.
val := uint64(buf[0])
for i := 1; i < length; i++ {
val = (val << 8) | uint64(buf[i])
}
return val, nil
}
// Compare compares BinaryLiteral to another one
func (b BinaryLiteral) Compare(b2 BinaryLiteral) int {
bufB := trimLeadingZeroBytes(b)
bufB2 := trimLeadingZeroBytes(b2)
if len(bufB) > len(bufB2) {
return 1
}
if len(bufB) < len(bufB2) {
return -1
}
return bytes.Compare(bufB, bufB2)
}
// ParseBitStr parses bit string.
// The string format can be b'val', B'val' or 0bval, val must be 0 or 1.
// See https://dev.mysql.com/doc/refman/5.7/en/bit-value-literals.html
func ParseBitStr(s string) (BinaryLiteral, error) {
if len(s) == 0 {
return nil, errors.Errorf("invalid empty string for parsing bit type")
}
if s[0] == 'b' || s[0] == 'B' {
// format is b'val' or B'val'
s = strings.Trim(s[1:], "'")
} else if !strings.HasPrefix(s, "0b") {
// here means format is not b'val', B'val' or 0bval.
return nil, errors.Errorf("invalid bit type format %s", s)
} else {
s = s[2:]
}
if len(s) == 0 {
return ZeroBinaryLiteral, nil
}
alignedLength := (len(s) + 7) &^ 7
s = ("00000000" + s)[len(s)+8-alignedLength:] // Pad with zero (slice from `-alignedLength`)
byteLength := len(s) >> 3
buf := make([]byte, byteLength)
for i := range byteLength {
strPosition := i << 3
val, err := strconv.ParseUint(s[strPosition:strPosition+8], 2, 8)
if err != nil {
return nil, errors.Trace(err)
}
buf[i] = byte(val)
}
return buf, nil
}
// NewBitLiteral parses bit string as BitLiteral type.
func NewBitLiteral(s string) (BitLiteral, error) {
b, err := ParseBitStr(s)
if err != nil {
return BitLiteral{}, err
}
return BitLiteral(b), nil
}
// ToString implement ast.BinaryLiteral interface
func (b BitLiteral) ToString() string {
return BinaryLiteral(b).ToString()
}
// ParseHexStr parses hexadecimal string literal.
// See https://dev.mysql.com/doc/refman/5.7/en/hexadecimal-literals.html
func ParseHexStr(s string) (BinaryLiteral, error) {
if len(s) == 0 {
return nil, errors.Errorf("invalid empty string for parsing hexadecimal literal")
}
if s[0] == 'x' || s[0] == 'X' {
// format is x'val' or X'val'
s = strings.Trim(s[1:], "'")
if len(s)%2 != 0 {
return nil, errors.Errorf("invalid hexadecimal format, must even numbers, but %d", len(s))
}
} else if !strings.HasPrefix(s, "0x") {
// here means format is not x'val', X'val' or 0xval.
return nil, errors.Errorf("invalid hexadecimal format %s", s)
} else {
s = s[2:]
}
if len(s) == 0 {
return ZeroBinaryLiteral, nil
}
if len(s)%2 != 0 {
s = "0" + s
}
buf, err := hex.DecodeString(s)
if err != nil {
return nil, errors.Trace(err)
}
return buf, nil
}
// NewHexLiteral parses hexadecimal string as HexLiteral type.
func NewHexLiteral(s string) (HexLiteral, error) {
h, err := ParseHexStr(s)
if err != nil {
return HexLiteral{}, err
}
return HexLiteral(h), nil
}
// ToString implement ast.BinaryLiteral interface
func (b HexLiteral) ToString() string {
return BinaryLiteral(b).ToString()
}
// Copyright 2015 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package types
import (
"cmp"
"math"
"github.com/pingcap/tidb/pkg/util/collate"
)
// VecCompareUU returns []int64 comparing the []uint64 x to []uint64 y
func VecCompareUU(x, y []uint64, res []int64) {
n := len(x)
for i := range n {
if x[i] < y[i] {
res[i] = -1
} else if x[i] == y[i] {
res[i] = 0
} else {
res[i] = 1
}
}
}
// VecCompareII returns []int64 comparing the []int64 x to []int64 y
func VecCompareII(x, y, res []int64) {
n := len(x)
for i := range n {
if x[i] < y[i] {
res[i] = -1
} else if x[i] == y[i] {
res[i] = 0
} else {
res[i] = 1
}
}
}
// VecCompareUI returns []int64 comparing the []uint64 x to []int64y
func VecCompareUI(x []uint64, y, res []int64) {
n := len(x)
for i := range n {
if y[i] < 0 || x[i] > math.MaxInt64 {
res[i] = 1
} else if int64(x[i]) < y[i] {
res[i] = -1
} else if int64(x[i]) == y[i] {
res[i] = 0
} else {
res[i] = 1
}
}
}
// VecCompareIU returns []int64 comparing the []int64 x to []uint64y
func VecCompareIU(x []int64, y []uint64, res []int64) {
n := len(x)
for i := range n {
if x[i] < 0 || y[i] > math.MaxInt64 {
res[i] = -1
} else if x[i] < int64(y[i]) {
res[i] = -1
} else if x[i] == int64(y[i]) {
res[i] = 0
} else {
res[i] = 1
}
}
}
// CompareString returns an integer comparing the string x to y with the specified collation and length.
func CompareString(x, y, collation string) int {
return collate.GetCollator(collation).Compare(x, y)
}
// CompareInt return an integer comparing the integer x to y with signed or unsigned.
func CompareInt(arg0 int64, isUnsigned0 bool, arg1 int64, isUnsigned1 bool) int {
var res int
switch {
case isUnsigned0 && isUnsigned1:
res = cmp.Compare(uint64(arg0), uint64(arg1))
case isUnsigned0 && !isUnsigned1:
if arg1 < 0 || uint64(arg0) > math.MaxInt64 {
res = 1
} else {
res = cmp.Compare(arg0, arg1)
}
case !isUnsigned0 && isUnsigned1:
if arg0 < 0 || uint64(arg1) > math.MaxInt64 {
res = -1
} else {
res = cmp.Compare(arg0, arg1)
}
case !isUnsigned0 && !isUnsigned1:
res = cmp.Compare(arg0, arg1)
}
return res
}
// Copyright 2023 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package types
import (
"time"
contextutil "github.com/pingcap/tidb/pkg/util/context"
"github.com/pingcap/tidb/pkg/util/intest"
)
// StrictFlags is a flags with a fields unset and has the most strict behavior.
const StrictFlags Flags = 0
// Flags indicate how to handle the conversion of a value.
type Flags uint16
const (
// FlagIgnoreTruncateErr indicates to ignore the truncate error.
// If this flag is set, `FlagTruncateAsWarning` will be ignored.
FlagIgnoreTruncateErr Flags = 1 << iota
// FlagTruncateAsWarning indicates to append the truncate error to warnings instead of returning it to user.
FlagTruncateAsWarning
// FlagAllowNegativeToUnsigned indicates to allow the casting from negative to unsigned int.
// When this flag is not set by default, casting a negative value to unsigned
// results an overflow error, but if SQL mode is not strict, it's converted
// to 0 with a warning.
// Otherwise, a negative value will be cast to the corresponding unsigned value without any error.
// For example, when casting -1 to an unsigned bigint with `FlagAllowNegativeToUnsigned` set,
// we will get `18446744073709551615` which is the biggest unsigned value.
FlagAllowNegativeToUnsigned
// FlagIgnoreZeroDateErr indicates to ignore the zero-date error.
// See: https://dev.mysql.com/doc/refman/8.0/en/sql-mode.html#sqlmode_no_zero_date for details about the "zero-date" error.
// If this flag is set, `FlagZeroDateAsWarning` will be ignored.
//
// TODO: `FlagIgnoreZeroDateErr` and `FlagZeroDateAsWarning` don't represent the comments right now, because the
// errors related with `time` and `duration` are handled directly according to SQL mode in many places (expression,
// ddl ...). These error handling will be refined in the future. Currently, the `FlagZeroDateAsWarning` is not used,
// and the `FlagIgnoreZeroDateErr` is used to allow or disallow casting zero to date in `alter` statement. See #25728
// This flag is the reverse of `NoZeroDate` in #30507. It's set to `true` for most context, and is only set to
// `false` for `alter` (and `create`) statements.
FlagIgnoreZeroDateErr
// FlagIgnoreZeroInDateErr indicates to ignore the zero-in-date error.
// See: https://dev.mysql.com/doc/refman/8.0/en/sql-mode.html#sqlmode_no_zero_in_date for details about the "zero-in-date" error.
FlagIgnoreZeroInDateErr
// FlagIgnoreInvalidDateErr indicates to ignore the invalid-date error.
// See: https://dev.mysql.com/doc/refman/8.0/en/sql-mode.html#sqlmode_allow_invalid_dates for details about the "invalid-date" error.
FlagIgnoreInvalidDateErr
// FlagSkipASCIICheck indicates to skip the ASCII check when converting the value to an ASCII string.
FlagSkipASCIICheck
// FlagSkipUTF8Check indicates to skip the UTF8 check when converting the value to an UTF8MB3 string.
FlagSkipUTF8Check
// FlagSkipUTF8MB4Check indicates to skip the UTF8MB4 check when converting the value to an UTF8 string.
FlagSkipUTF8MB4Check
// FlagCastTimeToYearThroughConcat indicates to cast time to year through concatenation. For example, `00:19:59` will be converted to '1959'
FlagCastTimeToYearThroughConcat
)
// AllowNegativeToUnsigned indicates whether the flag `FlagAllowNegativeToUnsigned` is set
func (f Flags) AllowNegativeToUnsigned() bool {
return f&FlagAllowNegativeToUnsigned != 0
}
// WithAllowNegativeToUnsigned returns a new flags with `FlagAllowNegativeToUnsigned` set/unset according to the clip parameter
func (f Flags) WithAllowNegativeToUnsigned(clip bool) Flags {
if clip {
return f | FlagAllowNegativeToUnsigned
}
return f &^ FlagAllowNegativeToUnsigned
}
// SkipASCIICheck indicates whether the flag `FlagSkipASCIICheck` is set
func (f Flags) SkipASCIICheck() bool {
return f&FlagSkipASCIICheck != 0
}
// WithSkipSACIICheck returns a new flags with `FlagSkipASCIICheck` set/unset according to the skip parameter
func (f Flags) WithSkipSACIICheck(skip bool) Flags {
if skip {
return f | FlagSkipASCIICheck
}
return f &^ FlagSkipASCIICheck
}
// SkipUTF8Check indicates whether the flag `FlagSkipUTF8Check` is set
func (f Flags) SkipUTF8Check() bool {
return f&FlagSkipUTF8Check != 0
}
// WithSkipUTF8Check returns a new flags with `FlagSkipUTF8Check` set/unset according to the skip parameter
func (f Flags) WithSkipUTF8Check(skip bool) Flags {
if skip {
return f | FlagSkipUTF8Check
}
return f &^ FlagSkipUTF8Check
}
// SkipUTF8MB4Check indicates whether the flag `FlagSkipUTF8MB4Check` is set
func (f Flags) SkipUTF8MB4Check() bool {
return f&FlagSkipUTF8MB4Check != 0
}
// WithSkipUTF8MB4Check returns a new flags with `FlagSkipUTF8MB4Check` set/unset according to the skip parameter
func (f Flags) WithSkipUTF8MB4Check(skip bool) Flags {
if skip {
return f | FlagSkipUTF8MB4Check
}
return f &^ FlagSkipUTF8MB4Check
}
// IgnoreTruncateErr indicates whether the flag `FlagIgnoreTruncateErr` is set
func (f Flags) IgnoreTruncateErr() bool {
return f&FlagIgnoreTruncateErr != 0
}
// WithIgnoreTruncateErr returns a new flags with `FlagIgnoreTruncateErr` set/unset according to the skip parameter
func (f Flags) WithIgnoreTruncateErr(ignore bool) Flags {
if ignore {
return f | FlagIgnoreTruncateErr
}
return f &^ FlagIgnoreTruncateErr
}
// TruncateAsWarning indicates whether the flag `FlagTruncateAsWarning` is set
func (f Flags) TruncateAsWarning() bool {
return f&FlagTruncateAsWarning != 0
}
// WithTruncateAsWarning returns a new flags with `FlagTruncateAsWarning` set/unset according to the skip parameter
func (f Flags) WithTruncateAsWarning(warn bool) Flags {
if warn {
return f | FlagTruncateAsWarning
}
return f &^ FlagTruncateAsWarning
}
// IgnoreZeroInDate indicates whether the flag `FlagIgnoreZeroInData` is set
func (f Flags) IgnoreZeroInDate() bool {
return f&FlagIgnoreZeroInDateErr != 0
}
// WithIgnoreZeroInDate returns a new flags with `FlagIgnoreZeroInDateErr` set/unset according to the ignore parameter
func (f Flags) WithIgnoreZeroInDate(ignore bool) Flags {
if ignore {
return f | FlagIgnoreZeroInDateErr
}
return f &^ FlagIgnoreZeroInDateErr
}
// IgnoreInvalidDateErr indicates whether the flag `FlagIgnoreInvalidDateErr` is set
func (f Flags) IgnoreInvalidDateErr() bool {
return f&FlagIgnoreInvalidDateErr != 0
}
// WithIgnoreInvalidDateErr returns a new flags with `FlagIgnoreInvalidDateErr` set/unset according to the ignore parameter
func (f Flags) WithIgnoreInvalidDateErr(ignore bool) Flags {
if ignore {
return f | FlagIgnoreInvalidDateErr
}
return f &^ FlagIgnoreInvalidDateErr
}
// IgnoreZeroDateErr indicates whether the flag `FlagIgnoreZeroDateErr` is set
func (f Flags) IgnoreZeroDateErr() bool {
return f&FlagIgnoreZeroDateErr != 0
}
// WithIgnoreZeroDateErr returns a new flags with `FlagIgnoreZeroDateErr` set/unset according to the ignore parameter
func (f Flags) WithIgnoreZeroDateErr(ignore bool) Flags {
if ignore {
return f | FlagIgnoreZeroDateErr
}
return f &^ FlagIgnoreZeroDateErr
}
// CastTimeToYearThroughConcat whether `FlagCastTimeToYearThroughConcat` is set
func (f Flags) CastTimeToYearThroughConcat() bool {
return f&FlagCastTimeToYearThroughConcat != 0
}
// WithCastTimeToYearThroughConcat returns a new flags with `FlagCastTimeToYearThroughConcat` set/unset according to the flag parameter
func (f Flags) WithCastTimeToYearThroughConcat(flag bool) Flags {
if flag {
return f | FlagCastTimeToYearThroughConcat
}
return f &^ FlagCastTimeToYearThroughConcat
}
// Context provides the information when converting between different types.
type Context struct {
flags Flags
loc *time.Location
warnHandler contextutil.WarnAppender
}
// NewContext creates a new `Context`
func NewContext(flags Flags, loc *time.Location, handler contextutil.WarnAppender) Context {
intest.Assert(loc != nil && handler != nil)
return Context{
flags: flags,
loc: loc,
warnHandler: handler,
}
}
// Flags returns the flags of the context
func (c *Context) Flags() Flags {
return c.flags
}
// WithFlags returns a new context with the flags set to the given value
func (c *Context) WithFlags(f Flags) Context {
ctx := *c
ctx.flags = f
return ctx
}
// WithLocation returns a new context with the given location
func (c *Context) WithLocation(loc *time.Location) Context {
intest.AssertNotNil(loc)
ctx := *c
ctx.loc = loc
return ctx
}
// Location returns the location of the context
func (c *Context) Location() *time.Location {
intest.AssertNotNil(c.loc)
if c.loc == nil {
// c.loc should always not be nil, just make the code safe here.
return time.UTC
}
return c.loc
}
// AppendWarning appends the error to warning. If the inner `warnHandler` is nil, do nothing.
func (c *Context) AppendWarning(err error) {
intest.Assert(c.warnHandler != nil)
if w := c.warnHandler; w != nil {
// warnHandler should always not be nil, check fn != nil here to just make code safe.
w.AppendWarning(err)
}
}
// DefaultStmtFlags is the default flags for statement context with the flag `FlagAllowNegativeToUnsigned` set.
// TODO: make DefaultStmtFlags to be equal with StrictFlags, and setting flag `FlagAllowNegativeToUnsigned`
// is only for make the code to be equivalent with the old implement during refactoring.
const DefaultStmtFlags = StrictFlags | FlagAllowNegativeToUnsigned | FlagIgnoreZeroDateErr
// DefaultStmtNoWarningContext is the context with default statement flags without any other special configuration
var DefaultStmtNoWarningContext = NewContext(DefaultStmtFlags, time.UTC, contextutil.IgnoreWarn)
// StrictContext is the most strict context which returns every error it meets
//
// this context should never append warnings
// However, the implementation of `types` may still append some warnings. TODO: remove them in the future.
var StrictContext = NewContext(StrictFlags, time.UTC, contextutil.IgnoreWarn)
// Copyright 2015 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// Copyright 2014 The ql Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSES/QL-LICENSE file.
package types
import (
"math"
"math/big"
"strconv"
"strings"
"github.com/pingcap/errors"
"github.com/pingcap/tidb/pkg/parser/mysql"
"github.com/pingcap/tidb/pkg/util/hack"
)
func truncateStr(str string, flen int) string {
if flen != UnspecifiedLength && len(str) > flen {
str = str[:flen]
}
return str
}
// IntegerUnsignedUpperBound indicates the max uint64 values of different mysql types.
func IntegerUnsignedUpperBound(intType byte) uint64 {
switch intType {
case mysql.TypeTiny:
return math.MaxUint8
case mysql.TypeShort:
return math.MaxUint16
case mysql.TypeInt24:
return mysql.MaxUint24
case mysql.TypeLong:
return math.MaxUint32
case mysql.TypeLonglong:
return math.MaxUint64
case mysql.TypeBit:
return math.MaxUint64
case mysql.TypeEnum:
// enum can have at most 65535 distinct elements
// it would be better to use len(FieldType.GetElems()), but we only have a byte type here
return 65535
case mysql.TypeSet:
return math.MaxUint64
default:
panic("Input byte is not a mysql type")
}
}
// IntegerSignedUpperBound indicates the max int64 values of different mysql types.
func IntegerSignedUpperBound(intType byte) int64 {
switch intType {
case mysql.TypeTiny:
return math.MaxInt8
case mysql.TypeShort:
return math.MaxInt16
case mysql.TypeInt24:
return mysql.MaxInt24
case mysql.TypeLong:
return math.MaxInt32
case mysql.TypeLonglong:
return math.MaxInt64
case mysql.TypeEnum:
// enum can have at most 65535 distinct elements
// it would be better to use len(FieldType.GetElems()), but we only have a byte type here
return 65535
default:
panic("Input byte is not a mysql int type")
}
}
// IntegerSignedLowerBound indicates the min int64 values of different mysql types.
func IntegerSignedLowerBound(intType byte) int64 {
switch intType {
case mysql.TypeTiny:
return math.MinInt8
case mysql.TypeShort:
return math.MinInt16
case mysql.TypeInt24:
return mysql.MinInt24
case mysql.TypeLong:
return math.MinInt32
case mysql.TypeLonglong:
return math.MinInt64
case mysql.TypeEnum:
return 0
default:
panic("Input byte is not a mysql type")
}
}
// ConvertFloatToInt converts a float64 value to a int value.
// `tp` is used in err msg, if there is overflow, this func will report err according to `tp`
func ConvertFloatToInt(fval float64, lowerBound, upperBound int64, tp byte) (int64, error) {
val := RoundFloat(fval)
if val < float64(lowerBound) {
return lowerBound, overflow(val, tp)
}
if val >= float64(upperBound) {
if val == float64(upperBound) {
return upperBound, nil
}
return upperBound, overflow(val, tp)
}
return int64(val), nil
}
// ConvertIntToInt converts an int value to another int value of different precision.
func ConvertIntToInt(val int64, lowerBound int64, upperBound int64, tp byte) (int64, error) {
if val < lowerBound {
return lowerBound, overflow(val, tp)
}
if val > upperBound {
return upperBound, overflow(val, tp)
}
return val, nil
}
// ConvertUintToInt converts an uint value to an int value.
func ConvertUintToInt(val uint64, upperBound int64, tp byte) (int64, error) {
if val > uint64(upperBound) {
return upperBound, overflow(val, tp)
}
return int64(val), nil
}
// ConvertIntToUint converts an int value to an uint value.
func ConvertIntToUint(flags Flags, val int64, upperBound uint64, tp byte) (uint64, error) {
if val < 0 && !flags.AllowNegativeToUnsigned() {
return 0, overflow(val, tp)
}
if uint64(val) > upperBound {
return upperBound, overflow(val, tp)
}
return uint64(val), nil
}
// ConvertUintToUint converts an uint value to another uint value of different precision.
func ConvertUintToUint(val uint64, upperBound uint64, tp byte) (uint64, error) {
if val > upperBound {
return upperBound, overflow(val, tp)
}
return val, nil
}
// ConvertFloatToUint converts a float value to an uint value.
func ConvertFloatToUint(flags Flags, fval float64, upperBound uint64, tp byte) (uint64, error) {
val := RoundFloat(fval)
if val < 0 {
if !flags.AllowNegativeToUnsigned() {
return 0, overflow(val, tp)
}
return uint64(int64(val)), overflow(val, tp)
}
ret, acc := new(big.Float).SetFloat64(val).Uint64()
if acc == big.Below || ret > upperBound {
return upperBound, overflow(val, tp)
}
return ret, nil
}
// convertScientificNotation converts a decimal string with scientific notation to a normal decimal string.
// 1E6 => 1000000, .12345E+5 => 12345
func convertScientificNotation(str string) (string, error) {
// https://golang.org/ref/spec#Floating-point_literals
eIdx := -1
point := -1
for i := range len(str) {
if str[i] == '.' {
point = i
}
if str[i] == 'e' || str[i] == 'E' {
eIdx = i
if point == -1 {
point = i
}
break
}
}
if eIdx == -1 {
return str, nil
}
exp, err := strconv.ParseInt(str[eIdx+1:], 10, 64)
if err != nil {
return "", errors.WithStack(err)
}
f := str[:eIdx]
if exp == 0 {
return f, nil
} else if exp > 0 { // move point right
if point+int(exp) == len(f)-1 { // 123.456 >> 3 = 123456. = 123456
return f[:point] + f[point+1:], nil
} else if point+int(exp) < len(f)-1 { // 123.456 >> 2 = 12345.6
return f[:point] + f[point+1:point+1+int(exp)] + "." + f[point+1+int(exp):], nil
}
// 123.456 >> 5 = 12345600
return f[:point] + f[point+1:] + strings.Repeat("0", point+int(exp)-len(f)+1), nil
}
// move point left
exp = -exp
if int(exp) < point { // 123.456 << 2 = 1.23456
return f[:point-int(exp)] + "." + f[point-int(exp):point] + f[point+1:], nil
}
// 123.456 << 5 = 0.00123456
return "0." + strings.Repeat("0", int(exp)-point) + f[:point] + f[point+1:], nil
}
func convertDecimalStrToUint(str string, upperBound uint64, tp byte) (uint64, error) {
str, err := convertScientificNotation(str)
if err != nil {
return 0, err
}
var intStr, fracStr string
p := strings.Index(str, ".")
if p == -1 {
intStr = str
} else {
intStr = str[:p]
fracStr = str[p+1:]
}
intStr = strings.TrimLeft(intStr, "0")
if intStr == "" {
intStr = "0"
}
if intStr[0] == '-' {
return 0, overflow(str, tp)
}
var round uint64
if fracStr != "" && fracStr[0] >= '5' {
round++
}
upperStr := strconv.FormatUint(upperBound-round, 10)
if len(intStr) > len(upperStr) ||
(len(intStr) == len(upperStr) && intStr > upperStr) {
return upperBound, overflow(str, tp)
}
val, err := strconv.ParseUint(intStr, 10, 64)
if err != nil {
return val, overflow(str, tp)
}
return val + round, nil
}
// ConvertDecimalToUint converts a decimal to a uint by converting it to a string first to avoid float overflow (#10181).
func ConvertDecimalToUint(d *MyDecimal, upperBound uint64, tp byte) (uint64, error) {
return convertDecimalStrToUint(string(d.ToString()), upperBound, tp)
}
// StrToInt converts a string to an integer at the best-effort.
func StrToInt(ctx Context, str string, isFuncCast bool) (int64, error) {
str = strings.TrimSpace(str)
validPrefix, err := getValidIntPrefix(ctx, str, isFuncCast)
iVal, err1 := strconv.ParseInt(validPrefix, 10, 64)
if err1 != nil {
return iVal, ErrOverflow.GenWithStackByArgs("BIGINT", validPrefix)
}
return iVal, errors.Trace(err)
}
// StrToUint converts a string to an unsigned integer at the best-effort.
func StrToUint(ctx Context, str string, isFuncCast bool) (uint64, error) {
str = strings.TrimSpace(str)
validPrefix, err := getValidIntPrefix(ctx, str, isFuncCast)
uVal := uint64(0)
hasParseErr := false
if validPrefix[0] == '-' {
// only `-000*` is valid to be converted into unsigned integer
for _, v := range validPrefix[1:] {
if v != '0' {
hasParseErr = true
break
}
}
} else {
if validPrefix[0] == '+' {
validPrefix = validPrefix[1:]
}
v, e := strconv.ParseUint(validPrefix, 10, 64)
uVal, hasParseErr = v, e != nil
}
if hasParseErr {
return uVal, ErrOverflow.GenWithStackByArgs("BIGINT UNSIGNED", validPrefix)
}
return uVal, errors.Trace(err)
}
// StrToDateTime converts str to MySQL DateTime.
func StrToDateTime(ctx Context, str string, fsp int) (Time, error) {
return ParseTime(ctx, str, mysql.TypeDatetime, fsp)
}
// StrToDuration converts str to Duration. It returns Duration in normal case,
// and returns Time when str is in datetime format.
// when isDuration is true, the d is returned, when it is false, the t is returned.
// See https://dev.mysql.com/doc/refman/5.5/en/date-and-time-literals.html.
func StrToDuration(ctx Context, str string, fsp int) (d Duration, t Time, isDuration bool, err error) {
str = strings.TrimSpace(str)
length := len(str)
if length > 0 && str[0] == '-' {
length--
}
if n := strings.IndexByte(str, '.'); n >= 0 {
length = length - len(str[n:])
}
// Timestamp format is 'YYYYMMDDHHMMSS' or 'YYMMDDHHMMSS', which length is 12.
// See #3923, it explains what we do here.
if length >= 12 {
t, err = StrToDateTime(ctx, str, fsp)
if err == nil {
return d, t, false, nil
}
}
d, _, err = ParseDuration(ctx, str, fsp)
if ErrTruncatedWrongVal.Equal(err) {
err = ctx.HandleTruncate(err)
}
return d, t, true, errors.Trace(err)
}
// NumberToDuration converts number to Duration.
func NumberToDuration(number int64, fsp int) (Duration, error) {
if number > TimeMaxValue {
// Try to parse DATETIME.
if number >= 10000000000 { // '2001-00-00 00-00-00'
if t, err := ParseDatetimeFromNum(DefaultStmtNoWarningContext, number); err == nil {
dur, err1 := t.ConvertToDuration()
return dur, errors.Trace(err1)
}
}
dur := MaxMySQLDuration(fsp)
return dur, ErrOverflow.GenWithStackByArgs("Duration", strconv.Itoa(int(number)))
} else if number < -TimeMaxValue {
dur := MaxMySQLDuration(fsp)
dur.Duration = -dur.Duration
return dur, ErrOverflow.GenWithStackByArgs("Duration", strconv.Itoa(int(number)))
}
var neg bool
if neg = number < 0; neg {
number = -number
}
if number/10000 > TimeMaxHour || number%100 >= 60 || (number/100)%100 >= 60 {
return ZeroDuration, errors.Trace(ErrTruncatedWrongVal.GenWithStackByArgs(TimeStr, strconv.FormatInt(number, 10)))
}
dur := NewDuration(int(number/10000), int((number/100)%100), int(number%100), 0, fsp)
if neg {
dur.Duration = -dur.Duration
}
return dur, nil
}
// getValidIntPrefix gets prefix of the string which can be successfully parsed as int.
func getValidIntPrefix(ctx Context, str string, isFuncCast bool) (string, error) {
if !isFuncCast {
floatPrefix, err := getValidFloatPrefix(ctx, str, isFuncCast)
if err != nil {
return floatPrefix, errors.Trace(err)
}
return floatStrToIntStr(floatPrefix, str)
}
validLen := 0
for i := range len(str) {
c := str[i]
if (c == '+' || c == '-') && i == 0 {
continue
}
if c >= '0' && c <= '9' {
validLen = i + 1
continue
}
break
}
valid := str[:validLen]
if valid == "" {
valid = "0"
}
if validLen == 0 || validLen != len(str) {
return valid, errors.Trace(ctx.HandleTruncate(ErrTruncatedWrongVal.GenWithStackByArgs("INTEGER", str)))
}
return valid, nil
}
// roundIntStr is to round a **valid int string** base on the number following dot.
func roundIntStr(numNextDot byte, intStr string) string {
if numNextDot < '5' {
return intStr
}
retStr := []byte(intStr)
idx := len(intStr) - 1
for ; idx >= 1; idx-- {
if retStr[idx] != '9' {
retStr[idx]++
break
}
retStr[idx] = '0'
}
if idx == 0 {
if intStr[0] == '9' {
retStr[0] = '1'
retStr = append(retStr, '0')
} else if isDigit(intStr[0]) {
retStr[0]++
} else {
retStr[1] = '1'
retStr = append(retStr, '0')
}
}
return string(retStr)
}
var maxUintStr = strconv.FormatUint(math.MaxUint64, 10)
var minIntStr = strconv.FormatInt(math.MinInt64, 10)
// floatStrToIntStr converts a valid float string into valid integer string which can be parsed by
// strconv.ParseInt, we can't parse float first then convert it to string because precision will
// be lost. For example, the string value "18446744073709551615" which is the max number of unsigned
// int will cause some precision to lose. intStr[0] may be a positive and negative sign like '+' or '-'.
//
// This func will find serious overflow such as the len of intStr > 20 (without prefix `+/-`)
// however, it will not check whether the intStr overflow BIGINT.
func floatStrToIntStr(validFloat string, oriStr string) (intStr string, _ error) {
var dotIdx = -1
var eIdx = -1
for i := range len(validFloat) {
switch validFloat[i] {
case '.':
dotIdx = i
case 'e', 'E':
eIdx = i
}
}
if eIdx == -1 {
if dotIdx == -1 {
return validFloat, nil
}
var digits []byte
if validFloat[0] == '-' || validFloat[0] == '+' {
dotIdx--
digits = []byte(validFloat[1:])
} else {
digits = []byte(validFloat)
}
if dotIdx == 0 {
intStr = "0"
} else {
intStr = string(digits)[:dotIdx]
}
if len(digits) > dotIdx+1 {
intStr = roundIntStr(digits[dotIdx+1], intStr)
}
if (len(intStr) > 1 || intStr[0] != '0') && validFloat[0] == '-' {
intStr = "-" + intStr
}
return intStr, nil
}
// intCnt and digits contain the prefix `+/-` if validFloat[0] is `+/-`
var intCnt int
digits := make([]byte, 0, len(validFloat))
if dotIdx == -1 {
digits = append(digits, validFloat[:eIdx]...)
intCnt = len(digits)
} else {
digits = append(digits, validFloat[:dotIdx]...)
intCnt = len(digits)
digits = append(digits, validFloat[dotIdx+1:eIdx]...)
}
exp, err := strconv.Atoi(validFloat[eIdx+1:])
if err != nil {
if digits[0] == '-' {
intStr = minIntStr
} else {
intStr = maxUintStr
}
return intStr, ErrOverflow.GenWithStackByArgs("BIGINT", oriStr)
}
intCnt += exp
if exp >= 0 && (intCnt > 21 || intCnt < 0) {
// MaxInt64 has 19 decimal digits.
// MaxUint64 has 20 decimal digits.
// And the intCnt may contain the len of `+/-`,
// so I use 21 here as the early detection.
if digits[0] == '-' {
intStr = minIntStr
} else {
intStr = maxUintStr
}
return intStr, ErrOverflow.GenWithStackByArgs("BIGINT", oriStr)
}
if intCnt <= 0 {
intStr = "0"
if intCnt == 0 && len(digits) > 0 && isDigit(digits[0]) {
intStr = roundIntStr(digits[0], intStr)
}
return intStr, nil
}
if intCnt == 1 && (digits[0] == '-' || digits[0] == '+') {
intStr = "0"
if len(digits) > 1 {
intStr = roundIntStr(digits[1], intStr)
}
if intStr[0] == '1' {
intStr = string(digits[:1]) + intStr
}
return intStr, nil
}
if intCnt <= len(digits) {
intStr = string(digits[:intCnt])
if intCnt < len(digits) {
intStr = roundIntStr(digits[intCnt], intStr)
}
} else {
// convert scientific notation decimal number
extraZeroCount := intCnt - len(digits)
intStr = string(digits) + strings.Repeat("0", extraZeroCount)
}
return intStr, nil
}
// StrToFloat converts a string to a float64 at the best-effort.
func StrToFloat(ctx Context, str string, isFuncCast bool) (float64, error) {
str = strings.TrimSpace(str)
validStr, err := getValidFloatPrefix(ctx, str, isFuncCast)
f, err1 := strconv.ParseFloat(validStr, 64)
if err1 != nil {
if err2, ok := err1.(*strconv.NumError); ok {
// value will truncate to MAX/MIN if out of range.
if err2.Err == strconv.ErrRange {
err1 = ctx.HandleTruncate(ErrTruncatedWrongVal.GenWithStackByArgs("DOUBLE", str))
if math.IsInf(f, 1) {
f = math.MaxFloat64
} else if math.IsInf(f, -1) {
f = -math.MaxFloat64
}
}
}
return f, errors.Trace(err1)
}
return f, errors.Trace(err)
}
// ConvertJSONToInt64 casts JSON into int64.
func ConvertJSONToInt64(ctx Context, j BinaryJSON, unsigned bool) (int64, error) {
return ConvertJSONToInt(ctx, j, unsigned, mysql.TypeLonglong)
}
// ConvertJSONToInt casts JSON into int by type.
func ConvertJSONToInt(ctx Context, j BinaryJSON, unsigned bool, tp byte) (int64, error) {
switch j.TypeCode {
case JSONTypeCodeObject, JSONTypeCodeArray, JSONTypeCodeOpaque, JSONTypeCodeDate, JSONTypeCodeDatetime, JSONTypeCodeTimestamp, JSONTypeCodeDuration:
return 0, ctx.HandleTruncate(ErrTruncatedWrongVal.GenWithStackByArgs("INTEGER", j.String()))
case JSONTypeCodeLiteral:
switch j.Value[0] {
case JSONLiteralFalse:
return 0, nil
case JSONLiteralNil:
return 0, ctx.HandleTruncate(ErrTruncatedWrongVal.GenWithStackByArgs("INTEGER", j.String()))
default:
return 1, nil
}
case JSONTypeCodeInt64:
i := j.GetInt64()
if unsigned {
uBound := IntegerUnsignedUpperBound(tp)
u, err := ConvertIntToUint(ctx.Flags(), i, uBound, tp)
return int64(u), err
}
lBound := IntegerSignedLowerBound(tp)
uBound := IntegerSignedUpperBound(tp)
return ConvertIntToInt(i, lBound, uBound, tp)
case JSONTypeCodeUint64:
u := j.GetUint64()
if unsigned {
uBound := IntegerUnsignedUpperBound(tp)
u, err := ConvertUintToUint(u, uBound, tp)
return int64(u), err
}
uBound := IntegerSignedUpperBound(tp)
return ConvertUintToInt(u, uBound, tp)
case JSONTypeCodeFloat64:
f := j.GetFloat64()
if !unsigned {
lBound := IntegerSignedLowerBound(tp)
uBound := IntegerSignedUpperBound(tp)
u, e := ConvertFloatToInt(f, lBound, uBound, tp)
return u, e
}
bound := IntegerUnsignedUpperBound(tp)
u, err := ConvertFloatToUint(ctx.Flags(), f, bound, tp)
return int64(u), err
case JSONTypeCodeString:
str := string(hack.String(j.GetString()))
// The behavior of casting json string as an integer is consistent with casting a string as an integer.
// See the `builtinCastStringAsIntSig` in `expression` pkg. The only difference is that this function
// doesn't append any warning. This behavior is compatible with MySQL.
isNegative := len(str) > 1 && str[0] == '-'
if !isNegative {
r, err := StrToUint(ctx, str, false)
return int64(r), err
}
return StrToInt(ctx, str, false)
}
return 0, errors.New("Unknown type code in JSON")
}
// ConvertJSONToFloat casts JSON into float64.
func ConvertJSONToFloat(ctx Context, j BinaryJSON) (float64, error) {
switch j.TypeCode {
case JSONTypeCodeObject, JSONTypeCodeArray, JSONTypeCodeOpaque, JSONTypeCodeDate, JSONTypeCodeDatetime, JSONTypeCodeTimestamp, JSONTypeCodeDuration:
return 0, ctx.HandleTruncate(ErrTruncatedWrongVal.GenWithStackByArgs("FLOAT", j.String()))
case JSONTypeCodeLiteral:
switch j.Value[0] {
case JSONLiteralFalse:
return 0, nil
case JSONLiteralNil:
return 0, ctx.HandleTruncate(ErrTruncatedWrongVal.GenWithStackByArgs("FLOAT", j.String()))
default:
return 1, nil
}
case JSONTypeCodeInt64:
return float64(j.GetInt64()), nil
case JSONTypeCodeUint64:
return float64(j.GetUint64()), nil
case JSONTypeCodeFloat64:
return j.GetFloat64(), nil
case JSONTypeCodeString:
str := string(hack.String(j.GetString()))
return StrToFloat(ctx, str, false)
}
return 0, errors.New("Unknown type code in JSON")
}
// ConvertJSONToDecimal casts JSON into decimal.
func ConvertJSONToDecimal(ctx Context, j BinaryJSON) (*MyDecimal, error) {
var err error = nil
res := new(MyDecimal)
switch j.TypeCode {
case JSONTypeCodeObject, JSONTypeCodeArray, JSONTypeCodeOpaque, JSONTypeCodeDate, JSONTypeCodeDatetime, JSONTypeCodeTimestamp, JSONTypeCodeDuration:
err = ErrTruncatedWrongVal.GenWithStackByArgs("DECIMAL", j.String())
case JSONTypeCodeLiteral:
switch j.Value[0] {
case JSONLiteralFalse:
res = res.FromInt(0)
case JSONLiteralNil:
err = ErrTruncatedWrongVal.GenWithStackByArgs("DECIMAL", j.String())
default:
res = res.FromInt(1)
}
case JSONTypeCodeInt64:
res = res.FromInt(j.GetInt64())
case JSONTypeCodeUint64:
res = res.FromUint(j.GetUint64())
case JSONTypeCodeFloat64:
err = res.FromFloat64(j.GetFloat64())
case JSONTypeCodeString:
err = res.FromString(j.GetString())
}
err = ctx.HandleTruncate(err)
if err != nil {
return res, errors.Trace(err)
}
return res, errors.Trace(err)
}
// getValidFloatPrefix gets prefix of string which can be successfully parsed as float.
func getValidFloatPrefix(ctx Context, s string, isFuncCast bool) (valid string, err error) {
if isFuncCast && s == "" {
return "0", nil
}
var (
sawDot bool
sawDigit bool
validLen int
eIdx = -1
)
for i := range len(s) {
c := s[i]
if c == '+' || c == '-' {
if i != 0 && i != eIdx+1 { // "1e+1" is valid.
break
}
} else if c == '.' {
if sawDot || eIdx > 0 { // "1.1." or "1e1.1"
break
}
sawDot = true
if sawDigit { // "123." is valid.
validLen = i + 1
}
} else if c == 'e' || c == 'E' {
if !sawDigit { // "+.e"
break
}
if eIdx != -1 { // "1e5e"
break
}
eIdx = i
} else if c == '\u0000' {
s = s[:validLen]
break
} else if c < '0' || c > '9' {
break
} else {
sawDigit = true
validLen = i + 1
}
}
valid = s[:validLen]
if valid == "" {
valid = "0"
}
if validLen == 0 || validLen != len(s) {
err = errors.Trace(ctx.HandleTruncate(ErrTruncatedWrongVal.GenWithStackByArgs("DOUBLE", s)))
}
return valid, err
}
// ToString converts an interface to a string.
func ToString(value any) (string, error) {
switch v := value.(type) {
case bool:
if v {
return "1", nil
}
return "0", nil
case int:
return strconv.FormatInt(int64(v), 10), nil
case int64:
return strconv.FormatInt(v, 10), nil
case uint64:
return strconv.FormatUint(v, 10), nil
case float32:
return strconv.FormatFloat(float64(v), 'f', -1, 32), nil
case float64:
return strconv.FormatFloat(v, 'f', -1, 64), nil
case string:
return v, nil
case []byte:
return string(v), nil
case Time:
return v.String(), nil
case Duration:
return v.String(), nil
case *MyDecimal:
return v.String(), nil
case BinaryLiteral:
return v.ToString(), nil
case Enum:
return v.String(), nil
case Set:
return v.String(), nil
case BinaryJSON:
return v.String(), nil
default:
return "", errors.Errorf("cannot convert %v(type %T) to string", value, value)
}
}
// Copyright 2016 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package types
import (
"fmt"
gotime "time"
"github.com/pingcap/errors"
)
// CoreTime is the internal struct type for Time.
type CoreTime uint64
// ZeroCoreTime is the zero value for TimeInternal type.
var ZeroCoreTime = CoreTime(0)
// String implements fmt.Stringer.
func (t CoreTime) String() string {
return fmt.Sprintf("{%d %d %d %d %d %d %d}", t.getYear(), t.getMonth(), t.getDay(), t.getHour(), t.getMinute(), t.getSecond(), t.getMicrosecond())
}
func (t CoreTime) getYear() uint16 {
return uint16((uint64(t) & yearBitFieldMask) >> yearBitFieldOffset)
}
func (t *CoreTime) setYear(year uint16) {
*(*uint64)(t) &= ^yearBitFieldMask
*(*uint64)(t) |= (uint64(year) << yearBitFieldOffset) & yearBitFieldMask
}
// Year returns the year value.
func (t CoreTime) Year() int {
return int(t.getYear())
}
func (t CoreTime) getMonth() uint8 {
return uint8((uint64(t) & monthBitFieldMask) >> monthBitFieldOffset)
}
func (t *CoreTime) setMonth(month uint8) {
*(*uint64)(t) &= ^monthBitFieldMask
*(*uint64)(t) |= (uint64(month) << monthBitFieldOffset) & monthBitFieldMask
}
// Month returns the month value.
func (t CoreTime) Month() int {
return int(t.getMonth())
}
func (t CoreTime) getDay() uint8 {
return uint8((uint64(t) & dayBitFieldMask) >> dayBitFieldOffset)
}
func (t *CoreTime) setDay(day uint8) {
*(*uint64)(t) &= ^dayBitFieldMask
*(*uint64)(t) |= (uint64(day) << dayBitFieldOffset) & dayBitFieldMask
}
// Day returns the day value.
func (t CoreTime) Day() int {
return int(t.getDay())
}
func (t CoreTime) getHour() uint8 {
return uint8((uint64(t) & hourBitFieldMask) >> hourBitFieldOffset)
}
func (t *CoreTime) setHour(hour uint8) {
*(*uint64)(t) &= ^hourBitFieldMask
*(*uint64)(t) |= (uint64(hour) << hourBitFieldOffset) & hourBitFieldMask
}
// Hour returns the hour value.
func (t CoreTime) Hour() int {
return int(t.getHour())
}
func (t CoreTime) getMinute() uint8 {
return uint8((uint64(t) & minuteBitFieldMask) >> minuteBitFieldOffset)
}
func (t *CoreTime) setMinute(minute uint8) {
*(*uint64)(t) &= ^minuteBitFieldMask
*(*uint64)(t) |= (uint64(minute) << minuteBitFieldOffset) & minuteBitFieldMask
}
// Minute returns the minute value.
func (t CoreTime) Minute() int {
return int(t.getMinute())
}
func (t CoreTime) getSecond() uint8 {
return uint8((uint64(t) & secondBitFieldMask) >> secondBitFieldOffset)
}
func (t *CoreTime) setSecond(second uint8) {
*(*uint64)(t) &= ^secondBitFieldMask
*(*uint64)(t) |= (uint64(second) << secondBitFieldOffset) & secondBitFieldMask
}
// Second returns the second value.
func (t CoreTime) Second() int {
return int(t.getSecond())
}
func (t CoreTime) getMicrosecond() uint32 {
return uint32((uint64(t) & microsecondBitFieldMask) >> microsecondBitFieldOffset)
}
func (t *CoreTime) setMicrosecond(microsecond uint32) {
*(*uint64)(t) &= ^microsecondBitFieldMask
*(*uint64)(t) |= (uint64(microsecond) << microsecondBitFieldOffset) & microsecondBitFieldMask
}
// Microsecond returns the microsecond value.
func (t CoreTime) Microsecond() int {
return int(t.getMicrosecond())
}
// Weekday returns weekday value.
func (t CoreTime) Weekday() gotime.Weekday {
// No need to consider timezone, use the date directly.
t1, err := t.GoTime(gotime.UTC)
// allow invalid dates
if err != nil {
return t1.Weekday()
}
return t1.Weekday()
}
// YearWeek returns year and week.
func (t CoreTime) YearWeek(mode int) (year int, week int) {
behavior := weekMode(mode) | weekBehaviourYear
return calcWeek(t, behavior)
}
// Week returns week value.
func (t CoreTime) Week(mode int) int {
if t.getMonth() == 0 || t.getDay() == 0 {
return 0
}
_, week := calcWeek(t, weekMode(mode))
return week
}
// YearDay returns year and day.
func (t CoreTime) YearDay() int {
if t.getMonth() == 0 || t.getDay() == 0 {
return 0
}
year, month, day := t.Year(), t.Month(), t.Day()
return calcDaynr(year, month, day) -
calcDaynr(year, 1, 1) + 1
}
// GoTime converts Time to GoTime.
func (t CoreTime) GoTime(loc *gotime.Location) (gotime.Time, error) {
// gotime.Time can't represent month 0 or day 0, date contains 0 would be converted to a nearest date,
// For example, 2006-12-00 00:00:00 would become 2015-11-30 23:59:59.
year, month, day, hour, minute, second, microsecond := t.Year(), t.Month(), t.Day(), t.Hour(), t.Minute(), t.Second(), t.Microsecond()
tm := gotime.Date(year, gotime.Month(month), day, hour, minute, second, microsecond*1000, loc)
year2, month2, day2 := tm.Date()
hour2, minute2, second2 := tm.Clock()
microsec2 := tm.Nanosecond() / 1000
// This function will check the result, and return an error if it's not the same with the origin input .
if year2 != year || int(month2) != month || day2 != day ||
hour2 != hour || minute2 != minute || second2 != second ||
microsec2 != microsecond {
return tm, errors.Trace(ErrWrongValue.GenWithStackByArgs(TimeStr, t))
}
return tm, nil
}
// AdjustedGoTime converts Time to GoTime and adjust for invalid DST times
// like during the DST change with increased offset,
// normally moving to Daylight Saving Time.
// see https://github.com/pingcap/tidb/issues/28739
func (t CoreTime) AdjustedGoTime(loc *gotime.Location) (gotime.Time, error) {
tm, err := t.GoTime(loc)
if err == nil {
return tm, nil
}
// The converted go time did not map back to the same time, probably it was between a
// daylight saving transition, adjust the time to the closest Zone bound.
start, end := tm.ZoneBounds()
// time zone transitions are normally 1 hour, allow up to 4 hours before returning error
if start.Sub(tm).Abs().Hours() > 4.0 && end.Sub(tm).Abs().Hours() > 4.0 {
return tm, errors.Trace(ErrWrongValue.GenWithStackByArgs(TimeStr, tm))
}
// use the closest transition time
if tm.Sub(start).Abs() <= tm.Sub(end).Abs() {
return start, nil
}
return end, nil
}
// IsLeapYear returns if it's leap year.
func (t CoreTime) IsLeapYear() bool {
return isLeapYear(t.getYear())
}
func isLeapYear(year uint16) bool {
return (year%4 == 0 && year%100 != 0) || year%400 == 0
}
var daysByMonth = [12]int{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
// GetLastDay returns the last day of the month
func GetLastDay(year, month int) int {
var day = 0
if month > 0 && month <= 12 {
day = daysByMonth[month-1]
}
if month == 2 && isLeapYear(uint16(year)) {
day = 29
}
return day
}
func getFixDays(year, month, day int, ot gotime.Time) int {
if (year != 0 || month != 0) && day == 0 {
od := ot.Day()
t := ot.AddDate(year, month, day)
td := t.Day()
if od != td {
tm := int(t.Month()) - 1
tMax := GetLastDay(t.Year(), tm)
dd := tMax - od
return dd
}
}
return 0
}
// compareTime compare two Time.
// return:
//
// 0: if a == b
// 1: if a > b
//
// -1: if a < b
func compareTime(a, b CoreTime) int {
ta := datetimeToUint64(a)
tb := datetimeToUint64(b)
switch {
case ta < tb:
return -1
case ta > tb:
return 1
}
switch {
case a.Microsecond() < b.Microsecond():
return -1
case a.Microsecond() > b.Microsecond():
return 1
}
return 0
}
// AddDate fix gap between mysql and golang api
// When we execute select date_add('2018-01-31',interval 1 month) in mysql we got 2018-02-28
// but in tidb we got 2018-03-03.
// Dig it and we found it's caused by golang api time.Date(year int, month Month, day, hour, min, sec, nsec int, loc *Location) Time ,
// it says October 32 converts to November 1 ,it conflicts with mysql.
// See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_date-add
func AddDate(year, month, day int64, ot gotime.Time) (nt gotime.Time, _ error) {
// We must limit the range of year, month and day to avoid overflow.
// The datetime range is from '1000-01-01 00:00:00.000000' to '9999-12-31 23:59:59.499999',
// so it is safe to limit the added value from -10000*365 to 10000*365.
const maxAdd = 10000 * 365
const minAdd = -maxAdd
if year > maxAdd || year < minAdd ||
month > maxAdd || month < minAdd ||
day > maxAdd || day < minAdd {
return nt, ErrDatetimeFunctionOverflow.GenWithStackByArgs("datetime")
}
df := getFixDays(int(year), int(month), int(day), ot)
if df != 0 {
nt = ot.AddDate(int(year), int(month), df)
} else {
nt = ot.AddDate(int(year), int(month), int(day))
}
if nt.Year() < 0 || nt.Year() > 9999 {
return nt, ErrDatetimeFunctionOverflow.GenWithStackByArgs("datetime")
}
return nt, nil
}
func calcTimeFromSec(to *CoreTime, seconds, microseconds int) {
to.setHour(uint8(seconds / 3600))
seconds = seconds % 3600
to.setMinute(uint8(seconds / 60))
to.setSecond(uint8(seconds % 60))
to.setMicrosecond(uint32(microseconds))
}
const secondsIn24Hour = 86400
func calcTimeDiffInternal(t1 CoreTime, year, month, day, hour, minute, second, microsecond, sign int) (seconds, microseconds int, neg bool) {
days := calcDaynr(t1.Year(), t1.Month(), t1.Day())
days2 := calcDaynr(year, month, day)
days -= sign * days2
tmp := (int64(days)*secondsIn24Hour+
int64(t1.Hour())*3600+int64(t1.Minute())*60+
int64(t1.Second())-
int64(sign)*(int64(hour)*3600+int64(minute)*60+
int64(second)))*
1e6 +
int64(t1.Microsecond()) - int64(sign)*int64(microsecond)
if tmp < 0 {
tmp = -tmp
neg = true
}
seconds = int(tmp / 1e6)
microseconds = int(tmp % 1e6)
return
}
// calcTimeDiff calculates difference between two datetime values as seconds + microseconds.
// sign can be +1 or -1, and t2 is preprocessed with sign first.
func calcTimeTimeDiff(t1, t2 CoreTime, sign int) (seconds, microseconds int, neg bool) {
return calcTimeDiffInternal(t1, t2.Year(), t2.Month(), t2.Day(), t2.Hour(), t2.Minute(), t2.Second(), t2.Microsecond(), sign)
}
// calcTimeDiff calculates difference between a datetime value and a duration as seconds + microseconds.
func calcTimeDurationDiff(t CoreTime, d Duration) (seconds, microseconds int, neg bool) {
sign, hh, mm, ss, micro := splitDuration(d.Duration)
return calcTimeDiffInternal(t, 0, 0, 0, hh, mm, ss, micro, -sign)
}
// datetimeToUint64 converts time value to integer in YYYYMMDDHHMMSS format.
func datetimeToUint64(t CoreTime) uint64 {
return uint64(t.Year())*1e10 +
uint64(t.Month())*1e8 +
uint64(t.Day())*1e6 +
uint64(t.Hour())*1e4 +
uint64(t.Minute())*1e2 +
uint64(t.Second())
}
// calcDaynr calculates days since 0000-00-00.
func calcDaynr(year, month, day int) int {
if year == 0 && month == 0 {
return 0
}
delsum := 365*year + 31*(month-1) + day
if month <= 2 {
year--
} else {
delsum -= (month*4 + 23) / 10
}
temp := ((year/100 + 1) * 3) / 4
return delsum + year/4 - temp
}
// DateDiff calculates number of days between two days.
func DateDiff(startTime, endTime CoreTime) int {
return calcDaynr(startTime.Year(), startTime.Month(), startTime.Day()) - calcDaynr(endTime.Year(), endTime.Month(), endTime.Day())
}
// calcDaysInYear calculates days in one year, it works with 0 <= year <= 99.
func calcDaysInYear(year int) int {
if (year&3) == 0 && (year%100 != 0 || (year%400 == 0 && (year != 0))) {
return 366
}
return 365
}
// calcWeekday calculates weekday from daynr, returns 0 for Monday, 1 for Tuesday ...
func calcWeekday(daynr int, sundayFirstDayOfWeek bool) int {
daynr += 5
if sundayFirstDayOfWeek {
daynr++
}
return daynr % 7
}
type weekBehaviour uint
const (
// weekBehaviourMondayFirst set Monday as first day of week; otherwise Sunday is first day of week
weekBehaviourMondayFirst weekBehaviour = 1 << iota
// If set, Week is in range 1-53, otherwise Week is in range 0-53.
// Note that this flag is only relevant if WEEK_JANUARY is not set.
weekBehaviourYear
// If not set, Weeks are numbered according to ISO 8601:1988.
// If set, the week that contains the first 'first-day-of-week' is week 1.
weekBehaviourFirstWeekday
)
func (v weekBehaviour) test(flag weekBehaviour) bool {
return (v & flag) != 0
}
func weekMode(mode int) weekBehaviour {
weekFormat := weekBehaviour(mode & 7)
if (weekFormat & weekBehaviourMondayFirst) == 0 {
weekFormat ^= weekBehaviourFirstWeekday
}
return weekFormat
}
// calcWeek calculates week and year for the time.
func calcWeek(t CoreTime, wb weekBehaviour) (year int, week int) {
var days int
ty, tm, td := int(t.getYear()), int(t.getMonth()), int(t.getDay())
daynr := calcDaynr(ty, tm, td)
firstDaynr := calcDaynr(ty, 1, 1)
mondayFirst := wb.test(weekBehaviourMondayFirst)
weekYear := wb.test(weekBehaviourYear)
firstWeekday := wb.test(weekBehaviourFirstWeekday)
weekday := calcWeekday(firstDaynr, !mondayFirst)
year = ty
if tm == 1 && td <= 7-weekday {
if !weekYear &&
((firstWeekday && weekday != 0) || (!firstWeekday && weekday >= 4)) {
week = 0
return
}
weekYear = true
year--
days = calcDaysInYear(year)
firstDaynr -= days
weekday = (weekday + 53*7 - days) % 7
}
if (firstWeekday && weekday != 0) ||
(!firstWeekday && weekday >= 4) {
days = daynr - (firstDaynr + 7 - weekday)
} else {
days = daynr - (firstDaynr - weekday)
}
if weekYear && days >= 52*7 {
weekday = (weekday + calcDaysInYear(year)) % 7
if (!firstWeekday && weekday < 4) ||
(firstWeekday && weekday == 0) {
year++
week = 1
return
}
}
week = days/7 + 1
return
}
// mixDateAndDuration mixes a date value and a duration value.
func mixDateAndDuration(date *CoreTime, dur Duration) {
if dur.Duration >= 0 && dur.Hour() < 24 {
_, hh, mm, ss, frac := splitDuration(dur.Duration)
date.setHour(uint8(hh))
date.setMinute(uint8(mm))
date.setSecond(uint8(ss))
date.setMicrosecond(uint32(frac))
return
}
// Time is negative or outside of 24 hours internal.
seconds, microseconds, _ := calcTimeDurationDiff(*date, dur)
// If we want to use this function with arbitrary dates, this code will need
// to cover cases when time is negative and "date < -time".
days := seconds / secondsIn24Hour
calcTimeFromSec(date, seconds%secondsIn24Hour, microseconds)
year, month, day := getDateFromDaynr(uint(days))
date.setYear(uint16(year))
date.setMonth(uint8(month))
date.setDay(uint8(day))
}
// getDateFromDaynr changes a daynr to year, month and day,
// daynr 0 is returned as date 00.00.00
func getDateFromDaynr(daynr uint) (year uint, month uint, day uint) {
if daynr <= 365 || daynr >= 3652500 {
return
}
year = daynr * 100 / 36525
temp := (((year-1)/100 + 1) * 3) / 4
dayOfYear := daynr - year*365 - (year-1)/4 + temp
daysInYear := calcDaysInYear(int(year))
for dayOfYear > uint(daysInYear) {
dayOfYear -= uint(daysInYear)
year++
daysInYear = calcDaysInYear(int(year))
}
leapDay := uint(0)
if daysInYear == 366 {
if dayOfYear > 31+28 {
dayOfYear--
if dayOfYear == 31+28 {
// Handle leapyears leapday.
leapDay = 1
}
}
}
month = 1
for _, days := range daysByMonth {
if dayOfYear <= uint(days) {
break
}
dayOfYear -= uint(days)
month++
}
day = dayOfYear + leapDay
return
}
const (
intervalYEAR = "YEAR"
intervalQUARTER = "QUARTER"
intervalMONTH = "MONTH"
intervalWEEK = "WEEK"
intervalDAY = "DAY"
intervalHOUR = "HOUR"
intervalMINUTE = "MINUTE"
intervalSECOND = "SECOND"
intervalMICROSECOND = "MICROSECOND"
)
func timestampDiff(intervalType string, t1, t2 CoreTime) int64 {
seconds, microseconds, neg := calcTimeTimeDiff(t2, t1, 1)
months := uint(0)
if intervalType == intervalYEAR || intervalType == intervalQUARTER ||
intervalType == intervalMONTH {
var (
yearBeg, yearEnd, monthBeg, monthEnd, dayBeg, dayEnd uint
secondBeg, secondEnd, microsecondBeg, microsecondEnd uint
)
if neg {
yearBeg = uint(t2.Year())
yearEnd = uint(t1.Year())
monthBeg = uint(t2.Month())
monthEnd = uint(t1.Month())
dayBeg = uint(t2.Day())
dayEnd = uint(t1.Day())
secondBeg = uint(t2.Hour()*3600 + t2.Minute()*60 + t2.Second())
secondEnd = uint(t1.Hour()*3600 + t1.Minute()*60 + t1.Second())
microsecondBeg = uint(t2.Microsecond())
microsecondEnd = uint(t1.Microsecond())
} else {
yearBeg = uint(t1.Year())
yearEnd = uint(t2.Year())
monthBeg = uint(t1.Month())
monthEnd = uint(t2.Month())
dayBeg = uint(t1.Day())
dayEnd = uint(t2.Day())
secondBeg = uint(t1.Hour()*3600 + t1.Minute()*60 + t1.Second())
secondEnd = uint(t2.Hour()*3600 + t2.Minute()*60 + t2.Second())
microsecondBeg = uint(t1.Microsecond())
microsecondEnd = uint(t2.Microsecond())
}
// calc years
years := yearEnd - yearBeg
if monthEnd < monthBeg ||
(monthEnd == monthBeg && dayEnd < dayBeg) {
years--
}
// calc months
months = 12 * years
if monthEnd < monthBeg ||
(monthEnd == monthBeg && dayEnd < dayBeg) {
months += 12 - (monthBeg - monthEnd)
} else {
months += monthEnd - monthBeg
}
if dayEnd < dayBeg {
months--
} else if (dayEnd == dayBeg) &&
((secondEnd < secondBeg) ||
(secondEnd == secondBeg && microsecondEnd < microsecondBeg)) {
months--
}
}
negV := int64(1)
if neg {
negV = -1
}
switch intervalType {
case intervalYEAR:
return int64(months) / 12 * negV
case intervalQUARTER:
return int64(months) / 3 * negV
case intervalMONTH:
return int64(months) * negV
case intervalWEEK:
return int64(seconds) / secondsIn24Hour / 7 * negV
case intervalDAY:
return int64(seconds) / secondsIn24Hour * negV
case intervalHOUR:
return int64(seconds) / 3600 * negV
case intervalMINUTE:
return int64(seconds) / 60 * negV
case intervalSECOND:
return int64(seconds) * negV
case intervalMICROSECOND:
// In MySQL difference between any two valid datetime values
// in microseconds fits into longlong.
return int64(seconds*1000000+microseconds) * negV
}
return 0
}
// Copyright 2016 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package types
import (
"bytes"
"cmp"
gjson "encoding/json"
"fmt"
"math"
"slices"
"strconv"
"strings"
"time"
"unicode/utf8"
"unsafe"
"github.com/pingcap/errors"
"github.com/pingcap/tidb/pkg/parser/charset"
"github.com/pingcap/tidb/pkg/parser/mysql"
"github.com/pingcap/tidb/pkg/parser/terror"
"github.com/pingcap/tidb/pkg/parser/types"
"github.com/pingcap/tidb/pkg/planner/cascades/base"
"github.com/pingcap/tidb/pkg/util/collate"
"github.com/pingcap/tidb/pkg/util/hack"
"github.com/pingcap/tidb/pkg/util/intest"
"github.com/pingcap/tidb/pkg/util/logutil"
"go.uber.org/zap"
)
// Kind constants.
const (
KindNull byte = 0
KindInt64 byte = 1
KindUint64 byte = 2
KindFloat32 byte = 3
KindFloat64 byte = 4
KindString byte = 5
KindBytes byte = 6
KindBinaryLiteral byte = 7 // Used for BIT / HEX literals.
KindMysqlDecimal byte = 8
KindMysqlDuration byte = 9
KindMysqlEnum byte = 10
KindMysqlBit byte = 11 // Used for BIT table column values.
KindMysqlSet byte = 12
KindMysqlTime byte = 13
KindInterface byte = 14
KindMinNotNull byte = 15
KindMaxValue byte = 16
KindRaw byte = 17
KindMysqlJSON byte = 18
KindVectorFloat32 byte = 19
)
// Datum is a data box holds different kind of data.
// It has better performance and is easier to use than `interface{}`.
type Datum struct {
k byte // datum kind.
decimal uint16 // decimal can hold uint16 values.
length uint32 // length can hold uint32 values.
i int64 // i can hold int64 uint64 float64 values.
collation string // collation hold the collation information for string value.
b []byte // b can hold string or []byte values.
x any // x hold all other types.
}
// EmptyDatumSize is the size of empty datum.
// 72 = 1 + 1 (byte) + 2 (uint16) + 4 (uint32) + 8 (int64) + 16 (string) + 24 ([]byte) + 16 (interface{})
const EmptyDatumSize = int64(unsafe.Sizeof(Datum{}))
// Clone create a deep copy of the Datum.
func (d *Datum) Clone() *Datum {
ret := new(Datum)
d.Copy(ret)
return ret
}
// Copy deep copies a Datum into destination.
func (d *Datum) Copy(dst *Datum) {
*dst = *d
if d.b != nil {
dst.b = make([]byte, len(d.b))
copy(dst.b, d.b)
}
switch dst.Kind() {
case KindMysqlDecimal:
d := *d.GetMysqlDecimal()
dst.SetMysqlDecimal(&d)
case KindMysqlTime:
dst.SetMysqlTime(d.GetMysqlTime())
}
}
// Kind gets the kind of the datum.
func (d *Datum) Kind() byte {
return d.k
}
// Collation gets the collation of the datum.
func (d *Datum) Collation() string {
return d.collation
}
// SetCollation sets the collation of the datum.
func (d *Datum) SetCollation(collation string) {
d.collation = collation
}
// Frac gets the frac of the datum.
func (d *Datum) Frac() int {
return int(d.decimal)
}
// SetFrac sets the frac of the datum.
func (d *Datum) SetFrac(frac int) {
d.decimal = uint16(frac)
}
// Length gets the length of the datum.
func (d *Datum) Length() int {
return int(d.length)
}
// SetLength sets the length of the datum.
func (d *Datum) SetLength(l int) {
d.length = uint32(l)
}
// IsNull checks if datum is null.
func (d *Datum) IsNull() bool {
return d.k == KindNull
}
// GetInt64 gets int64 value.
func (d *Datum) GetInt64() int64 {
return d.i
}
// SetInt64 sets int64 value.
func (d *Datum) SetInt64(i int64) {
d.k = KindInt64
d.i = i
}
// GetUint64 gets uint64 value.
func (d *Datum) GetUint64() uint64 {
return uint64(d.i)
}
// SetUint64 sets uint64 value.
func (d *Datum) SetUint64(i uint64) {
d.k = KindUint64
d.i = int64(i)
}
// GetFloat64 gets float64 value.
func (d *Datum) GetFloat64() float64 {
return math.Float64frombits(uint64(d.i))
}
// SetFloat64 sets float64 value.
func (d *Datum) SetFloat64(f float64) {
d.k = KindFloat64
d.i = int64(math.Float64bits(f))
}
// GetFloat32 gets float32 value.
func (d *Datum) GetFloat32() float32 {
return float32(math.Float64frombits(uint64(d.i)))
}
// SetFloat32 sets float32 value.
func (d *Datum) SetFloat32(f float32) {
d.k = KindFloat32
d.i = int64(math.Float64bits(float64(f)))
}
// SetFloat32FromF64 sets float32 values from f64
func (d *Datum) SetFloat32FromF64(f float64) {
d.k = KindFloat32
d.i = int64(math.Float64bits(f))
}
// GetString gets string value.
func (d *Datum) GetString() string {
return string(hack.String(d.b))
}
// GetBinaryStringEncoded gets the string value encoded with given charset.
func (d *Datum) GetBinaryStringEncoded() string {
coll, err := charset.GetCollationByName(d.Collation())
if err != nil {
logutil.BgLogger().Warn("unknown collation", zap.Error(err))
return d.GetString()
}
enc := charset.FindEncodingTakeUTF8AsNoop(coll.CharsetName)
replace, _ := enc.Transform(nil, d.GetBytes(), charset.OpEncodeNoErr)
return string(hack.String(replace))
}
// GetBinaryStringDecoded gets the string value decoded with given charset.
func (d *Datum) GetBinaryStringDecoded(flags Flags, chs string) (string, error) {
enc, skip := findEncoding(flags, chs)
if skip {
return d.GetString(), nil
}
trim, err := enc.Transform(nil, d.GetBytes(), charset.OpDecode)
return string(hack.String(trim)), err
}
// GetStringWithCheck gets the string and checks if it is valid in a given charset.
func (d *Datum) GetStringWithCheck(flags Flags, chs string) (string, error) {
enc, skip := findEncoding(flags, chs)
if skip {
return d.GetString(), nil
}
str := d.GetBytes()
if !enc.IsValid(str) {
replace, err := enc.Transform(nil, str, charset.OpReplace)
return string(hack.String(replace)), err
}
return d.GetString(), nil
}
func findEncoding(flags Flags, chs string) (enc charset.Encoding, skip bool) {
enc = charset.FindEncoding(chs)
if enc.Tp() == charset.EncodingTpUTF8 && flags.SkipUTF8Check() ||
enc.Tp() == charset.EncodingTpASCII && flags.SkipASCIICheck() {
return nil, true
}
if chs == charset.CharsetUTF8 && !flags.SkipUTF8MB4Check() {
enc = charset.EncodingUTF8MB3StrictImpl
}
return enc, false
}
// SetString sets string value.
func (d *Datum) SetString(s string, collation string) {
d.k = KindString
sink(s)
d.b = hack.Slice(s)
d.collation = collation
}
// sink prevents s from being allocated on the stack.
var sink = func(s string) {
}
// GetBytes gets bytes value.
func (d *Datum) GetBytes() []byte {
if d.b != nil {
return d.b
}
return []byte{}
}
// SetBytes sets bytes value to datum.
func (d *Datum) SetBytes(b []byte) {
d.k = KindBytes
d.b = b
d.collation = charset.CollationBin
}
// SetBytesAsString sets bytes value to datum as string type.
func (d *Datum) SetBytesAsString(b []byte, collation string, length uint32) {
d.k = KindString
d.b = b
d.length = length
d.collation = collation
}
// GetInterface gets interface value.
func (d *Datum) GetInterface() any {
return d.x
}
// SetInterface sets interface to datum.
func (d *Datum) SetInterface(x any) {
d.k = KindInterface
d.x = x
}
// SetNull sets datum to nil.
func (d *Datum) SetNull() {
d.k = KindNull
d.x = nil
}
// SetMinNotNull sets datum to minNotNull value.
func (d *Datum) SetMinNotNull() {
d.k = KindMinNotNull
d.x = nil
}
// GetBinaryLiteral4Cmp gets Bit value, and remove it's prefix 0 for comparison.
func (d *Datum) GetBinaryLiteral4Cmp() BinaryLiteral {
bitLen := len(d.b)
if bitLen == 0 {
return d.b
}
for i := range bitLen {
// Remove the prefix 0 in the bit array.
if d.b[i] != 0 {
return d.b[i:]
}
}
// The result is 0x000...00, we just the return 0x00.
return d.b[bitLen-1:]
}
// GetBinaryLiteral gets Bit value
func (d *Datum) GetBinaryLiteral() BinaryLiteral {
return d.b
}
// GetMysqlBit gets MysqlBit value
func (d *Datum) GetMysqlBit() BinaryLiteral {
return d.GetBinaryLiteral()
}
// SetBinaryLiteral sets Bit value
func (d *Datum) SetBinaryLiteral(b BinaryLiteral) {
d.k = KindBinaryLiteral
d.b = b
d.collation = charset.CollationBin
}
// SetMysqlBit sets MysqlBit value
func (d *Datum) SetMysqlBit(b BinaryLiteral) {
d.k = KindMysqlBit
d.b = b
}
// GetMysqlDecimal gets decimal value
func (d *Datum) GetMysqlDecimal() *MyDecimal {
return d.x.(*MyDecimal)
}
// SetMysqlDecimal sets decimal value
func (d *Datum) SetMysqlDecimal(b *MyDecimal) {
d.k = KindMysqlDecimal
d.x = b
}
// GetMysqlDuration gets Duration value
func (d *Datum) GetMysqlDuration() Duration {
return Duration{Duration: time.Duration(d.i), Fsp: int(int8(d.decimal))}
}
// SetMysqlDuration sets Duration value
func (d *Datum) SetMysqlDuration(b Duration) {
d.k = KindMysqlDuration
d.i = int64(b.Duration)
d.decimal = uint16(b.Fsp)
}
// GetMysqlEnum gets Enum value
func (d *Datum) GetMysqlEnum() Enum {
str := string(hack.String(d.b))
return Enum{Value: uint64(d.i), Name: str}
}
// SetMysqlEnum sets Enum value
func (d *Datum) SetMysqlEnum(b Enum, collation string) {
d.k = KindMysqlEnum
d.i = int64(b.Value)
sink(b.Name)
d.collation = collation
d.b = hack.Slice(b.Name)
}
// GetMysqlSet gets Set value
func (d *Datum) GetMysqlSet() Set {
str := string(hack.String(d.b))
return Set{Value: uint64(d.i), Name: str}
}
// SetMysqlSet sets Set value
func (d *Datum) SetMysqlSet(b Set, collation string) {
d.k = KindMysqlSet
d.i = int64(b.Value)
sink(b.Name)
d.collation = collation
d.b = hack.Slice(b.Name)
}
// GetMysqlJSON gets json.BinaryJSON value
func (d *Datum) GetMysqlJSON() BinaryJSON {
return BinaryJSON{TypeCode: byte(d.i), Value: d.b}
}
// SetMysqlJSON sets json.BinaryJSON value
func (d *Datum) SetMysqlJSON(b BinaryJSON) {
d.k = KindMysqlJSON
d.i = int64(b.TypeCode)
d.b = b.Value
}
// SetVectorFloat32 sets VectorFloat32 value
func (d *Datum) SetVectorFloat32(vec VectorFloat32) {
d.k = KindVectorFloat32
d.b = vec.ZeroCopySerialize()
}
// GetVectorFloat32 gets VectorFloat32 value
func (d *Datum) GetVectorFloat32() VectorFloat32 {
v, _, err := ZeroCopyDeserializeVectorFloat32(d.b)
if err != nil {
panic(err)
}
return v
}
// GetMysqlTime gets types.Time value
func (d *Datum) GetMysqlTime() Time {
return d.x.(Time)
}
// SetMysqlTime sets types.Time value
func (d *Datum) SetMysqlTime(b Time) {
d.k = KindMysqlTime
d.x = b
}
// SetRaw sets raw value.
func (d *Datum) SetRaw(b []byte) {
d.k = KindRaw
d.b = b
}
// GetRaw gets raw value.
func (d *Datum) GetRaw() []byte {
return d.b
}
// SetAutoID set the auto increment ID according to its int flag.
// Don't use it directly, useless wrapped with setDatumAutoIDAndCast.
func (d *Datum) SetAutoID(id int64, flag uint) {
if mysql.HasUnsignedFlag(flag) {
d.SetUint64(uint64(id))
} else {
d.SetInt64(id)
}
}
// String returns a human-readable description of Datum. It is intended only for debugging.
func (d Datum) String() string {
var t string
switch d.k {
case KindNull:
t = "KindNull"
case KindInt64:
t = "KindInt64"
case KindUint64:
t = "KindUint64"
case KindFloat32:
t = "KindFloat32"
case KindFloat64:
t = "KindFloat64"
case KindString:
t = "KindString"
case KindBytes:
t = "KindBytes"
case KindBinaryLiteral:
t = "KindBinaryLiteral"
case KindMysqlDecimal:
t = "KindMysqlDecimal"
case KindMysqlDuration:
t = "KindMysqlDuration"
case KindMysqlEnum:
t = "KindMysqlEnum"
case KindMysqlBit:
t = "KindMysqlBit"
case KindMysqlSet:
t = "KindMysqlSet"
case KindMysqlTime:
t = "KindMysqlTime"
case KindInterface:
t = "KindInterface"
case KindMinNotNull:
t = "KindMinNotNull"
case KindMaxValue:
t = "KindMaxValue"
case KindRaw:
t = "KindRaw"
case KindMysqlJSON:
t = "KindMysqlJSON"
case KindVectorFloat32:
t = "KindVectorFloat32"
default:
t = "Unknown"
}
v := d.GetValue()
switch v.(type) {
case []byte, string:
quote := `"`
// We only need the escape functionality of %q, the quoting is not needed,
// so we trim the \" prefix and suffix here.
v = strings.TrimSuffix(
strings.TrimPrefix(
fmt.Sprintf("%q", v),
quote),
quote)
}
return fmt.Sprintf("%v %v", t, v)
}
// GetValue gets the value of the datum of any kind.
func (d *Datum) GetValue() any {
switch d.k {
case KindInt64:
return d.GetInt64()
case KindUint64:
return d.GetUint64()
case KindFloat32:
return d.GetFloat32()
case KindFloat64:
return d.GetFloat64()
case KindString:
return d.GetString()
case KindBytes:
return d.GetBytes()
case KindMysqlDecimal:
return d.GetMysqlDecimal()
case KindMysqlDuration:
return d.GetMysqlDuration()
case KindMysqlEnum:
return d.GetMysqlEnum()
case KindBinaryLiteral, KindMysqlBit:
return d.GetBinaryLiteral()
case KindMysqlSet:
return d.GetMysqlSet()
case KindMysqlJSON:
return d.GetMysqlJSON()
case KindMysqlTime:
return d.GetMysqlTime()
case KindVectorFloat32:
return d.GetVectorFloat32()
default:
return d.GetInterface()
}
}
// TruncatedStringify returns the %v representation of the datum
// but truncated (for example, for strings, only first 64 bytes is printed).
// This function is useful in contexts like EXPLAIN.
func (d *Datum) TruncatedStringify() string {
switch d.k {
case KindString, KindBytes:
return truncateStringIfNeeded(d.GetString())
case KindMysqlJSON:
return truncateStringIfNeeded(d.GetMysqlJSON().String())
case KindVectorFloat32:
// Vector supports native efficient truncation.
return d.GetVectorFloat32().TruncatedString()
case KindInt64:
return strconv.FormatInt(d.GetInt64(), 10)
case KindUint64:
return strconv.FormatUint(d.GetUint64(), 10)
default:
// For other types, no truncation is needed.
return fmt.Sprintf("%v", d.GetValue())
}
}
func truncateStringIfNeeded(str string) string {
const maxLen = 64
if len(str) > maxLen {
const suffix = "...(len:"
lenStr := strconv.Itoa(len(str))
buf := bytes.NewBuffer(make([]byte, 0, maxLen+len(suffix)+len(lenStr)+1))
buf.WriteString(str[:maxLen])
buf.WriteString(suffix)
buf.WriteString(lenStr)
buf.WriteByte(')')
return buf.String()
}
return str
}
// SetValueWithDefaultCollation sets any kind of value.
func (d *Datum) SetValueWithDefaultCollation(val any) {
switch x := val.(type) {
case nil:
d.SetNull()
case bool:
if x {
d.SetInt64(1)
} else {
d.SetInt64(0)
}
case int:
d.SetInt64(int64(x))
case int64:
d.SetInt64(x)
case uint64:
d.SetUint64(x)
case float32:
d.SetFloat32(x)
case float64:
d.SetFloat64(x)
case string:
d.SetString(x, mysql.DefaultCollationName)
case []byte:
d.SetBytes(x)
case *MyDecimal:
d.SetMysqlDecimal(x)
case Duration:
d.SetMysqlDuration(x)
case Enum:
d.SetMysqlEnum(x, mysql.DefaultCollationName)
case BinaryLiteral:
d.SetBinaryLiteral(x)
case BitLiteral: // Store as BinaryLiteral for Bit and Hex literals
d.SetBinaryLiteral(BinaryLiteral(x))
case HexLiteral:
d.SetBinaryLiteral(BinaryLiteral(x))
case Set:
d.SetMysqlSet(x, mysql.DefaultCollationName)
case BinaryJSON:
d.SetMysqlJSON(x)
case Time:
d.SetMysqlTime(x)
case VectorFloat32:
d.SetVectorFloat32(x)
default:
d.SetInterface(x)
}
}
// SetValue sets any kind of value.
func (d *Datum) SetValue(val any, tp *types.FieldType) {
switch x := val.(type) {
case nil:
d.SetNull()
case bool:
if x {
d.SetInt64(1)
} else {
d.SetInt64(0)
}
case int:
d.SetInt64(int64(x))
case int64:
d.SetInt64(x)
case uint64:
d.SetUint64(x)
case float32:
d.SetFloat32(x)
case float64:
d.SetFloat64(x)
case string:
d.SetString(x, tp.GetCollate())
case []byte:
d.SetBytes(x)
case *MyDecimal:
d.SetMysqlDecimal(x)
case Duration:
d.SetMysqlDuration(x)
case Enum:
d.SetMysqlEnum(x, tp.GetCollate())
case BinaryLiteral:
d.SetBinaryLiteral(x)
case BitLiteral: // Store as BinaryLiteral for Bit and Hex literals
d.SetBinaryLiteral(BinaryLiteral(x))
case HexLiteral:
d.SetBinaryLiteral(BinaryLiteral(x))
case Set:
d.SetMysqlSet(x, tp.GetCollate())
case BinaryJSON:
d.SetMysqlJSON(x)
case Time:
d.SetMysqlTime(x)
case VectorFloat32:
d.SetVectorFloat32(x)
default:
d.SetInterface(x)
}
}
// Hash64ForDatum is a hash function for initialized by codec package.
var Hash64ForDatum func(h base.Hasher, d *Datum)
// Hash64 implements base.HashEquals<0th> interface.
func (d *Datum) Hash64(h base.Hasher) {
Hash64ForDatum(h, d)
}
// Equals implements base.HashEquals.<1st> interface.
func (d *Datum) Equals(other any) bool {
if other == nil {
return false
}
var d2 *Datum
switch x := other.(type) {
case *Datum:
d2 = x
case Datum:
d2 = &x
default:
return false
}
ok := d.k == d2.k &&
d.decimal == d2.decimal &&
d.length == d2.length &&
d.i == d2.i &&
d.collation == d2.collation &&
string(d.b) == string(d2.b)
if !ok {
return false
}
// compare x
switch d.k {
case KindMysqlDecimal:
return d.GetMysqlDecimal().Compare(d2.GetMysqlDecimal()) == 0
case KindMysqlTime:
return d.GetMysqlTime().Compare(d2.GetMysqlTime()) == 0
default:
return true
}
}
// Compare compares datum to another datum.
// Notes: don't rely on datum.collation to get the collator, it's tend to buggy.
func (d *Datum) Compare(ctx Context, ad *Datum, comparer collate.Collator) (int, error) {
if d.k == KindMysqlJSON && ad.k != KindMysqlJSON {
cmp, err := ad.Compare(ctx, d, comparer)
return cmp * -1, errors.Trace(err)
}
switch ad.k {
case KindNull:
if d.k == KindNull {
return 0, nil
}
return 1, nil
case KindMinNotNull:
if d.k == KindNull {
return -1, nil
} else if d.k == KindMinNotNull {
return 0, nil
}
return 1, nil
case KindMaxValue:
if d.k == KindMaxValue {
return 0, nil
}
return -1, nil
case KindInt64:
return d.compareInt64(ctx, ad.GetInt64())
case KindUint64:
return d.compareUint64(ctx, ad.GetUint64())
case KindFloat32, KindFloat64:
return d.compareFloat64(ctx, ad.GetFloat64())
case KindString:
return d.compareString(ctx, ad.GetString(), comparer)
case KindBytes:
return d.compareString(ctx, ad.GetString(), comparer)
case KindMysqlDecimal:
return d.compareMysqlDecimal(ctx, ad.GetMysqlDecimal())
case KindMysqlDuration:
return d.compareMysqlDuration(ctx, ad.GetMysqlDuration())
case KindMysqlEnum:
return d.compareMysqlEnum(ctx, ad.GetMysqlEnum(), comparer)
case KindBinaryLiteral, KindMysqlBit:
return d.compareBinaryLiteral(ctx, ad.GetBinaryLiteral4Cmp(), comparer)
case KindMysqlSet:
return d.compareMysqlSet(ctx, ad.GetMysqlSet(), comparer)
case KindMysqlJSON:
return d.compareMysqlJSON(ad.GetMysqlJSON())
case KindMysqlTime:
return d.compareMysqlTime(ctx, ad.GetMysqlTime())
case KindVectorFloat32:
return d.compareVectorFloat32(ctx, ad.GetVectorFloat32())
default:
return 0, nil
}
}
func (d *Datum) compareInt64(ctx Context, i int64) (int, error) {
switch d.k {
case KindMaxValue:
return 1, nil
case KindInt64:
return cmp.Compare(d.i, i), nil
case KindUint64:
if i < 0 || d.GetUint64() > math.MaxInt64 {
return 1, nil
}
return cmp.Compare(d.i, i), nil
default:
return d.compareFloat64(ctx, float64(i))
}
}
func (d *Datum) compareUint64(ctx Context, u uint64) (int, error) {
switch d.k {
case KindMaxValue:
return 1, nil
case KindInt64:
if d.i < 0 || u > math.MaxInt64 {
return -1, nil
}
return cmp.Compare(d.i, int64(u)), nil
case KindUint64:
return cmp.Compare(d.GetUint64(), u), nil
default:
return d.compareFloat64(ctx, float64(u))
}
}
func (d *Datum) compareFloat64(ctx Context, f float64) (int, error) {
switch d.k {
case KindNull, KindMinNotNull:
return -1, nil
case KindMaxValue:
return 1, nil
case KindInt64:
return cmp.Compare(float64(d.i), f), nil
case KindUint64:
return cmp.Compare(float64(d.GetUint64()), f), nil
case KindFloat32, KindFloat64:
return cmp.Compare(d.GetFloat64(), f), nil
case KindString, KindBytes:
fVal, err := StrToFloat(ctx, d.GetString(), false)
return cmp.Compare(fVal, f), errors.Trace(err)
case KindMysqlDecimal:
fVal, err := d.GetMysqlDecimal().ToFloat64()
return cmp.Compare(fVal, f), errors.Trace(err)
case KindMysqlDuration:
fVal := d.GetMysqlDuration().Seconds()
return cmp.Compare(fVal, f), nil
case KindMysqlEnum:
fVal := d.GetMysqlEnum().ToNumber()
return cmp.Compare(fVal, f), nil
case KindBinaryLiteral, KindMysqlBit:
val, err := d.GetBinaryLiteral4Cmp().ToInt(ctx)
fVal := float64(val)
return cmp.Compare(fVal, f), errors.Trace(err)
case KindMysqlSet:
fVal := d.GetMysqlSet().ToNumber()
return cmp.Compare(fVal, f), nil
case KindMysqlTime:
fVal, err := d.GetMysqlTime().ToNumber().ToFloat64()
return cmp.Compare(fVal, f), errors.Trace(err)
default:
return -1, nil
}
}
func (d *Datum) compareString(ctx Context, s string, comparer collate.Collator) (int, error) {
switch d.k {
case KindNull, KindMinNotNull:
return -1, nil
case KindMaxValue:
return 1, nil
case KindString, KindBytes:
return comparer.Compare(d.GetString(), s), nil
case KindMysqlDecimal:
dec := new(MyDecimal)
err := ctx.HandleTruncate(dec.FromString(hack.Slice(s)))
return d.GetMysqlDecimal().Compare(dec), errors.Trace(err)
case KindMysqlTime:
dt, err := ParseDatetime(ctx, s)
return d.GetMysqlTime().Compare(dt), errors.Trace(err)
case KindMysqlDuration:
dur, _, err := ParseDuration(ctx, s, MaxFsp)
return d.GetMysqlDuration().Compare(dur), errors.Trace(err)
case KindMysqlSet:
return comparer.Compare(d.GetMysqlSet().String(), s), nil
case KindMysqlEnum:
return comparer.Compare(d.GetMysqlEnum().String(), s), nil
case KindBinaryLiteral, KindMysqlBit:
return comparer.Compare(d.GetBinaryLiteral4Cmp().ToString(), s), nil
default:
fVal, err := StrToFloat(ctx, s, false)
if err != nil {
return 0, errors.Trace(err)
}
return d.compareFloat64(ctx, fVal)
}
}
func (d *Datum) compareMysqlDecimal(ctx Context, dec *MyDecimal) (int, error) {
switch d.k {
case KindNull, KindMinNotNull:
return -1, nil
case KindMaxValue:
return 1, nil
case KindMysqlDecimal:
return d.GetMysqlDecimal().Compare(dec), nil
case KindString, KindBytes:
dDec := new(MyDecimal)
err := ctx.HandleTruncate(dDec.FromString(d.GetBytes()))
return dDec.Compare(dec), errors.Trace(err)
default:
dVal, err := d.ConvertTo(ctx, NewFieldType(mysql.TypeNewDecimal))
if err != nil {
return 0, errors.Trace(err)
}
return dVal.GetMysqlDecimal().Compare(dec), nil
}
}
func (d *Datum) compareMysqlDuration(ctx Context, dur Duration) (int, error) {
switch d.k {
case KindNull, KindMinNotNull:
return -1, nil
case KindMaxValue:
return 1, nil
case KindMysqlDuration:
return d.GetMysqlDuration().Compare(dur), nil
case KindString, KindBytes:
dDur, _, err := ParseDuration(ctx, d.GetString(), MaxFsp)
return dDur.Compare(dur), errors.Trace(err)
default:
return d.compareFloat64(ctx, dur.Seconds())
}
}
func (d *Datum) compareMysqlEnum(sc Context, enum Enum, comparer collate.Collator) (int, error) {
switch d.k {
case KindNull, KindMinNotNull:
return -1, nil
case KindMaxValue:
return 1, nil
case KindString, KindBytes, KindMysqlEnum, KindMysqlSet:
return comparer.Compare(d.GetString(), enum.String()), nil
default:
return d.compareFloat64(sc, enum.ToNumber())
}
}
func (d *Datum) compareBinaryLiteral(ctx Context, b BinaryLiteral, comparer collate.Collator) (int, error) {
switch d.k {
case KindNull, KindMinNotNull:
return -1, nil
case KindMaxValue:
return 1, nil
case KindString, KindBytes:
fallthrough // in this case, d is converted to Binary and then compared with b
case KindBinaryLiteral, KindMysqlBit:
return comparer.Compare(d.GetBinaryLiteral4Cmp().ToString(), b.ToString()), nil
default:
val, err := b.ToInt(ctx)
if err != nil {
return 0, errors.Trace(err)
}
result, err := d.compareFloat64(ctx, float64(val))
return result, errors.Trace(err)
}
}
func (d *Datum) compareMysqlSet(ctx Context, set Set, comparer collate.Collator) (int, error) {
switch d.k {
case KindNull, KindMinNotNull:
return -1, nil
case KindMaxValue:
return 1, nil
case KindString, KindBytes, KindMysqlEnum, KindMysqlSet:
return comparer.Compare(d.GetString(), set.String()), nil
default:
return d.compareFloat64(ctx, set.ToNumber())
}
}
func (d *Datum) compareMysqlJSON(target BinaryJSON) (int, error) {
// json is not equal with NULL
if d.k == KindNull {
return 1, nil
}
origin, err := d.ToMysqlJSON()
if err != nil {
return 0, errors.Trace(err)
}
return CompareBinaryJSON(origin, target), nil
}
func (d *Datum) compareMysqlTime(ctx Context, time Time) (int, error) {
switch d.k {
case KindNull, KindMinNotNull:
return -1, nil
case KindMaxValue:
return 1, nil
case KindString, KindBytes:
dt, err := ParseDatetime(ctx, d.GetString())
return dt.Compare(time), errors.Trace(err)
case KindMysqlTime:
return d.GetMysqlTime().Compare(time), nil
default:
fVal, err := time.ToNumber().ToFloat64()
if err != nil {
return 0, errors.Trace(err)
}
return d.compareFloat64(ctx, fVal)
}
}
func (d *Datum) compareVectorFloat32(ctx Context, vec VectorFloat32) (int, error) {
switch d.k {
case KindNull, KindMinNotNull:
return -1, nil
case KindMaxValue:
return 1, nil
case KindVectorFloat32:
return d.GetVectorFloat32().Compare(vec), nil
// Note: We expect cast is applied before compare, when comparing with String and other vector types.
default:
return 0, errors.New("cannot compare vector and non-vector, cast is required")
}
}
// ConvertTo converts a datum to the target field type.
// change this method need sync modification to type2Kind in rowcodec/types.go
func (d *Datum) ConvertTo(ctx Context, target *FieldType) (Datum, error) {
if d.k == KindNull {
return Datum{}, nil
}
switch target.GetType() { // TODO: implement mysql types convert when "CAST() AS" syntax are supported.
case mysql.TypeTiny, mysql.TypeShort, mysql.TypeInt24, mysql.TypeLong, mysql.TypeLonglong:
unsigned := mysql.HasUnsignedFlag(target.GetFlag())
if unsigned {
return d.convertToUint(ctx, target)
}
return d.convertToInt(ctx, target)
case mysql.TypeFloat, mysql.TypeDouble:
return d.convertToFloat(ctx, target)
case mysql.TypeBlob, mysql.TypeTinyBlob, mysql.TypeMediumBlob, mysql.TypeLongBlob,
mysql.TypeString, mysql.TypeVarchar, mysql.TypeVarString:
return d.convertToString(ctx, target)
case mysql.TypeTimestamp:
return d.convertToMysqlTimestamp(ctx, target)
case mysql.TypeDatetime, mysql.TypeDate:
return d.convertToMysqlTime(ctx, target)
case mysql.TypeDuration:
return d.convertToMysqlDuration(ctx, target)
case mysql.TypeNewDecimal:
return d.convertToMysqlDecimal(ctx, target)
case mysql.TypeYear:
return d.ConvertToMysqlYear(ctx, target)
case mysql.TypeEnum:
return d.convertToMysqlEnum(ctx, target)
case mysql.TypeBit:
return d.convertToMysqlBit(ctx, target)
case mysql.TypeSet:
return d.convertToMysqlSet(ctx, target)
case mysql.TypeJSON:
return d.convertToMysqlJSON(target)
case mysql.TypeTiDBVectorFloat32:
return d.convertToVectorFloat32(ctx, target)
case mysql.TypeNull:
return Datum{}, nil
default:
panic("should never happen")
}
}
func (d *Datum) convertToFloat(ctx Context, target *FieldType) (Datum, error) {
var (
f float64
ret Datum
err error
)
switch d.k {
case KindNull:
return ret, nil
case KindInt64:
f = float64(d.GetInt64())
case KindUint64:
f = float64(d.GetUint64())
case KindFloat32, KindFloat64:
f = d.GetFloat64()
case KindString, KindBytes:
f, err = StrToFloat(ctx, d.GetString(), false)
case KindMysqlTime:
f, err = d.GetMysqlTime().ToNumber().ToFloat64()
case KindMysqlDuration:
f, err = d.GetMysqlDuration().ToNumber().ToFloat64()
case KindMysqlDecimal:
f, err = d.GetMysqlDecimal().ToFloat64()
case KindMysqlSet:
f = d.GetMysqlSet().ToNumber()
case KindMysqlEnum:
f = d.GetMysqlEnum().ToNumber()
case KindBinaryLiteral, KindMysqlBit:
val, err1 := d.GetBinaryLiteral().ToInt(ctx)
f, err = float64(val), err1
case KindMysqlJSON:
f, err = ConvertJSONToFloat(ctx, d.GetMysqlJSON())
default:
return invalidConv(d, target.GetType())
}
f, err1 := ProduceFloatWithSpecifiedTp(f, target)
if err == nil && err1 != nil {
err = err1
}
if target.GetType() == mysql.TypeFloat {
ret.SetFloat32(float32(f))
} else {
ret.SetFloat64(f)
}
return ret, errors.Trace(err)
}
// ProduceFloatWithSpecifiedTp produces a new float64 according to `flen` and `decimal`.
func ProduceFloatWithSpecifiedTp(f float64, target *FieldType) (_ float64, err error) {
if math.IsNaN(f) {
return 0, overflow(f, target.GetType())
}
if math.IsInf(f, 0) {
return f, overflow(f, target.GetType())
}
// For float and following double type, we will only truncate it for float(M, D) format.
// If no D is set, we will handle it like origin float whether M is set or not.
if target.GetFlen() != UnspecifiedLength && target.GetDecimal() != UnspecifiedLength {
f, err = TruncateFloat(f, target.GetFlen(), target.GetDecimal())
}
if mysql.HasUnsignedFlag(target.GetFlag()) && f < 0 {
return 0, overflow(f, target.GetType())
}
if err != nil {
// We must return the error got from TruncateFloat after checking whether the target is unsigned to make sure
// the returned float is not negative when the target type is unsigned.
return f, errors.Trace(err)
}
if target.GetType() == mysql.TypeFloat && (f > math.MaxFloat32 || f < -math.MaxFloat32) {
if f > 0 {
return math.MaxFloat32, overflow(f, target.GetType())
}
return -math.MaxFloat32, overflow(f, target.GetType())
}
return f, errors.Trace(err)
}
func (d *Datum) convertToString(ctx Context, target *FieldType) (Datum, error) {
var (
ret Datum
s string
err error
)
switch d.k {
case KindInt64:
s = strconv.FormatInt(d.GetInt64(), 10)
case KindUint64:
s = strconv.FormatUint(d.GetUint64(), 10)
case KindFloat32:
s = strconv.FormatFloat(d.GetFloat64(), 'f', -1, 32)
case KindFloat64:
s = strconv.FormatFloat(d.GetFloat64(), 'f', -1, 64)
case KindString, KindBytes:
fromBinary := d.Collation() == charset.CollationBin
toBinary := target.GetCharset() == charset.CharsetBin
if fromBinary && toBinary {
s = d.GetString()
} else if fromBinary {
s, err = d.GetBinaryStringDecoded(ctx.Flags(), target.GetCharset())
} else if toBinary {
s = d.GetBinaryStringEncoded()
} else {
s, err = d.GetStringWithCheck(ctx.Flags(), target.GetCharset())
}
case KindMysqlTime:
s = d.GetMysqlTime().String()
case KindMysqlDuration:
s = d.GetMysqlDuration().String()
case KindMysqlDecimal:
s = d.GetMysqlDecimal().String()
case KindMysqlEnum:
s = d.GetMysqlEnum().String()
case KindMysqlSet:
s = d.GetMysqlSet().String()
case KindBinaryLiteral:
s, err = d.GetBinaryStringDecoded(ctx.Flags(), target.GetCharset())
case KindMysqlBit:
// https://github.com/pingcap/tidb/issues/31124.
// Consider converting to uint first.
val, err := d.GetBinaryLiteral().ToInt(ctx)
// The length of BIT is limited to 64, so this function will never fail / truncated.
intest.AssertNoError(err)
if err != nil {
s = d.GetBinaryLiteral().ToString()
} else {
s = strconv.FormatUint(val, 10)
}
case KindMysqlJSON:
s = d.GetMysqlJSON().String()
case KindVectorFloat32:
s = d.GetVectorFloat32().String()
default:
return invalidConv(d, target.GetType())
}
if err == nil {
s, err = ProduceStrWithSpecifiedTp(s, target, ctx, true)
}
ret.SetString(s, target.GetCollate())
if target.GetCharset() == charset.CharsetBin {
ret.k = KindBytes
}
return ret, errors.Trace(err)
}
// ProduceStrWithSpecifiedTp produces a new string according to `flen` and `chs`. Param `padZero` indicates
// whether we should pad `\0` for `binary(flen)` type.
func ProduceStrWithSpecifiedTp(s string, tp *FieldType, ctx Context, padZero bool) (_ string, err error) {
flen, chs := tp.GetFlen(), tp.GetCharset()
if flen >= 0 {
// overflowed stores the part of the string that is out of the length constraint, it is later checked to see if the
// overflowed part is all whitespaces
var overflowed string
var characterLen int
var needCalculateLen bool
// For mysql.TypeTinyBlob, mysql.TypeMediumBlob, mysql.TypeLongBlob, mysql.TypeBlob(defined in tidb)
// and tinytext, text, mediumtext, longtext(not explicitly defined in tidb, corresponding to blob(s) in tidb) flen is the store length limit regardless of charset.
if chs != charset.CharsetBin {
switch tp.GetType() {
case mysql.TypeTinyBlob, mysql.TypeMediumBlob, mysql.TypeLongBlob, mysql.TypeBlob:
characterLen = len(s)
// We need to truncate the value to a proper length that contains complete word.
if characterLen > flen {
var r rune
var size int
var tempStr string
var truncateLen int
// Find the truncate position.
for truncateLen = flen; truncateLen > 0; truncateLen-- {
tempStr = truncateStr(s, truncateLen)
r, size = utf8.DecodeLastRuneInString(tempStr)
if r == utf8.RuneError && size == 0 {
// Empty string
continue
} else if r == utf8.RuneError && size == 1 {
// Invalid string
continue
}
// Get the truncate position
break
}
overflowed = s[truncateLen:]
s = truncateStr(s, truncateLen)
}
default:
if len(s) > flen {
characterLen = utf8.RuneCountInString(s)
if characterLen > flen {
// 1. If len(s) is 0 and flen is 0, truncateLen will be 0, don't truncate s.
// CREATE TABLE t (a char(0));
// INSERT INTO t VALUES (``);
// 2. If len(s) is 10 and flen is 0, truncateLen will be 0 too, but we still need to truncate s.
// SELECT 1, CAST(1234 AS CHAR(0));
// So truncateLen is not a suitable variable to determine to do truncate or not.
var runeCount int
var truncateLen int
for i := range s {
if runeCount == flen {
truncateLen = i
break
}
runeCount++
}
overflowed = s[truncateLen:]
s = truncateStr(s, truncateLen)
} else {
needCalculateLen = true
}
}
}
} else if len(s) > flen {
characterLen = len(s)
overflowed = s[flen:]
s = truncateStr(s, flen)
}
if len(overflowed) != 0 {
trimmed := strings.TrimRight(overflowed, " \t\n\r")
if len(trimmed) == 0 && !IsBinaryStr(tp) && IsTypeChar(tp.GetType()) {
if tp.GetType() == mysql.TypeVarchar {
if needCalculateLen {
characterLen = utf8.RuneCountInString(s)
}
ctx.AppendWarning(ErrTruncated.FastGen("Data truncated, field len %d, data len %d", flen, characterLen))
}
} else {
if needCalculateLen {
characterLen = utf8.RuneCountInString(s)
}
err = ErrDataTooLong.FastGen("Data Too Long, field len %d, data len %d", flen, characterLen)
}
}
if tp.GetType() == mysql.TypeString && IsBinaryStr(tp) && len(s) < flen && padZero {
padding := make([]byte, flen-len(s))
s = string(append([]byte(s), padding...))
}
}
return s, errors.Trace(ctx.HandleTruncate(err))
}
func (d *Datum) convertToInt(ctx Context, target *FieldType) (Datum, error) {
i64, err := d.toSignedInteger(ctx, target.GetType())
return NewIntDatum(i64), errors.Trace(err)
}
func (d *Datum) convertToUint(ctx Context, target *FieldType) (Datum, error) {
tp := target.GetType()
upperBound := IntegerUnsignedUpperBound(tp)
var (
val uint64
err error
ret Datum
)
switch d.k {
case KindInt64:
val, err = ConvertIntToUint(ctx.Flags(), d.GetInt64(), upperBound, tp)
case KindUint64:
val, err = ConvertUintToUint(d.GetUint64(), upperBound, tp)
case KindFloat32, KindFloat64:
val, err = ConvertFloatToUint(ctx.Flags(), d.GetFloat64(), upperBound, tp)
case KindString, KindBytes:
var err1 error
val, err1 = StrToUint(ctx, d.GetString(), false)
val, err = ConvertUintToUint(val, upperBound, tp)
if err == nil {
err = err1
}
case KindMysqlTime:
dec := d.GetMysqlTime().ToNumber()
err = dec.Round(dec, 0, ModeHalfUp)
ival, err1 := dec.ToInt()
if err == nil {
err = err1
}
val, err1 = ConvertIntToUint(ctx.Flags(), ival, upperBound, tp)
if err == nil {
err = err1
}
case KindMysqlDuration:
dec := d.GetMysqlDuration().ToNumber()
err = dec.Round(dec, 0, ModeHalfUp)
var err1 error
val, err1 = ConvertDecimalToUint(dec, upperBound, tp)
if err == nil {
err = err1
}
case KindMysqlDecimal:
val, err = ConvertDecimalToUint(d.GetMysqlDecimal(), upperBound, tp)
case KindMysqlEnum:
val, err = ConvertFloatToUint(ctx.Flags(), d.GetMysqlEnum().ToNumber(), upperBound, tp)
case KindMysqlSet:
val, err = ConvertFloatToUint(ctx.Flags(), d.GetMysqlSet().ToNumber(), upperBound, tp)
case KindBinaryLiteral, KindMysqlBit:
val, err = d.GetBinaryLiteral().ToInt(ctx)
if err == nil {
val, err = ConvertUintToUint(val, upperBound, tp)
}
case KindMysqlJSON:
var i64 int64
i64, err = ConvertJSONToInt(ctx, d.GetMysqlJSON(), true, tp)
val = uint64(i64)
default:
return invalidConv(d, target.GetType())
}
ret.SetUint64(val)
if err != nil {
return ret, errors.Trace(err)
}
return ret, nil
}
func (d *Datum) convertToMysqlTimestamp(ctx Context, target *FieldType) (Datum, error) {
var (
ret Datum
t Time
err error
)
fsp := DefaultFsp
if target.GetDecimal() != UnspecifiedLength {
fsp = target.GetDecimal()
}
switch d.k {
case KindMysqlTime:
t, err = d.GetMysqlTime().Convert(ctx, target.GetType())
if err != nil {
// t might be an invalid Timestamp, but should still be comparable, since same representation (KindMysqlTime)
ret.SetMysqlTime(t)
return ret, errors.Trace(ErrWrongValue.GenWithStackByArgs(TimestampStr, t.String()))
}
t, err = t.RoundFrac(ctx, fsp)
case KindMysqlDuration:
t, err = d.GetMysqlDuration().ConvertToTime(ctx, mysql.TypeTimestamp)
if err != nil {
ret.SetMysqlTime(t)
return ret, errors.Trace(err)
}
t, err = t.RoundFrac(ctx, fsp)
case KindString, KindBytes:
t, err = ParseTime(ctx, d.GetString(), mysql.TypeTimestamp, fsp)
case KindInt64:
t, err = ParseTimeFromNum(ctx, d.GetInt64(), mysql.TypeTimestamp, fsp)
case KindMysqlDecimal:
t, err = ParseTimeFromFloatString(ctx, d.GetMysqlDecimal().String(), mysql.TypeTimestamp, fsp)
case KindMysqlJSON:
j := d.GetMysqlJSON()
var s string
s, err = j.Unquote()
if err != nil {
ret.SetMysqlTime(t)
return ret, err
}
t, err = ParseTime(ctx, s, mysql.TypeTimestamp, fsp)
default:
return invalidConv(d, mysql.TypeTimestamp)
}
t.SetType(mysql.TypeTimestamp)
ret.SetMysqlTime(t)
if err != nil {
return ret, errors.Trace(err)
}
return ret, nil
}
func (d *Datum) convertToMysqlTime(ctx Context, target *FieldType) (Datum, error) {
tp := target.GetType()
fsp := DefaultFsp
if target.GetDecimal() != UnspecifiedLength {
fsp = target.GetDecimal()
}
var (
ret Datum
t Time
err error
)
switch d.k {
case KindMysqlTime:
t, err = d.GetMysqlTime().Convert(ctx, tp)
if err != nil {
ret.SetMysqlTime(t)
return ret, errors.Trace(err)
}
t, err = t.RoundFrac(ctx, fsp)
case KindMysqlDuration:
t, err = d.GetMysqlDuration().ConvertToTime(ctx, tp)
if err != nil {
ret.SetMysqlTime(t)
return ret, errors.Trace(err)
}
t, err = t.RoundFrac(ctx, fsp)
case KindMysqlDecimal:
t, err = ParseTimeFromFloatString(ctx, d.GetMysqlDecimal().String(), tp, fsp)
case KindString, KindBytes:
t, err = ParseTime(ctx, d.GetString(), tp, fsp)
case KindInt64:
t, err = ParseTimeFromNum(ctx, d.GetInt64(), tp, fsp)
case KindUint64:
intOverflow64 := d.GetInt64() < 0
if intOverflow64 {
uNum := strconv.FormatUint(d.GetUint64(), 10)
t, err = ZeroDate, ErrWrongValue.GenWithStackByArgs(TimeStr, uNum)
} else {
t, err = ParseTimeFromNum(ctx, d.GetInt64(), tp, fsp)
}
case KindMysqlJSON:
j := d.GetMysqlJSON()
var s string
s, err = j.Unquote()
if err != nil {
ret.SetMysqlTime(t)
return ret, err
}
t, err = ParseTime(ctx, s, tp, fsp)
default:
return invalidConv(d, tp)
}
if tp == mysql.TypeDate {
// Truncate hh:mm:ss part if the type is Date.
t.SetCoreTime(FromDate(t.Year(), t.Month(), t.Day(), 0, 0, 0, 0))
}
ret.SetMysqlTime(t)
if err != nil {
return ret, errors.Trace(err)
}
return ret, nil
}
func (d *Datum) convertToMysqlDuration(typeCtx Context, target *FieldType) (Datum, error) {
tp := target.GetType()
fsp := DefaultFsp
if target.GetDecimal() != UnspecifiedLength {
fsp = target.GetDecimal()
}
var ret Datum
switch d.k {
case KindMysqlTime:
dur, err := d.GetMysqlTime().ConvertToDuration()
if err != nil {
ret.SetMysqlDuration(dur)
return ret, errors.Trace(err)
}
dur, err = dur.RoundFrac(fsp, typeCtx.Location())
ret.SetMysqlDuration(dur)
if err != nil {
return ret, errors.Trace(err)
}
case KindMysqlDuration:
dur, err := d.GetMysqlDuration().RoundFrac(fsp, typeCtx.Location())
ret.SetMysqlDuration(dur)
if err != nil {
return ret, errors.Trace(err)
}
case KindInt64, KindUint64, KindFloat32, KindFloat64, KindMysqlDecimal:
// TODO: We need a ParseDurationFromNum to avoid the cost of converting a num to string.
timeStr, err := d.ToString()
if err != nil {
return ret, errors.Trace(err)
}
timeNum, err := d.ToInt64(typeCtx)
if err != nil {
return ret, errors.Trace(err)
}
// For huge numbers(>'0001-00-00 00-00-00') try full DATETIME in ParseDuration.
if timeNum > MaxDuration && timeNum < 10000000000 {
// mysql return max in no strict sql mode.
ret.SetMysqlDuration(Duration{Duration: MaxTime, Fsp: 0})
return ret, ErrWrongValue.GenWithStackByArgs(TimeStr, timeStr)
}
if timeNum < -MaxDuration {
return ret, ErrWrongValue.GenWithStackByArgs(TimeStr, timeStr)
}
t, _, err := ParseDuration(typeCtx, timeStr, fsp)
ret.SetMysqlDuration(t)
if err != nil {
return ret, errors.Trace(err)
}
case KindString, KindBytes:
t, _, err := ParseDuration(typeCtx, d.GetString(), fsp)
ret.SetMysqlDuration(t)
if err != nil {
return ret, errors.Trace(err)
}
case KindMysqlJSON:
j := d.GetMysqlJSON()
s, err := j.Unquote()
if err != nil {
return ret, errors.Trace(err)
}
t, _, err := ParseDuration(typeCtx, s, fsp)
ret.SetMysqlDuration(t)
if err != nil {
return ret, errors.Trace(err)
}
default:
return invalidConv(d, tp)
}
return ret, nil
}
func (d *Datum) convertToMysqlDecimal(ctx Context, target *FieldType) (Datum, error) {
var ret Datum
ret.SetLength(target.GetFlen())
ret.SetFrac(target.GetDecimal())
var dec = &MyDecimal{}
var err error
switch d.k {
case KindInt64:
dec.FromInt(d.GetInt64())
case KindUint64:
dec.FromUint(d.GetUint64())
case KindFloat32, KindFloat64:
err = dec.FromFloat64(d.GetFloat64())
case KindString, KindBytes:
err = dec.FromString(d.GetBytes())
case KindMysqlDecimal:
*dec = *d.GetMysqlDecimal()
case KindMysqlTime:
dec = d.GetMysqlTime().ToNumber()
case KindMysqlDuration:
dec = d.GetMysqlDuration().ToNumber()
case KindMysqlEnum:
err = dec.FromFloat64(d.GetMysqlEnum().ToNumber())
case KindMysqlSet:
err = dec.FromFloat64(d.GetMysqlSet().ToNumber())
case KindBinaryLiteral, KindMysqlBit:
val, err1 := d.GetBinaryLiteral().ToInt(ctx)
err = err1
dec.FromUint(val)
case KindMysqlJSON:
f, err1 := ConvertJSONToDecimal(ctx, d.GetMysqlJSON())
if err1 != nil {
return ret, errors.Trace(err1)
}
dec = f
default:
return invalidConv(d, target.GetType())
}
dec1, err1 := ProduceDecWithSpecifiedTp(ctx, dec, target)
// If there is a error, dec1 may be nil.
if dec1 != nil {
dec = dec1
}
if err == nil && err1 != nil {
err = err1
}
if dec.negative && mysql.HasUnsignedFlag(target.GetFlag()) {
*dec = zeroMyDecimal
if err == nil {
err = ErrOverflow.GenWithStackByArgs("DECIMAL", fmt.Sprintf("(%d, %d)", target.GetFlen(), target.GetDecimal()))
}
}
ret.SetMysqlDecimal(dec)
return ret, err
}
// ProduceDecWithSpecifiedTp produces a new decimal according to `flen` and `decimal`.
func ProduceDecWithSpecifiedTp(ctx Context, dec *MyDecimal, tp *FieldType) (_ *MyDecimal, err error) {
flen, decimal := tp.GetFlen(), tp.GetDecimal()
if flen != UnspecifiedLength && decimal != UnspecifiedLength {
if flen < decimal {
return nil, ErrMBiggerThanD.GenWithStackByArgs("")
}
var old *MyDecimal
if int(dec.digitsFrac) > decimal {
old = new(MyDecimal)
*old = *dec
}
if int(dec.digitsFrac) != decimal {
// Error doesn't matter because the following code will check the new decimal
// and set error if any.
_ = dec.Round(dec, decimal, ModeHalfUp)
}
_, digitsInt := dec.removeLeadingZeros()
// After rounding decimal, the new decimal may have a longer integer length which may be longer than expected.
// So the check of integer length must be after rounding.
// E.g. "99.9999", flen 5, decimal 3, Round("99.9999", 3, ModelHalfUp) -> "100.000".
if flen-decimal < digitsInt {
// Integer length is longer, choose the max or min decimal.
dec = NewMaxOrMinDec(dec.IsNegative(), flen, decimal)
// select cast(111 as decimal(1)) causes a warning in MySQL.
err = ErrOverflow.GenWithStackByArgs("DECIMAL", fmt.Sprintf("(%d, %d)", flen, decimal))
} else if old != nil && dec.Compare(old) != 0 {
ctx.AppendWarning(ErrTruncatedWrongVal.FastGenByArgs("DECIMAL", old))
}
}
unsigned := mysql.HasUnsignedFlag(tp.GetFlag())
if unsigned && dec.IsNegative() {
dec = dec.FromUint(0)
}
return dec, err
}
// ConvertToMysqlYear converts a datum to MySQLYear.
func (d *Datum) ConvertToMysqlYear(ctx Context, target *FieldType) (Datum, error) {
var (
ret Datum
y int64
err error
adjust bool
)
switch d.k {
case KindString, KindBytes:
s := d.GetString()
trimS := strings.TrimSpace(s)
y, err = StrToInt(ctx, trimS, false)
if err != nil {
ret.SetInt64(0)
return ret, errors.Trace(err)
}
// condition:
// parsed to 0, not a string of length 4, the first valid char is a 0 digit
if len(s) != 4 && y == 0 && strings.HasPrefix(trimS, "0") {
adjust = true
}
case KindMysqlTime:
y = int64(d.GetMysqlTime().Year())
case KindMysqlDuration:
y, err = d.GetMysqlDuration().ConvertToYear(ctx)
case KindMysqlJSON:
y, err = ConvertJSONToInt64(ctx, d.GetMysqlJSON(), false)
if err != nil {
ret.SetInt64(0)
return ret, errors.Trace(err)
}
default:
ret, err = d.convertToInt(ctx, NewFieldType(mysql.TypeLonglong))
if err != nil {
_, err = invalidConv(d, target.GetType())
ret.SetInt64(0)
return ret, err
}
y = ret.GetInt64()
}
// Duration has been adjusted in `Duration.ConvertToYear()`
if d.k != KindMysqlDuration {
y, err = AdjustYear(y, adjust)
}
ret.SetInt64(y)
return ret, errors.Trace(err)
}
func (d *Datum) convertToMysqlBit(ctx Context, target *FieldType) (Datum, error) {
var ret Datum
var uintValue uint64
var err error
switch d.k {
case KindString, KindBytes:
uintValue, err = BinaryLiteral(d.b).ToInt(ctx)
case KindInt64:
// if input kind is int64 (signed), when trans to bit, we need to treat it as unsigned
d.k = KindUint64
fallthrough
default:
uintDatum, err1 := d.convertToUint(ctx, target)
uintValue, err = uintDatum.GetUint64(), err1
}
// Avoid byte size panic, never goto this branch.
if target.GetFlen() <= 0 || target.GetFlen() >= 128 {
return Datum{}, errors.Trace(ErrDataTooLong.GenWithStack("Data Too Long, field len %d", target.GetFlen()))
}
if target.GetFlen() < 64 && uintValue >= 1<<(uint64(target.GetFlen())) {
uintValue = (1 << (uint64(target.GetFlen()))) - 1
err = ErrDataTooLong.GenWithStack("Data Too Long, field len %d", target.GetFlen())
}
byteSize := (target.GetFlen() + 7) >> 3
ret.SetMysqlBit(NewBinaryLiteralFromUint(uintValue, byteSize))
return ret, errors.Trace(err)
}
func (d *Datum) convertToMysqlEnum(ctx Context, target *FieldType) (Datum, error) {
var (
ret Datum
e Enum
err error
)
switch d.k {
case KindString, KindBytes, KindBinaryLiteral:
e, err = ParseEnum(target.GetElems(), d.GetString(), target.GetCollate())
case KindMysqlEnum:
if d.i == 0 {
// MySQL enum zero value has an empty string name(Enum{Name: '', Value: 0}). It is
// different from the normal enum string value(Enum{Name: '', Value: n}, n > 0).
e = Enum{}
} else {
e, err = ParseEnum(target.GetElems(), d.GetMysqlEnum().Name, target.GetCollate())
}
case KindMysqlSet:
e, err = ParseEnum(target.GetElems(), d.GetMysqlSet().Name, target.GetCollate())
default:
var uintDatum Datum
uintDatum, err = d.convertToUint(ctx, target)
if err == nil {
e, err = ParseEnumValue(target.GetElems(), uintDatum.GetUint64())
} else {
err = errors.Wrap(ErrTruncated, "convert to MySQL enum failed: "+err.Error())
}
}
ret.SetMysqlEnum(e, target.GetCollate())
return ret, err
}
func (d *Datum) convertToMysqlSet(ctx Context, target *FieldType) (Datum, error) {
var (
ret Datum
s Set
err error
)
switch d.k {
case KindString, KindBytes, KindBinaryLiteral:
s, err = ParseSet(target.GetElems(), d.GetString(), target.GetCollate())
case KindMysqlEnum:
s, err = ParseSet(target.GetElems(), d.GetMysqlEnum().Name, target.GetCollate())
case KindMysqlSet:
s, err = ParseSet(target.GetElems(), d.GetMysqlSet().Name, target.GetCollate())
case KindVectorFloat32:
return invalidConv(d, mysql.TypeSet)
default:
var uintDatum Datum
uintDatum, err = d.convertToUint(ctx, target)
if err == nil {
s, err = ParseSetValue(target.GetElems(), uintDatum.GetUint64())
}
}
if err != nil {
err = errors.Wrap(ErrTruncated, "convert to MySQL set failed: "+err.Error())
}
ret.SetMysqlSet(s, target.GetCollate())
return ret, err
}
func (d *Datum) convertToMysqlJSON(_ *FieldType) (ret Datum, err error) {
switch d.k {
case KindString, KindBytes:
var j BinaryJSON
if j, err = ParseBinaryJSONFromString(d.GetString()); err == nil {
ret.SetMysqlJSON(j)
}
case KindMysqlSet, KindMysqlEnum:
var j BinaryJSON
var s string
if s, err = d.ToString(); err == nil {
if j, err = ParseBinaryJSONFromString(s); err == nil {
ret.SetMysqlJSON(j)
}
}
case KindInt64:
i64 := d.GetInt64()
ret.SetMysqlJSON(CreateBinaryJSON(i64))
case KindUint64:
u64 := d.GetUint64()
ret.SetMysqlJSON(CreateBinaryJSON(u64))
case KindFloat32, KindFloat64:
f64 := d.GetFloat64()
ret.SetMysqlJSON(CreateBinaryJSON(f64))
case KindMysqlDecimal:
var f64 float64
if f64, err = d.GetMysqlDecimal().ToFloat64(); err == nil {
ret.SetMysqlJSON(CreateBinaryJSON(f64))
}
case KindMysqlJSON:
ret = *d
case KindMysqlTime:
tm := d.GetMysqlTime()
ret.SetMysqlJSON(CreateBinaryJSON(tm))
case KindMysqlDuration:
dur := d.GetMysqlDuration()
ret.SetMysqlJSON(CreateBinaryJSON(dur))
case KindBinaryLiteral:
err = ErrInvalidJSONCharset.GenWithStackByArgs(charset.CharsetBin)
default:
var s string
if s, err = d.ToString(); err == nil {
// TODO: fix precision of MysqlTime. For example,
// On MySQL 5.7 CAST(NOW() AS JSON) -> "2011-11-11 11:11:11.111111",
// But now we can only return "2011-11-11 11:11:11".
ret.SetMysqlJSON(CreateBinaryJSON(s))
}
}
return ret, errors.Trace(err)
}
func (d *Datum) convertToVectorFloat32(_ Context, target *FieldType) (ret Datum, err error) {
switch d.k {
case KindVectorFloat32:
v := d.GetVectorFloat32()
if err = v.CheckDimsFitColumn(target.GetFlen()); err != nil {
return ret, errors.Trace(err)
}
ret = *d
case KindString, KindBytes:
var v VectorFloat32
if v, err = ParseVectorFloat32(d.GetString()); err != nil {
return ret, errors.Trace(err)
}
if err = v.CheckDimsFitColumn(target.GetFlen()); err != nil {
return ret, errors.Trace(err)
}
ret.SetVectorFloat32(v)
default:
return invalidConv(d, mysql.TypeTiDBVectorFloat32)
}
return ret, errors.Trace(err)
}
// ToBool converts to a bool.
// We will use 1 for true, and 0 for false.
func (d *Datum) ToBool(ctx Context) (int64, error) {
var err error
isZero := false
switch d.Kind() {
case KindInt64:
isZero = d.GetInt64() == 0
case KindUint64:
isZero = d.GetUint64() == 0
case KindFloat32:
isZero = d.GetFloat64() == 0
case KindFloat64:
isZero = d.GetFloat64() == 0
case KindString, KindBytes:
iVal, err1 := StrToFloat(ctx, d.GetString(), false)
isZero, err = iVal == 0, err1
case KindMysqlTime:
isZero = d.GetMysqlTime().IsZero()
case KindMysqlDuration:
isZero = d.GetMysqlDuration().Duration == 0
case KindMysqlDecimal:
isZero = d.GetMysqlDecimal().IsZero()
case KindMysqlEnum:
isZero = d.GetMysqlEnum().ToNumber() == 0
case KindMysqlSet:
isZero = d.GetMysqlSet().ToNumber() == 0
case KindBinaryLiteral, KindMysqlBit:
val, err1 := d.GetBinaryLiteral().ToInt(ctx)
isZero, err = val == 0, err1
case KindMysqlJSON:
val := d.GetMysqlJSON()
isZero = val.IsZero()
case KindVectorFloat32:
isZero = d.GetVectorFloat32().IsZeroValue()
default:
return 0, errors.Errorf("cannot convert %v(type %T) to bool", d.GetValue(), d.GetValue())
}
var ret int64
if isZero {
ret = 0
} else {
ret = 1
}
if err != nil {
return ret, errors.Trace(err)
}
return ret, nil
}
// ConvertDatumToDecimal converts datum to decimal.
func ConvertDatumToDecimal(ctx Context, d Datum) (*MyDecimal, error) {
dec := new(MyDecimal)
var err error
switch d.Kind() {
case KindInt64:
dec.FromInt(d.GetInt64())
case KindUint64:
dec.FromUint(d.GetUint64())
case KindFloat32:
err = dec.FromFloat64(float64(d.GetFloat32()))
case KindFloat64:
err = dec.FromFloat64(d.GetFloat64())
case KindString:
err = ctx.HandleTruncate(dec.FromString(d.GetBytes()))
case KindMysqlDecimal:
*dec = *d.GetMysqlDecimal()
case KindMysqlEnum:
dec.FromUint(d.GetMysqlEnum().Value)
case KindMysqlSet:
dec.FromUint(d.GetMysqlSet().Value)
case KindBinaryLiteral, KindMysqlBit:
val, err1 := d.GetBinaryLiteral().ToInt(ctx)
dec.FromUint(val)
err = err1
case KindMysqlJSON:
f, err1 := ConvertJSONToDecimal(ctx, d.GetMysqlJSON())
if err1 != nil {
return nil, errors.Trace(err1)
}
dec = f
default:
err = errors.Errorf("can't convert %v to decimal", d.GetValue())
}
return dec, errors.Trace(err)
}
// ToDecimal converts to a decimal.
func (d *Datum) ToDecimal(ctx Context) (*MyDecimal, error) {
switch d.Kind() {
case KindMysqlTime:
return d.GetMysqlTime().ToNumber(), nil
case KindMysqlDuration:
return d.GetMysqlDuration().ToNumber(), nil
default:
return ConvertDatumToDecimal(ctx, *d)
}
}
// ToInt64 converts to a int64.
func (d *Datum) ToInt64(ctx Context) (int64, error) {
if d.Kind() == KindMysqlBit {
uintVal, err := d.GetBinaryLiteral().ToInt(ctx)
return int64(uintVal), err
}
return d.toSignedInteger(ctx, mysql.TypeLonglong)
}
func (d *Datum) toSignedInteger(ctx Context, tp byte) (int64, error) {
lowerBound := IntegerSignedLowerBound(tp)
upperBound := IntegerSignedUpperBound(tp)
switch d.Kind() {
case KindInt64:
return ConvertIntToInt(d.GetInt64(), lowerBound, upperBound, tp)
case KindUint64:
return ConvertUintToInt(d.GetUint64(), upperBound, tp)
case KindFloat32:
return ConvertFloatToInt(float64(d.GetFloat32()), lowerBound, upperBound, tp)
case KindFloat64:
return ConvertFloatToInt(d.GetFloat64(), lowerBound, upperBound, tp)
case KindString, KindBytes:
iVal, err := StrToInt(ctx, d.GetString(), false)
iVal, err2 := ConvertIntToInt(iVal, lowerBound, upperBound, tp)
if err == nil {
err = err2
}
return iVal, errors.Trace(err)
case KindMysqlTime:
// 2011-11-10 11:11:11.999999 -> 20111110111112
// 2011-11-10 11:59:59.999999 -> 20111110120000
t, err := d.GetMysqlTime().RoundFrac(ctx, DefaultFsp)
if err != nil {
return 0, errors.Trace(err)
}
ival, err := t.ToNumber().ToInt()
ival, err2 := ConvertIntToInt(ival, lowerBound, upperBound, tp)
if err == nil {
err = err2
}
return ival, errors.Trace(err)
case KindMysqlDuration:
// 11:11:11.999999 -> 111112
// 11:59:59.999999 -> 120000
dur, err := d.GetMysqlDuration().RoundFrac(DefaultFsp, ctx.Location())
if err != nil {
return 0, errors.Trace(err)
}
ival, err := dur.ToNumber().ToInt()
ival, err2 := ConvertIntToInt(ival, lowerBound, upperBound, tp)
if err == nil {
err = err2
}
return ival, errors.Trace(err)
case KindMysqlDecimal:
var to MyDecimal
err := d.GetMysqlDecimal().Round(&to, 0, ModeHalfUp)
ival, err1 := to.ToInt()
if err == nil {
err = err1
}
ival, err2 := ConvertIntToInt(ival, lowerBound, upperBound, tp)
if err == nil {
err = err2
}
return ival, errors.Trace(err)
case KindMysqlEnum:
fval := d.GetMysqlEnum().ToNumber()
return ConvertFloatToInt(fval, lowerBound, upperBound, tp)
case KindMysqlSet:
fval := d.GetMysqlSet().ToNumber()
return ConvertFloatToInt(fval, lowerBound, upperBound, tp)
case KindMysqlJSON:
return ConvertJSONToInt(ctx, d.GetMysqlJSON(), false, tp)
case KindBinaryLiteral, KindMysqlBit:
val, err := d.GetBinaryLiteral().ToInt(ctx)
if err != nil {
return 0, errors.Trace(err)
}
ival, err := ConvertUintToInt(val, upperBound, tp)
return ival, errors.Trace(err)
default:
return 0, errors.Errorf("cannot convert %v(type %T) to int64", d.GetValue(), d.GetValue())
}
}
// ToFloat64 converts to a float64
func (d *Datum) ToFloat64(ctx Context) (float64, error) {
switch d.Kind() {
case KindInt64:
return float64(d.GetInt64()), nil
case KindUint64:
return float64(d.GetUint64()), nil
case KindFloat32:
return float64(d.GetFloat32()), nil
case KindFloat64:
return d.GetFloat64(), nil
case KindString:
return StrToFloat(ctx, d.GetString(), false)
case KindBytes:
return StrToFloat(ctx, string(d.GetBytes()), false)
case KindMysqlTime:
f, err := d.GetMysqlTime().ToNumber().ToFloat64()
return f, errors.Trace(err)
case KindMysqlDuration:
f, err := d.GetMysqlDuration().ToNumber().ToFloat64()
return f, errors.Trace(err)
case KindMysqlDecimal:
f, err := d.GetMysqlDecimal().ToFloat64()
return f, errors.Trace(err)
case KindMysqlEnum:
return d.GetMysqlEnum().ToNumber(), nil
case KindMysqlSet:
return d.GetMysqlSet().ToNumber(), nil
case KindBinaryLiteral, KindMysqlBit:
val, err := d.GetBinaryLiteral().ToInt(ctx)
return float64(val), errors.Trace(err)
case KindMysqlJSON:
f, err := ConvertJSONToFloat(ctx, d.GetMysqlJSON())
return f, errors.Trace(err)
default:
return 0, errors.Errorf("cannot convert %v(type %T) to float64", d.GetValue(), d.GetValue())
}
}
// ToString gets the string representation of the datum.
func (d *Datum) ToString() (string, error) {
switch d.Kind() {
case KindInt64:
return strconv.FormatInt(d.GetInt64(), 10), nil
case KindUint64:
return strconv.FormatUint(d.GetUint64(), 10), nil
case KindFloat32:
return strconv.FormatFloat(float64(d.GetFloat32()), 'f', -1, 32), nil
case KindFloat64:
return strconv.FormatFloat(d.GetFloat64(), 'f', -1, 64), nil
case KindString:
return d.GetString(), nil
case KindBytes:
return d.GetString(), nil
case KindMysqlTime:
return d.GetMysqlTime().String(), nil
case KindMysqlDuration:
return d.GetMysqlDuration().String(), nil
case KindMysqlDecimal:
return d.GetMysqlDecimal().String(), nil
case KindMysqlEnum:
return d.GetMysqlEnum().String(), nil
case KindMysqlSet:
return d.GetMysqlSet().String(), nil
case KindMysqlJSON:
return d.GetMysqlJSON().String(), nil
case KindBinaryLiteral, KindMysqlBit:
return d.GetBinaryLiteral().ToString(), nil
case KindVectorFloat32:
return d.GetVectorFloat32().String(), nil
case KindNull:
return "", nil
default:
return "", errors.Errorf("cannot convert %v(type %T) to string", d.GetValue(), d.GetValue())
}
}
// ToBytes gets the bytes representation of the datum.
func (d *Datum) ToBytes() ([]byte, error) {
switch d.k {
case KindString, KindBytes:
return d.GetBytes(), nil
default:
str, err := d.ToString()
if err != nil {
return nil, errors.Trace(err)
}
return []byte(str), nil
}
}
// ToHashKey gets the bytes representation of the datum considering collation.
func (d *Datum) ToHashKey() ([]byte, error) {
switch d.k {
case KindString, KindBytes:
return collate.GetCollator(d.Collation()).Key(d.GetString()), nil
default:
str, err := d.ToString()
if err != nil {
return nil, errors.Trace(err)
}
return collate.GetCollator(d.Collation()).Key(str), nil
}
}
// ToMysqlJSON is similar to convertToMysqlJSON, except the
// latter parses from string, but the former uses it as primitive.
func (d *Datum) ToMysqlJSON() (j BinaryJSON, err error) {
var in any
switch d.Kind() {
case KindMysqlJSON:
j = d.GetMysqlJSON()
return
case KindInt64:
in = d.GetInt64()
case KindUint64:
in = d.GetUint64()
case KindFloat32, KindFloat64:
in = d.GetFloat64()
case KindMysqlDecimal:
in, err = d.GetMysqlDecimal().ToFloat64()
case KindString, KindBytes:
in = d.GetString()
case KindBinaryLiteral, KindMysqlBit:
in = d.GetBinaryLiteral().ToString()
case KindNull:
in = nil
case KindMysqlTime:
in = d.GetMysqlTime()
case KindMysqlDuration:
in = d.GetMysqlDuration()
default:
in, err = d.ToString()
}
if err != nil {
err = errors.Trace(err)
return
}
j = CreateBinaryJSON(in)
return
}
// MemUsage gets the memory usage of datum.
func (d *Datum) MemUsage() (sum int64) {
// d.x is not considered now since MemUsage is now only used by analyze samples which is bytesDatum
return EmptyDatumSize + int64(cap(d.b)) + int64(len(d.collation))
}
type jsonDatum struct {
K byte `json:"k"`
Decimal uint16 `json:"decimal,omitempty"`
Length uint32 `json:"length,omitempty"`
I int64 `json:"i,omitempty"`
Collation string `json:"collation,omitempty"`
B []byte `json:"b,omitempty"`
Time Time `json:"time,omitempty"`
MyDecimal *MyDecimal `json:"mydecimal,omitempty"`
}
// MarshalJSON implements Marshaler.MarshalJSON interface.
func (d *Datum) MarshalJSON() ([]byte, error) {
jd := &jsonDatum{
K: d.k,
Decimal: d.decimal,
Length: d.length,
I: d.i,
Collation: d.collation,
B: d.b,
}
switch d.k {
case KindMysqlTime:
jd.Time = d.GetMysqlTime()
case KindMysqlDecimal:
jd.MyDecimal = d.GetMysqlDecimal()
default:
if d.x != nil {
return nil, fmt.Errorf("unsupported type: %d", d.k)
}
}
return gjson.Marshal(jd)
}
// UnmarshalJSON implements Unmarshaler.UnmarshalJSON interface.
func (d *Datum) UnmarshalJSON(data []byte) error {
var jd jsonDatum
if err := gjson.Unmarshal(data, &jd); err != nil {
return err
}
d.k = jd.K
d.decimal = jd.Decimal
d.length = jd.Length
d.i = jd.I
d.collation = jd.Collation
d.b = jd.B
switch jd.K {
case KindMysqlTime:
d.SetMysqlTime(jd.Time)
case KindMysqlDecimal:
d.SetMysqlDecimal(jd.MyDecimal)
}
return nil
}
func invalidConv(d *Datum, tp byte) (Datum, error) {
return Datum{}, errors.Errorf("cannot convert datum from %s to type %s", KindStr(d.Kind()), TypeStr(tp))
}
// NewDatum creates a new Datum from an interface{}.
func NewDatum(in any) (d Datum) {
switch x := in.(type) {
case []any:
d.SetValueWithDefaultCollation(MakeDatums(x...))
default:
d.SetValueWithDefaultCollation(in)
}
return d
}
// NewIntDatum creates a new Datum from an int64 value.
func NewIntDatum(i int64) (d Datum) {
d.SetInt64(i)
return d
}
// NewUintDatum creates a new Datum from an uint64 value.
func NewUintDatum(i uint64) (d Datum) {
d.SetUint64(i)
return d
}
// NewBytesDatum creates a new Datum from a byte slice.
func NewBytesDatum(b []byte) (d Datum) {
d.SetBytes(b)
return d
}
// NewStringDatum creates a new Datum from a string.
func NewStringDatum(s string) (d Datum) {
d.SetString(s, mysql.DefaultCollationName)
return d
}
// NewCollationStringDatum creates a new Datum from a string with collation.
func NewCollationStringDatum(s string, collation string) (d Datum) {
d.SetString(s, collation)
return d
}
// NewFloat64Datum creates a new Datum from a float64 value.
func NewFloat64Datum(f float64) (d Datum) {
d.SetFloat64(f)
return d
}
// NewFloat32Datum creates a new Datum from a float32 value.
func NewFloat32Datum(f float32) (d Datum) {
d.SetFloat32(f)
return d
}
// NewDurationDatum creates a new Datum from a Duration value.
func NewDurationDatum(dur Duration) (d Datum) {
d.SetMysqlDuration(dur)
return d
}
// NewTimeDatum creates a new Time from a Time value.
func NewTimeDatum(t Time) (d Datum) {
d.SetMysqlTime(t)
return d
}
// NewDecimalDatum creates a new Datum from a MyDecimal value.
func NewDecimalDatum(dec *MyDecimal) (d Datum) {
d.SetMysqlDecimal(dec)
return d
}
// NewJSONDatum creates a new Datum from a BinaryJSON value
func NewJSONDatum(j BinaryJSON) (d Datum) {
d.SetMysqlJSON(j)
return d
}
// NewVectorFloat32Datum creates a new Datum from a VectorFloat32 value
func NewVectorFloat32Datum(v VectorFloat32) (d Datum) {
d.SetVectorFloat32(v)
return d
}
// NewBinaryLiteralDatum creates a new BinaryLiteral Datum for a BinaryLiteral value.
func NewBinaryLiteralDatum(b BinaryLiteral) (d Datum) {
d.SetBinaryLiteral(b)
return d
}
// NewMysqlBitDatum creates a new MysqlBit Datum for a BinaryLiteral value.
func NewMysqlBitDatum(b BinaryLiteral) (d Datum) {
d.SetMysqlBit(b)
return d
}
// NewMysqlEnumDatum creates a new MysqlEnum Datum for a Enum value.
func NewMysqlEnumDatum(e Enum) (d Datum) {
d.SetMysqlEnum(e, mysql.DefaultCollationName)
return d
}
// NewCollateMysqlEnumDatum create a new MysqlEnum Datum for a Enum value with collation information.
func NewCollateMysqlEnumDatum(e Enum, collation string) (d Datum) {
d.SetMysqlEnum(e, collation)
return d
}
// NewMysqlSetDatum creates a new MysqlSet Datum for a Enum value.
func NewMysqlSetDatum(e Set, collation string) (d Datum) {
d.SetMysqlSet(e, collation)
return d
}
// MakeDatums creates datum slice from interfaces.
func MakeDatums(args ...any) []Datum {
datums := make([]Datum, len(args))
for i, v := range args {
datums[i] = NewDatum(v)
}
return datums
}
// MinNotNullDatum returns a datum represents minimum not null value.
func MinNotNullDatum() Datum {
return Datum{k: KindMinNotNull}
}
// MaxValueDatum returns a datum represents max value.
func MaxValueDatum() Datum {
return Datum{k: KindMaxValue}
}
// SortDatums sorts a slice of datum.
func SortDatums(ctx Context, datums []Datum) error {
var err error
slices.SortFunc(datums, func(a, b Datum) int {
var cmp int
cmp, err = a.Compare(ctx, &b, collate.GetCollator(b.Collation()))
if err != nil {
return 0
}
return cmp
})
if err != nil {
err = errors.Trace(err)
}
return err
}
// DatumsToString converts several datums to formatted string.
func DatumsToString(datums []Datum, handleSpecialValue bool) (string, error) {
n := len(datums)
builder := &strings.Builder{}
builder.Grow(8 * n)
if n > 1 {
builder.WriteString("(")
}
for i, datum := range datums {
if i > 0 {
builder.WriteString(", ")
}
if handleSpecialValue {
switch datum.Kind() {
case KindNull:
builder.WriteString("NULL")
continue
case KindMinNotNull:
builder.WriteString("-inf")
continue
case KindMaxValue:
builder.WriteString("+inf")
continue
}
}
str, err := datum.ToString()
if err != nil {
return "", errors.Trace(err)
}
const logDatumLen = 2048
originalLen := -1
if len(str) > logDatumLen {
originalLen = len(str)
str = str[:logDatumLen]
}
if datum.Kind() == KindString {
builder.WriteString(`"`)
builder.WriteString(str)
builder.WriteString(`"`)
} else {
builder.WriteString(str)
}
if originalLen != -1 {
builder.WriteString(" len(")
builder.WriteString(strconv.Itoa(originalLen))
builder.WriteString(")")
}
}
if n > 1 {
builder.WriteString(")")
}
return builder.String(), nil
}
// DatumsToStrNoErr converts some datums to a formatted string.
// If an error occurs, it will print a log instead of returning an error.
func DatumsToStrNoErr(datums []Datum) string {
str, err := DatumsToString(datums, true)
terror.Log(errors.Trace(err))
return str
}
// CloneRow deep copies a Datum slice.
func CloneRow(dr []Datum) []Datum {
c := make([]Datum, len(dr))
for i, d := range dr {
d.Copy(&c[i])
}
return c
}
// GetMaxValue returns the max value datum for each type.
func GetMaxValue(ft *FieldType) (maxVal Datum) {
switch ft.GetType() {
case mysql.TypeTiny, mysql.TypeShort, mysql.TypeInt24, mysql.TypeLong, mysql.TypeLonglong:
if mysql.HasUnsignedFlag(ft.GetFlag()) {
maxVal.SetUint64(IntegerUnsignedUpperBound(ft.GetType()))
} else {
maxVal.SetInt64(IntegerSignedUpperBound(ft.GetType()))
}
case mysql.TypeFloat:
maxVal.SetFloat32(float32(GetMaxFloat(ft.GetFlen(), ft.GetDecimal())))
case mysql.TypeDouble:
maxVal.SetFloat64(GetMaxFloat(ft.GetFlen(), ft.GetDecimal()))
case mysql.TypeString, mysql.TypeVarString, mysql.TypeVarchar, mysql.TypeBlob, mysql.TypeTinyBlob, mysql.TypeMediumBlob, mysql.TypeLongBlob:
// codec.Encode KindMaxValue, to avoid import circle
bytes := []byte{250}
maxVal.SetString(string(bytes), ft.GetCollate())
case mysql.TypeNewDecimal:
maxVal.SetMysqlDecimal(NewMaxOrMinDec(false, ft.GetFlen(), ft.GetDecimal()))
case mysql.TypeDuration:
maxVal.SetMysqlDuration(Duration{Duration: MaxTime})
case mysql.TypeDate, mysql.TypeDatetime, mysql.TypeTimestamp:
if ft.GetType() == mysql.TypeDate || ft.GetType() == mysql.TypeDatetime {
maxVal.SetMysqlTime(NewTime(MaxDatetime, ft.GetType(), 0))
} else {
maxVal.SetMysqlTime(MaxTimestamp)
}
}
return
}
// GetMinValue returns the min value datum for each type.
func GetMinValue(ft *FieldType) (minVal Datum) {
switch ft.GetType() {
case mysql.TypeTiny, mysql.TypeShort, mysql.TypeInt24, mysql.TypeLong, mysql.TypeLonglong:
if mysql.HasUnsignedFlag(ft.GetFlag()) {
minVal.SetUint64(0)
} else {
minVal.SetInt64(IntegerSignedLowerBound(ft.GetType()))
}
case mysql.TypeFloat:
minVal.SetFloat32(float32(-GetMaxFloat(ft.GetFlen(), ft.GetDecimal())))
case mysql.TypeDouble:
minVal.SetFloat64(-GetMaxFloat(ft.GetFlen(), ft.GetDecimal()))
case mysql.TypeString, mysql.TypeVarString, mysql.TypeVarchar, mysql.TypeBlob, mysql.TypeTinyBlob, mysql.TypeMediumBlob, mysql.TypeLongBlob:
// codec.Encode KindMinNotNull, to avoid import circle
bytes := []byte{1}
minVal.SetString(string(bytes), ft.GetCollate())
case mysql.TypeNewDecimal:
minVal.SetMysqlDecimal(NewMaxOrMinDec(true, ft.GetFlen(), ft.GetDecimal()))
case mysql.TypeDuration:
minVal.SetMysqlDuration(Duration{Duration: MinTime})
case mysql.TypeDate, mysql.TypeDatetime, mysql.TypeTimestamp:
if ft.GetType() == mysql.TypeDate || ft.GetType() == mysql.TypeDatetime {
minVal.SetMysqlTime(NewTime(MinDatetime, ft.GetType(), 0))
} else {
minVal.SetMysqlTime(MinTimestamp)
}
}
return
}
// RoundingType is used to indicate the rounding type for reversing evaluation.
type RoundingType uint8
const (
// Ceiling means rounding up.
Ceiling RoundingType = iota
// Floor means rounding down.
Floor
)
func getDatumBound(retType *FieldType, rType RoundingType) Datum {
if rType == Ceiling {
return GetMaxValue(retType)
}
return GetMinValue(retType)
}
// ChangeReverseResultByUpperLowerBound is for expression's reverse evaluation.
// Here is an example for what's effort for the function: CastRealAsInt(t.a),
//
// if the type of column `t.a` is mysql.TypeDouble, and there is a row that t.a == MaxFloat64
// then the cast function will arrive a result MaxInt64. But when we do the reverse evaluation,
// if the result is MaxInt64, and the rounding type is ceiling. Then we should get the MaxFloat64
// instead of float64(MaxInt64).
//
// Another example: cast(1.1 as signed) = 1,
//
// when we get the answer 1, we can only reversely evaluate 1.0 as the column value. So in this
// case, we should judge whether the rounding type are ceiling. If it is, then we should plus one for
// 1.0 and get the reverse result 2.0.
func ChangeReverseResultByUpperLowerBound(
ctx Context,
retType *FieldType,
res Datum,
rType RoundingType) (Datum, error) {
d, err := res.ConvertTo(ctx, retType)
if terror.ErrorEqual(err, ErrOverflow) {
return d, nil
}
if err != nil {
return d, err
}
resRetType := FieldType{}
switch res.Kind() {
case KindInt64:
resRetType.SetType(mysql.TypeLonglong)
case KindUint64:
resRetType.SetType(mysql.TypeLonglong)
resRetType.AddFlag(mysql.UnsignedFlag)
case KindFloat32:
resRetType.SetType(mysql.TypeFloat)
case KindFloat64:
resRetType.SetType(mysql.TypeDouble)
case KindMysqlDecimal:
resRetType.SetType(mysql.TypeNewDecimal)
resRetType.SetFlenUnderLimit(int(res.GetMysqlDecimal().GetDigitsFrac() + res.GetMysqlDecimal().GetDigitsInt()))
resRetType.SetDecimalUnderLimit(int(res.GetMysqlDecimal().GetDigitsInt()))
}
bound := getDatumBound(&resRetType, rType)
cmp, err := d.Compare(ctx, &bound, collate.GetCollator(resRetType.GetCollate()))
if err != nil {
return d, err
}
if cmp == 0 {
d = getDatumBound(retType, rType)
} else if rType == Ceiling {
switch retType.GetType() {
case mysql.TypeShort:
if mysql.HasUnsignedFlag(retType.GetFlag()) {
if d.GetUint64() != math.MaxUint16 {
d.SetUint64(d.GetUint64() + 1)
}
} else {
if d.GetInt64() != math.MaxInt16 {
d.SetInt64(d.GetInt64() + 1)
}
}
case mysql.TypeLong:
if mysql.HasUnsignedFlag(retType.GetFlag()) {
if d.GetUint64() != math.MaxUint32 {
d.SetUint64(d.GetUint64() + 1)
}
} else {
if d.GetInt64() != math.MaxInt32 {
d.SetInt64(d.GetInt64() + 1)
}
}
case mysql.TypeLonglong:
if mysql.HasUnsignedFlag(retType.GetFlag()) {
if d.GetUint64() != math.MaxUint64 {
d.SetUint64(d.GetUint64() + 1)
}
} else {
if d.GetInt64() != math.MaxInt64 {
d.SetInt64(d.GetInt64() + 1)
}
}
case mysql.TypeFloat:
if d.GetFloat32() != math.MaxFloat32 {
d.SetFloat32(d.GetFloat32() + 1.0)
}
case mysql.TypeDouble:
if d.GetFloat64() != math.MaxFloat64 {
d.SetFloat64(d.GetFloat64() + 1.0)
}
case mysql.TypeNewDecimal:
if d.GetMysqlDecimal().Compare(NewMaxOrMinDec(false, retType.GetFlen(), retType.GetDecimal())) != 0 {
var decimalOne, newD MyDecimal
one := decimalOne.FromInt(1)
err = DecimalAdd(d.GetMysqlDecimal(), one, &newD)
if err != nil {
return d, err
}
d = NewDecimalDatum(&newD)
}
}
}
return d, nil
}
const (
sizeOfEmptyDatum = int(unsafe.Sizeof(Datum{}))
sizeOfMysqlTime = int(unsafe.Sizeof(ZeroTime))
sizeOfMyDecimal = MyDecimalStructSize
)
// EstimatedMemUsage returns the estimated bytes consumed of a one-dimensional
// or two-dimensional datum array.
func EstimatedMemUsage(array []Datum, numOfRows int) int64 {
if numOfRows == 0 {
return 0
}
var bytesConsumed int64
for _, d := range array {
bytesConsumed += d.EstimatedMemUsage()
}
return bytesConsumed * int64(numOfRows)
}
// EstimatedMemUsage returns the estimated bytes consumed of a Datum.
func (d Datum) EstimatedMemUsage() int64 {
bytesConsumed := sizeOfEmptyDatum
switch d.Kind() {
case KindMysqlDecimal:
bytesConsumed += sizeOfMyDecimal
case KindMysqlTime:
bytesConsumed += sizeOfMysqlTime
case KindVectorFloat32:
bytesConsumed += d.GetVectorFloat32().EstimatedMemUsage()
default:
bytesConsumed += len(d.b)
}
return int64(bytesConsumed)
}
// DatumsContainNull return true if any value is null
func DatumsContainNull(vals []Datum) bool {
for _, val := range vals {
if val.IsNull() {
return true
}
}
return false
}
// Copyright 2016 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package types
import (
"github.com/pingcap/errors"
"github.com/pingcap/tidb/pkg/parser/opcode"
)
// ComputePlus computes the result of a+b.
func ComputePlus(a, b Datum) (d Datum, err error) {
switch a.Kind() {
case KindInt64:
switch b.Kind() {
case KindInt64:
r, err1 := AddInt64(a.GetInt64(), b.GetInt64())
d.SetInt64(r)
return d, errors.Trace(err1)
case KindUint64:
r, err1 := AddInteger(b.GetUint64(), a.GetInt64())
d.SetUint64(r)
return d, errors.Trace(err1)
}
case KindUint64:
switch b.Kind() {
case KindInt64:
r, err1 := AddInteger(a.GetUint64(), b.GetInt64())
d.SetUint64(r)
return d, errors.Trace(err1)
case KindUint64:
r, err1 := AddUint64(a.GetUint64(), b.GetUint64())
d.SetUint64(r)
return d, errors.Trace(err1)
}
case KindFloat64:
if b.Kind() == KindFloat64 {
r := a.GetFloat64() + b.GetFloat64()
d.SetFloat64(r)
return d, nil
}
case KindMysqlDecimal:
if b.Kind() == KindMysqlDecimal {
r := new(MyDecimal)
err = DecimalAdd(a.GetMysqlDecimal(), b.GetMysqlDecimal(), r)
d.SetMysqlDecimal(r)
d.SetFrac(max(a.Frac(), b.Frac()))
return d, err
}
}
_, err = InvOp2(a.GetValue(), b.GetValue(), opcode.Plus)
return d, err
}
// Copyright 2015 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package types
import (
"fmt"
"strconv"
"github.com/pingcap/errors"
"github.com/pingcap/tidb/pkg/util/collate"
"github.com/pingcap/tidb/pkg/util/stringutil"
)
// Enum is for MySQL enum type.
type Enum struct {
Name string
Value uint64
}
// Copy deep copy an Enum.
func (e Enum) Copy() Enum {
return Enum{
Name: stringutil.Copy(e.Name),
Value: e.Value,
}
}
// String implements fmt.Stringer interface.
func (e Enum) String() string {
return e.Name
}
// ToNumber changes enum index to float64 for numeric operation.
func (e Enum) ToNumber() float64 {
return float64(e.Value)
}
// ParseEnum creates a Enum with item name or value.
func ParseEnum(elems []string, name string, collation string) (Enum, error) {
if enumName, err := ParseEnumName(elems, name, collation); err == nil {
return enumName, nil
}
// name doesn't exist, maybe an integer?
if num, err := strconv.ParseUint(name, 0, 64); err == nil {
return ParseEnumValue(elems, num)
}
errMsg := fmt.Sprintf("convert to MySQL enum failed: item %s is not in enum %v", name, elems)
return Enum{}, errors.Wrap(ErrTruncated, errMsg)
}
// ParseEnumName creates a Enum with item name.
func ParseEnumName(elems []string, name string, collation string) (Enum, error) {
ctor := collate.GetCollator(collation)
for i, n := range elems {
if ctor.Compare(n, name) == 0 {
return Enum{Name: n, Value: uint64(i) + 1}, nil
}
}
errMsg := fmt.Sprintf("convert to MySQL enum failed: item %s is not in enum %v", name, elems)
return Enum{}, errors.Wrap(ErrTruncated, errMsg)
}
// ParseEnumValue creates a Enum with special number.
func ParseEnumValue(elems []string, number uint64) (Enum, error) {
if number == 0 || number > uint64(len(elems)) {
errMsg := fmt.Sprintf("convert to MySQL enum failed: number %d overflow enum boundary [1, %d]", number, len(elems))
return Enum{}, errors.Wrap(ErrTruncated, errMsg)
}
return Enum{Name: elems[number-1], Value: number}, nil
}
// Copyright 2015 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// Copyright 2014 The ql Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSES/QL-LICENSE file.
package types
import (
"io"
"github.com/pingcap/errors"
"github.com/pingcap/tidb/pkg/parser/charset"
"github.com/pingcap/tidb/pkg/parser/mysql"
"github.com/pingcap/tidb/pkg/parser/opcode"
"github.com/pingcap/tidb/pkg/parser/terror"
ast "github.com/pingcap/tidb/pkg/parser/types"
"github.com/pingcap/tidb/pkg/util/collate"
)
// IsTypeBlob returns a boolean indicating whether the tp is a blob type.
var IsTypeBlob = ast.IsTypeBlob
// IsTypeChar returns a boolean indicating
// whether the tp is the char type like a string type or a varchar type.
var IsTypeChar = ast.IsTypeChar
// IsTypeVector returns whether tp is a vector type.
var IsTypeVector = ast.IsTypeVector
// IsTypeVarchar returns a boolean indicating
// whether the tp is the varchar type like a varstring type or a varchar type.
func IsTypeVarchar(tp byte) bool {
return tp == mysql.TypeVarString || tp == mysql.TypeVarchar
}
// IsTypeUnspecified returns a boolean indicating whether the tp is the Unspecified type.
func IsTypeUnspecified(tp byte) bool {
return tp == mysql.TypeUnspecified
}
// IsTypePrefixable returns a boolean indicating
// whether an index on a column with the tp can be defined with a prefix.
func IsTypePrefixable(tp byte) bool {
return IsTypeBlob(tp) || IsTypeChar(tp)
}
// IsTypeFractionable returns a boolean indicating
// whether the tp can has time fraction.
func IsTypeFractionable(tp byte) bool {
return tp == mysql.TypeDatetime || tp == mysql.TypeDuration || tp == mysql.TypeTimestamp
}
// IsTypeTime returns a boolean indicating
// whether the tp is time type like datetime, date or timestamp.
func IsTypeTime(tp byte) bool {
return tp == mysql.TypeDatetime || tp == mysql.TypeDate || tp == mysql.TypeTimestamp
}
// IsTypeFloat indicates whether the type is TypeFloat
func IsTypeFloat(tp byte) bool {
return tp == mysql.TypeFloat
}
// IsTypeInteger returns a boolean indicating whether the tp is integer type.
func IsTypeInteger(tp byte) bool {
switch tp {
case mysql.TypeTiny, mysql.TypeShort, mysql.TypeInt24, mysql.TypeLong, mysql.TypeLonglong, mysql.TypeYear:
return true
}
return false
}
// IsTypeStoredAsInteger returns a boolean indicating whether the tp is stored as integer type.
func IsTypeStoredAsInteger(tp byte) bool {
switch tp {
case mysql.TypeTiny, mysql.TypeShort, mysql.TypeInt24, mysql.TypeLong, mysql.TypeLonglong:
return true
case mysql.TypeYear:
return true
// Enum and Set are stored as integer type but they can not be pushed down to TiFlash
// case mysql.TypeEnum, mysql.TypeSet:
// return true
case mysql.TypeDatetime, mysql.TypeDate, mysql.TypeTimestamp, mysql.TypeDuration:
return true
}
return false
}
// IsTypeNumeric returns a boolean indicating whether the tp is numeric type.
func IsTypeNumeric(tp byte) bool {
switch tp {
case mysql.TypeBit, mysql.TypeTiny, mysql.TypeInt24, mysql.TypeLong, mysql.TypeLonglong, mysql.TypeNewDecimal,
mysql.TypeFloat, mysql.TypeDouble, mysql.TypeShort:
return true
}
return false
}
// IsTypeBit returns a boolean indicating whether the tp is bit type.
func IsTypeBit(ft *FieldType) bool {
return ft.GetType() == mysql.TypeBit
}
// IsTemporalWithDate returns a boolean indicating
// whether the tp is time type with date.
func IsTemporalWithDate(tp byte) bool {
return IsTypeTime(tp)
}
// IsBinaryStr returns a boolean indicating
// whether the field type is a binary string type.
func IsBinaryStr(ft *FieldType) bool {
return ft.GetCollate() == charset.CollationBin && IsString(ft.GetType())
}
// IsNonBinaryStr returns a boolean indicating
// whether the field type is a non-binary string type.
func IsNonBinaryStr(ft *FieldType) bool {
if ft.GetCollate() != charset.CollationBin && IsString(ft.GetType()) {
return true
}
return false
}
// NeedRestoredData returns if a type needs restored data.
// If the type is char and the collation is _bin, NeedRestoredData() returns false.
func NeedRestoredData(ft *FieldType) bool {
if collate.NewCollationEnabled() &&
IsNonBinaryStr(ft) &&
(!collate.IsBinCollation(ft.GetCollate()) || IsTypeVarchar(ft.GetType())) &&
ft.GetCollate() != "utf8mb4_0900_bin" {
return true
}
return false
}
// IsString returns a boolean indicating
// whether the field type is a string type.
func IsString(tp byte) bool {
return IsTypeChar(tp) || IsTypeBlob(tp) || IsTypeVarchar(tp) || IsTypeUnspecified(tp)
}
// IsStringKind returns a boolean indicating whether the tp is a string type.
func IsStringKind(kind byte) bool {
return kind == KindString || kind == KindBytes
}
var kind2Str = map[byte]string{
KindNull: "null",
KindInt64: "bigint",
KindUint64: "unsigned bigint",
KindFloat32: "float",
KindFloat64: "double",
KindString: "char",
KindBytes: "bytes",
KindBinaryLiteral: "bit/hex literal",
KindMysqlDecimal: "decimal",
KindMysqlDuration: "time",
KindMysqlEnum: "enum",
KindMysqlBit: "bit",
KindMysqlSet: "set",
KindMysqlTime: "datetime",
KindInterface: "interface",
KindMinNotNull: "min_not_null",
KindMaxValue: "max_value",
KindRaw: "raw",
KindMysqlJSON: "json",
KindVectorFloat32: "vector",
}
// TypeStr converts tp to a string.
var TypeStr = ast.TypeStr
// KindStr converts kind to a string.
func KindStr(kind byte) (r string) {
return kind2Str[kind]
}
// TypeToStr converts a field to a string.
// It is used for converting Text to Blob,
// or converting Char to Binary.
// Args:
//
// tp: type enum
// cs: charset
var TypeToStr = ast.TypeToStr
// EOFAsNil filtrates errors,
// If err is equal to io.EOF returns nil.
func EOFAsNil(err error) error {
if terror.ErrorEqual(err, io.EOF) {
return nil
}
return errors.Trace(err)
}
// InvOp2 returns an invalid operation error.
func InvOp2(x, y any, o opcode.Op) (any, error) {
return nil, errors.Errorf("Invalid operation: %v %v %v (mismatched types %T and %T)", x, o, y, x, y)
}
// overflow returns an overflowed error.
func overflow(v any, tp byte) error {
return ErrOverflow.GenWithStack("constant %v overflows %s", v, TypeStr(tp))
}
// IsTypeTemporal checks if a type is a temporal type.
func IsTypeTemporal(tp byte) bool {
switch tp {
case mysql.TypeDuration, mysql.TypeDatetime, mysql.TypeTimestamp,
mysql.TypeDate, mysql.TypeNewDate:
return true
}
return false
}
// Copyright 2019 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package types
import (
"bytes"
"github.com/pingcap/tidb/pkg/parser/ast"
"github.com/pingcap/tidb/pkg/util/size"
)
// FieldName records the names used for mysql protocol.
type FieldName struct {
OrigTblName ast.CIStr
OrigColName ast.CIStr
DBName ast.CIStr
TblName ast.CIStr
ColName ast.CIStr
Hidden bool
// NotExplicitUsable is used for mark whether a column can be explicit used in SQL.
// update stmt can write `writeable` column implicitly but cannot use non-public columns explicit.
// e.g. update t set a = 10 where b = 10; which `b` is in `writeOnly` state
NotExplicitUsable bool
Redundant bool
}
const emptyName = "EMPTY_NAME"
// String implements Stringer interface.
func (name *FieldName) String() string {
if name.Hidden {
return emptyName
}
bs := make([]byte, 0, len(name.DBName.L)+1+len(name.TblName.L)+1+len(name.ColName.L))
builder := bytes.NewBuffer(bs)
if name.DBName.L != "" {
builder.WriteString(name.DBName.L + ".")
}
if name.TblName.L != "" {
builder.WriteString(name.TblName.L + ".")
}
builder.WriteString(name.ColName.L)
return builder.String()
}
// MemoryUsage return the memory usage of FieldName
func (name *FieldName) MemoryUsage() (sum int64) {
if name == nil {
return
}
sum = name.OrigTblName.MemoryUsage() + name.OrigColName.MemoryUsage() + name.DBName.MemoryUsage() +
name.TblName.MemoryUsage() + name.ColName.MemoryUsage() + size.SizeOfBool*3
return
}
// NameSlice is the slice of the *fieldName
type NameSlice []*FieldName
// Shallow is a shallow copy, only making a new slice.
func (s NameSlice) Shallow() NameSlice {
ret := make(NameSlice, len(s))
copy(ret, s)
return ret
}
// EmptyName is to occupy the position in the name slice. If it's set, that column's name is hidden.
var EmptyName = &FieldName{Hidden: true}
// FindAstColName checks whether the given ast.ColumnName is appeared in this slice.
func (s NameSlice) FindAstColName(name *ast.ColumnName) bool {
for _, fieldName := range s {
if (name.Schema.L == "" || name.Schema.L == fieldName.DBName.L) &&
(name.Table.L == "" || name.Table.L == fieldName.TblName.L) &&
name.Name.L == fieldName.ColName.L {
return true
}
}
return false
}
// Copyright 2015 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package types
import (
"fmt"
"strconv"
"github.com/pingcap/errors"
"github.com/pingcap/tidb/pkg/parser/charset"
"github.com/pingcap/tidb/pkg/parser/mysql"
ast "github.com/pingcap/tidb/pkg/parser/types"
"github.com/pingcap/tidb/pkg/util/collate"
"github.com/pingcap/tidb/pkg/util/dbterror"
"github.com/pingcap/tidb/pkg/util/mathutil"
)
// UnspecifiedLength is unspecified length.
const UnspecifiedLength = -1
// ErrorLength is error length for blob or text.
const ErrorLength = 0
// FieldType records field type information.
type FieldType = ast.FieldType
// NewFieldType returns a FieldType,
// with a type and other information about field type.
func NewFieldType(tp byte) *FieldType {
charset1, collate1 := DefaultCharsetForType(tp)
flen, decimal := minFlenAndDecimalForType(tp)
return NewFieldTypeBuilder().
SetType(tp).
SetCharset(charset1).
SetCollate(collate1).
SetFlen(flen).
SetDecimal(decimal).
BuildP()
}
// NewFieldTypeWithCollation returns a FieldType,
// with a type and other information about field type.
func NewFieldTypeWithCollation(tp byte, collation string, length int) *FieldType {
coll, _ := charset.GetCollationByName(collation)
return NewFieldTypeBuilder().SetType(tp).SetFlen(length).SetCharset(coll.CharsetName).SetCollate(collation).SetDecimal(UnspecifiedLength).BuildP()
}
// AggFieldType aggregates field types for a multi-argument function like `IF`, `IFNULL`, `COALESCE`
// whose return type is determined by the arguments' FieldTypes.
// Aggregation is performed by MergeFieldType function.
func AggFieldType(tps []*FieldType) *FieldType {
var currType FieldType
isMixedSign := false
for i, t := range tps {
if i == 0 && currType.GetType() == mysql.TypeUnspecified {
currType = *t
continue
}
mtp := mergeFieldType(currType.GetType(), t.GetType())
isMixedSign = isMixedSign || (mysql.HasUnsignedFlag(currType.GetFlag()) != mysql.HasUnsignedFlag(t.GetFlag()))
currType.SetType(mtp)
currType.SetFlag(mergeTypeFlag(currType.GetFlag(), t.GetFlag()))
}
// integral promotion when tps contains signed and unsigned
if isMixedSign && IsTypeInteger(currType.GetType()) {
bumpRange := false // indicate one of tps bump currType range
for _, t := range tps {
bumpRange = bumpRange || (mysql.HasUnsignedFlag(t.GetFlag()) && (t.GetType() == currType.GetType() ||
t.GetType() == mysql.TypeBit))
}
if bumpRange {
switch currType.GetType() {
case mysql.TypeTiny:
currType.SetType(mysql.TypeShort)
case mysql.TypeShort:
currType.SetType(mysql.TypeInt24)
case mysql.TypeInt24:
currType.SetType(mysql.TypeLong)
case mysql.TypeLong:
currType.SetType(mysql.TypeLonglong)
case mysql.TypeLonglong:
currType.SetType(mysql.TypeNewDecimal)
}
}
}
if mysql.HasUnsignedFlag(currType.GetFlag()) && !isMixedSign {
currType.AddFlag(mysql.UnsignedFlag)
}
return &currType
}
// TryToFixFlenOfDatetime try to fix flen of Datetime for specific func or other field merge cases
func TryToFixFlenOfDatetime(resultTp *FieldType) {
if resultTp.GetType() == mysql.TypeDatetime {
resultTp.SetFlen(mysql.MaxDatetimeWidthNoFsp)
if resultTp.GetDecimal() > 0 {
resultTp.SetFlen(resultTp.GetFlen() + resultTp.GetDecimal() + 1)
}
}
}
// AggregateEvalType aggregates arguments' EvalType of a multi-argument function.
func AggregateEvalType(fts []*FieldType, flag *uint) EvalType {
var (
aggregatedEvalType = ETString
unsigned bool
gotFirst bool
gotBinString bool
)
lft := fts[0]
for _, ft := range fts {
if ft.GetType() == mysql.TypeNull {
continue
}
et := ft.EvalType()
rft := ft
if (IsTypeBlob(ft.GetType()) || IsTypeVarchar(ft.GetType()) || IsTypeChar(ft.GetType())) && mysql.HasBinaryFlag(ft.GetFlag()) {
gotBinString = true
}
if !gotFirst {
gotFirst = true
aggregatedEvalType = et
unsigned = mysql.HasUnsignedFlag(ft.GetFlag())
} else {
aggregatedEvalType = mergeEvalType(aggregatedEvalType, et, lft, rft, unsigned, mysql.HasUnsignedFlag(ft.GetFlag()))
unsigned = unsigned && mysql.HasUnsignedFlag(ft.GetFlag())
}
lft = rft
}
SetTypeFlag(flag, mysql.UnsignedFlag, unsigned)
SetTypeFlag(flag, mysql.BinaryFlag, !aggregatedEvalType.IsStringKind() || gotBinString)
return aggregatedEvalType
}
func mergeEvalType(lhs, rhs EvalType, lft, rft *FieldType, isLHSUnsigned, isRHSUnsigned bool) EvalType {
if lft.GetType() == mysql.TypeUnspecified || rft.GetType() == mysql.TypeUnspecified {
if lft.GetType() == rft.GetType() {
return ETString
}
if lft.GetType() == mysql.TypeUnspecified {
lhs = rhs
} else {
rhs = lhs
}
}
if lhs.IsStringKind() || rhs.IsStringKind() {
return ETString
} else if lhs == ETReal || rhs == ETReal {
return ETReal
} else if lhs == ETDecimal || rhs == ETDecimal || isLHSUnsigned != isRHSUnsigned {
return ETDecimal
}
return ETInt
}
// SetTypeFlag turns the flagItem on or off.
func SetTypeFlag(flag *uint, flagItem uint, on bool) {
if on {
*flag |= flagItem
} else {
*flag &= ^flagItem
}
}
// InferParamTypeFromDatum is used for plan cache to infer the type of a parameter from its datum.
func InferParamTypeFromDatum(d *Datum, tp *FieldType) {
InferParamTypeFromUnderlyingValue(d.GetValue(), tp)
if IsStringKind(d.k) {
// consider charset and collation here
c, err := collate.GetCollationByName(d.collation)
if err != nil || c == nil {
return // use default charset and collation
}
tp.SetCharset(c.CharsetName)
tp.SetCollate(d.collation)
}
}
// InferParamTypeFromUnderlyingValue is used for plan cache to infer the type of a parameter from its underlying value.
func InferParamTypeFromUnderlyingValue(value any, tp *FieldType) {
switch value.(type) {
case nil:
// For NULL parameters, use TypeNull to ensure consistent behavior with literal NULL values
// in control flow functions like CASE WHEN. Previously using TypeVarString caused incorrect
// type inference in prepared statements (issue #62564).
tp.SetType(mysql.TypeNull)
tp.SetFlen(0)
tp.SetDecimal(0)
// Set default charset and collation instead of binary charset to avoid breaking JSON functions
// (see PR #54145 which fixed JSON function argument verification issues).
tp.SetCharset(mysql.DefaultCharset)
tp.SetCollate(mysql.DefaultCollationName)
default:
DefaultTypeForValue(value, tp, mysql.DefaultCharset, mysql.DefaultCollationName)
if hasVariantFieldLength(tp) {
tp.SetFlen(UnspecifiedLength)
}
if tp.GetType() == mysql.TypeUnspecified {
tp.SetType(mysql.TypeVarString)
}
}
}
func hasVariantFieldLength(tp *FieldType) bool {
switch tp.GetType() {
case mysql.TypeLonglong, mysql.TypeVarString, mysql.TypeDouble, mysql.TypeBlob,
mysql.TypeBit, mysql.TypeDuration, mysql.TypeEnum, mysql.TypeSet:
return true
}
return false
}
// DefaultTypeForValue returns the default FieldType for the value.
func DefaultTypeForValue(value any, tp *FieldType, char string, collate string) {
if value != nil {
tp.AddFlag(mysql.NotNullFlag)
}
switch x := value.(type) {
case nil:
tp.SetType(mysql.TypeNull)
tp.SetFlen(0)
tp.SetDecimal(0)
SetBinChsClnFlag(tp)
case bool:
tp.SetType(mysql.TypeLonglong)
tp.SetFlen(1)
tp.SetDecimal(0)
tp.AddFlag(mysql.IsBooleanFlag)
SetBinChsClnFlag(tp)
case int:
tp.SetType(mysql.TypeLonglong)
tp.SetFlen(mathutil.StrLenOfInt64Fast(int64(x)))
tp.SetDecimal(0)
SetBinChsClnFlag(tp)
case int64:
tp.SetType(mysql.TypeLonglong)
tp.SetFlen(mathutil.StrLenOfInt64Fast(x))
tp.SetDecimal(0)
SetBinChsClnFlag(tp)
case uint64:
tp.SetType(mysql.TypeLonglong)
tp.AddFlag(mysql.UnsignedFlag)
tp.SetFlen(mathutil.StrLenOfUint64Fast(x))
tp.SetDecimal(0)
SetBinChsClnFlag(tp)
case string:
tp.SetType(mysql.TypeVarString)
// TODO: tp.flen should be len(x) * 3 (max bytes length of CharsetUTF8)
tp.SetFlen(len(x))
tp.SetDecimal(UnspecifiedLength)
tp.SetCharset(char)
tp.SetCollate(collate)
case float32:
tp.SetType(mysql.TypeFloat)
s := strconv.FormatFloat(float64(x), 'f', -1, 32)
tp.SetFlen(len(s))
tp.SetDecimal(UnspecifiedLength)
SetBinChsClnFlag(tp)
case float64:
tp.SetType(mysql.TypeDouble)
s := strconv.FormatFloat(x, 'f', -1, 64)
tp.SetFlen(len(s))
tp.SetDecimal(UnspecifiedLength)
SetBinChsClnFlag(tp)
case []byte:
tp.SetType(mysql.TypeBlob)
tp.SetFlen(len(x))
tp.SetDecimal(UnspecifiedLength)
SetBinChsClnFlag(tp)
case BitLiteral:
tp.SetType(mysql.TypeVarString)
tp.SetFlen(len(x) * 3)
tp.SetDecimal(0)
SetBinChsClnFlag(tp)
case HexLiteral:
tp.SetType(mysql.TypeVarString)
tp.SetFlen(len(x) * 3)
tp.SetDecimal(0)
tp.AddFlag(mysql.UnsignedFlag)
SetBinChsClnFlag(tp)
case BinaryLiteral:
tp.SetType(mysql.TypeVarString)
tp.SetFlen(len(x))
tp.SetDecimal(0)
SetBinChsClnFlag(tp)
tp.DelFlag(mysql.BinaryFlag)
tp.AddFlag(mysql.UnsignedFlag)
case Time:
tp.SetType(x.Type())
switch x.Type() {
case mysql.TypeDate:
tp.SetFlen(mysql.MaxDateWidth)
tp.SetDecimal(UnspecifiedLength)
case mysql.TypeDatetime, mysql.TypeTimestamp:
tp.SetFlen(mysql.MaxDatetimeWidthNoFsp)
if x.Fsp() > DefaultFsp { // consider point('.') and the fractional part.
tp.SetFlen(tp.GetFlen() + x.Fsp() + 1)
}
tp.SetDecimal(x.Fsp())
}
SetBinChsClnFlag(tp)
case Duration:
tp.SetType(mysql.TypeDuration)
tp.SetFlen(len(x.String()))
if x.Fsp > DefaultFsp { // consider point('.') and the fractional part.
tp.SetFlen(x.Fsp + 1)
}
tp.SetDecimal(x.Fsp)
SetBinChsClnFlag(tp)
case *MyDecimal:
tp.SetType(mysql.TypeNewDecimal)
tp.SetFlenUnderLimit(len(x.ToString()))
tp.SetDecimalUnderLimit(int(x.digitsFrac))
// Add the length for `.`.
tp.SetFlenUnderLimit(tp.GetFlen() + 1)
SetBinChsClnFlag(tp)
case Enum:
tp.SetType(mysql.TypeEnum)
tp.SetFlen(len(x.Name))
tp.SetDecimal(UnspecifiedLength)
SetBinChsClnFlag(tp)
case Set:
tp.SetType(mysql.TypeSet)
tp.SetFlen(len(x.Name))
tp.SetDecimal(UnspecifiedLength)
SetBinChsClnFlag(tp)
case BinaryJSON:
tp.SetType(mysql.TypeJSON)
tp.SetFlen(UnspecifiedLength)
tp.SetDecimal(0)
tp.SetCharset(charset.CharsetUTF8MB4)
tp.SetCollate(charset.CollationUTF8MB4)
case VectorFloat32:
tp.SetType(mysql.TypeTiDBVectorFloat32)
tp.SetFlen(UnspecifiedLength)
tp.SetDecimal(0)
SetBinChsClnFlag(tp)
default:
tp.SetType(mysql.TypeUnspecified)
tp.SetFlen(UnspecifiedLength)
tp.SetDecimal(UnspecifiedLength)
tp.SetCharset(charset.CharsetUTF8MB4)
tp.SetCollate(charset.CollationUTF8MB4)
}
}
// minFlenAndDecimalForType returns the minimum flen/decimal that can hold all the data for `tp`.
func minFlenAndDecimalForType(tp byte) (int, int) {
switch tp {
case mysql.TypeTiny, mysql.TypeShort, mysql.TypeInt24, mysql.TypeLong, mysql.TypeLonglong, mysql.TypeYear:
return mysql.GetDefaultFieldLengthAndDecimal(tp)
default:
// todo support non-integer type
return UnspecifiedLength, UnspecifiedLength
}
}
// DefaultCharsetForType returns the default charset/collation for mysql type.
func DefaultCharsetForType(tp byte) (defaultCharset string, defaultCollation string) {
switch tp {
case mysql.TypeVarString, mysql.TypeString, mysql.TypeVarchar:
// Default charset for string types is utf8mb4.
return mysql.DefaultCharset, mysql.DefaultCollationName
}
return charset.CharsetBin, charset.CollationBin
}
// mergeFieldType merges two MySQL type to a new type.
// This is used in hybrid field type expression.
// For example "select case c when 1 then 2 when 2 then 'tidb' from t;"
// The result field type of the case expression is the merged type of the two when clause.
// See https://github.com/mysql/mysql-server/blob/8.0/sql/field.cc#L1042
//
// This function doesn't handle the range bump: for example, when the unsigned long is merged with signed long,
// the result should be longlong. However, this function returns long for this case. Please use `AggFieldType`
// function if you need to handle the range bump.
func mergeFieldType(a byte, b byte) byte {
ia := getFieldTypeIndex(a)
ib := getFieldTypeIndex(b)
return fieldTypeMergeRules[ia][ib]
}
// mergeTypeFlag merges two MySQL type flag to a new one
// currently only NotNullFlag and UnsignedFlag is checked
// todo more flag need to be checked
func mergeTypeFlag(a, b uint) uint {
return a & (b&mysql.NotNullFlag | ^mysql.NotNullFlag) & (b&mysql.UnsignedFlag | ^mysql.UnsignedFlag)
}
var (
fieldTypeIndexes = map[byte]int{
mysql.TypeUnspecified: 0,
mysql.TypeTiny: 1,
mysql.TypeShort: 2,
mysql.TypeLong: 3,
mysql.TypeFloat: 4,
mysql.TypeDouble: 5,
mysql.TypeNull: 6,
mysql.TypeTimestamp: 7,
mysql.TypeLonglong: 8,
mysql.TypeInt24: 9,
mysql.TypeDate: 10,
mysql.TypeDuration: 11,
mysql.TypeDatetime: 12,
mysql.TypeYear: 13,
mysql.TypeNewDate: 14,
mysql.TypeVarchar: 15,
mysql.TypeBit: 16,
mysql.TypeJSON: 17,
mysql.TypeNewDecimal: 18,
mysql.TypeEnum: 19,
mysql.TypeSet: 20,
mysql.TypeTinyBlob: 21,
mysql.TypeMediumBlob: 22,
mysql.TypeLongBlob: 23,
mysql.TypeBlob: 24,
mysql.TypeVarString: 25,
mysql.TypeString: 26,
mysql.TypeGeometry: 27,
mysql.TypeTiDBVectorFloat32: 28,
}
)
func getFieldTypeIndex(tp byte) int {
return fieldTypeIndexes[tp]
}
// https://github.com/mysql/mysql-server/blob/8.0/sql/field.cc#L248
var fieldTypeMergeRules = [29][29]byte{
/* mysql.TypeUnspecified -> */
{
// mysql.TypeUnspecified mysql.TypeTiny
mysql.TypeNewDecimal, mysql.TypeNewDecimal,
// mysql.TypeShort mysql.TypeLong
mysql.TypeNewDecimal, mysql.TypeNewDecimal,
// mysql.TypeFloat mysql.TypeDouble
mysql.TypeDouble, mysql.TypeDouble,
// mysql.TypeNull mysql.TypeTimestamp
mysql.TypeNewDecimal, mysql.TypeVarchar,
// mysql.TypeLonglong mysql.TypeInt24
mysql.TypeUnspecified, mysql.TypeUnspecified,
// mysql.TypeDate mysql.TypeTime
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeDatetime mysql.TypeYear
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeNewDate mysql.TypeVarchar
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeBit <16>-<244>
mysql.TypeVarchar,
// mysql.TypeJSON
mysql.TypeVarchar,
// mysql.TypeNewDecimal mysql.TypeEnum
mysql.TypeNewDecimal, mysql.TypeVarchar,
// mysql.TypeSet mysql.TypeTinyBlob
mysql.TypeVarchar, mysql.TypeTinyBlob,
// mysql.TypeMediumBlob mysql.TypeLongBlob
mysql.TypeMediumBlob, mysql.TypeLongBlob,
// mysql.TypeBlob mysql.TypeVarString
mysql.TypeBlob, mysql.TypeVarchar,
// mysql.TypeString mysql.TypeGeometry
mysql.TypeString, mysql.TypeVarchar,
// mysql.TypeTiDBVectorFloat32
mysql.TypeVarchar,
},
/* mysql.TypeTiny -> */
{
// mysql.TypeUnspecified mysql.TypeTiny
mysql.TypeNewDecimal, mysql.TypeTiny,
// mysql.TypeShort mysql.TypeLong
mysql.TypeShort, mysql.TypeLong,
// mysql.TypeFloat mysql.TypeDouble
mysql.TypeFloat, mysql.TypeDouble,
// mysql.TypeNull mysql.TypeTimestamp
mysql.TypeTiny, mysql.TypeVarchar,
// mysql.TypeLonglong mysql.TypeInt24
mysql.TypeLonglong, mysql.TypeInt24,
// mysql.TypeDate mysql.TypeTime
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeDatetime mysql.TypeYear
mysql.TypeVarchar, mysql.TypeTiny,
// mysql.TypeNewDate mysql.TypeVarchar
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeBit <16>-<244>
mysql.TypeLonglong,
// mysql.TypeJSON
mysql.TypeVarchar,
// mysql.TypeNewDecimal mysql.TypeEnum
mysql.TypeNewDecimal, mysql.TypeVarchar,
// mysql.TypeSet mysql.TypeTinyBlob
mysql.TypeVarchar, mysql.TypeTinyBlob,
// mysql.TypeMediumBlob mysql.TypeLongBlob
mysql.TypeMediumBlob, mysql.TypeLongBlob,
// mysql.TypeBlob mysql.TypeVarString
mysql.TypeBlob, mysql.TypeVarchar,
// mysql.TypeString mysql.TypeGeometry
mysql.TypeString, mysql.TypeVarchar,
// mysql.TypeTiDBVectorFloat32
mysql.TypeVarchar,
},
/* mysql.TypeShort -> */
{
// mysql.TypeUnspecified mysql.TypeTiny
mysql.TypeNewDecimal, mysql.TypeShort,
// mysql.TypeShort mysql.TypeLong
mysql.TypeShort, mysql.TypeLong,
// mysql.TypeFloat mysql.TypeDouble
mysql.TypeFloat, mysql.TypeDouble,
// mysql.TypeNull mysql.TypeTimestamp
mysql.TypeShort, mysql.TypeVarchar,
// mysql.TypeLonglong mysql.TypeInt24
mysql.TypeLonglong, mysql.TypeInt24,
// mysql.TypeDate mysql.TypeTime
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeDatetime mysql.TypeYear
mysql.TypeVarchar, mysql.TypeShort,
// mysql.TypeNewDate mysql.TypeVarchar
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeBit <16>-<244>
mysql.TypeLonglong,
// mysql.TypeJSON
mysql.TypeVarchar,
// mysql.TypeNewDecimal mysql.TypeEnum
mysql.TypeNewDecimal, mysql.TypeVarchar,
// mysql.TypeSet mysql.TypeTinyBlob
mysql.TypeVarchar, mysql.TypeTinyBlob,
// mysql.TypeMediumBlob mysql.TypeLongBlob
mysql.TypeMediumBlob, mysql.TypeLongBlob,
// mysql.TypeBlob mysql.TypeVarString
mysql.TypeBlob, mysql.TypeVarchar,
// mysql.TypeString mysql.TypeGeometry
mysql.TypeString, mysql.TypeVarchar,
// mysql.TypeTiDBVectorFloat32
mysql.TypeVarchar,
},
/* mysql.TypeLong -> */
{
// mysql.TypeUnspecified mysql.TypeTiny
mysql.TypeNewDecimal, mysql.TypeLong,
// mysql.TypeShort mysql.TypeLong
mysql.TypeLong, mysql.TypeLong,
// mysql.TypeFloat mysql.TypeDouble
mysql.TypeDouble, mysql.TypeDouble,
// mysql.TypeNull mysql.TypeTimestamp
mysql.TypeLong, mysql.TypeVarchar,
// mysql.TypeLonglong mysql.TypeInt24
mysql.TypeLonglong, mysql.TypeLong,
// mysql.TypeDate mysql.TypeTime
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeDatetime mysql.TypeYear
mysql.TypeVarchar, mysql.TypeLong,
// mysql.TypeNewDate mysql.TypeVarchar
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeBit <16>-<244>
mysql.TypeLonglong,
// mysql.TypeJSON
mysql.TypeVarchar,
// mysql.TypeNewDecimal mysql.TypeEnum
mysql.TypeNewDecimal, mysql.TypeVarchar,
// mysql.TypeSet mysql.TypeTinyBlob
mysql.TypeVarchar, mysql.TypeTinyBlob,
// mysql.TypeMediumBlob mysql.TypeLongBlob
mysql.TypeMediumBlob, mysql.TypeLongBlob,
// mysql.TypeBlob mysql.TypeVarString
mysql.TypeBlob, mysql.TypeVarchar,
// mysql.TypeString mysql.TypeGeometry
mysql.TypeString, mysql.TypeVarchar,
// mysql.TypeTiDBVectorFloat32
mysql.TypeVarchar,
},
/* mysql.TypeFloat -> */
{
// mysql.TypeUnspecified mysql.TypeTiny
mysql.TypeDouble, mysql.TypeFloat,
// mysql.TypeShort mysql.TypeLong
mysql.TypeFloat, mysql.TypeDouble,
// mysql.TypeFloat mysql.TypeDouble
mysql.TypeFloat, mysql.TypeDouble,
// mysql.TypeNull mysql.TypeTimestamp
mysql.TypeFloat, mysql.TypeVarchar,
// mysql.TypeLonglong mysql.TypeInt24
mysql.TypeFloat, mysql.TypeFloat,
// mysql.TypeDate mysql.TypeTime
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeDatetime mysql.TypeYear
mysql.TypeVarchar, mysql.TypeFloat,
// mysql.TypeNewDate mysql.TypeVarchar
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeBit <16>-<244>
mysql.TypeDouble,
// mysql.TypeJSON
mysql.TypeVarchar,
// mysql.TypeNewDecimal mysql.TypeEnum
mysql.TypeDouble, mysql.TypeVarchar,
// mysql.TypeSet mysql.TypeTinyBlob
mysql.TypeVarchar, mysql.TypeTinyBlob,
// mysql.TypeMediumBlob mysql.TypeLongBlob
mysql.TypeMediumBlob, mysql.TypeLongBlob,
// mysql.TypeBlob mysql.TypeVarString
mysql.TypeBlob, mysql.TypeVarchar,
// mysql.TypeString mysql.TypeGeometry
mysql.TypeString, mysql.TypeVarchar,
// mysql.TypeTiDBVectorFloat32
mysql.TypeVarchar,
},
/* mysql.TypeDouble -> */
{
// mysql.TypeUnspecified mysql.TypeTiny
mysql.TypeDouble, mysql.TypeDouble,
// mysql.TypeShort mysql.TypeLong
mysql.TypeDouble, mysql.TypeDouble,
// mysql.TypeFloat mysql.TypeDouble
mysql.TypeDouble, mysql.TypeDouble,
// mysql.TypeNull mysql.TypeTimestamp
mysql.TypeDouble, mysql.TypeVarchar,
// mysql.TypeLonglong mysql.TypeInt24
mysql.TypeDouble, mysql.TypeDouble,
// mysql.TypeDate mysql.TypeTime
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeDatetime mysql.TypeYear
mysql.TypeVarchar, mysql.TypeDouble,
// mysql.TypeNewDate mysql.TypeVarchar
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeBit <16>-<244>
mysql.TypeDouble,
// mysql.TypeJSON
mysql.TypeVarchar,
// mysql.TypeNewDecimal mysql.TypeEnum
mysql.TypeDouble, mysql.TypeVarchar,
// mysql.TypeSet mysql.TypeTinyBlob
mysql.TypeVarchar, mysql.TypeTinyBlob,
// mysql.TypeMediumBlob mysql.TypeLongBlob
mysql.TypeMediumBlob, mysql.TypeLongBlob,
// mysql.TypeBlob mysql.TypeVarString
mysql.TypeBlob, mysql.TypeVarchar,
// mysql.TypeString mysql.TypeGeometry
mysql.TypeString, mysql.TypeVarchar,
// mysql.TypeTiDBVectorFloat32
mysql.TypeVarchar,
},
/* mysql.TypeNull -> */
{
// mysql.TypeUnspecified mysql.TypeTiny
mysql.TypeNewDecimal, mysql.TypeTiny,
// mysql.TypeShort mysql.TypeLong
mysql.TypeShort, mysql.TypeLong,
// mysql.TypeFloat mysql.TypeDouble
mysql.TypeFloat, mysql.TypeDouble,
// mysql.TypeNull mysql.TypeTimestamp
mysql.TypeNull, mysql.TypeTimestamp,
// mysql.TypeLonglong mysql.TypeInt24
mysql.TypeLonglong, mysql.TypeLonglong,
// mysql.TypeDate mysql.TypeTime
mysql.TypeDate, mysql.TypeDuration,
// mysql.TypeDatetime mysql.TypeYear
mysql.TypeDatetime, mysql.TypeYear,
// mysql.TypeNewDate mysql.TypeVarchar
mysql.TypeNewDate, mysql.TypeVarchar,
// mysql.TypeBit <16>-<244>
mysql.TypeBit,
// mysql.TypeJSON
mysql.TypeJSON,
// mysql.TypeNewDecimal mysql.TypeEnum
mysql.TypeNewDecimal, mysql.TypeEnum,
// mysql.TypeSet mysql.TypeTinyBlob
mysql.TypeSet, mysql.TypeTinyBlob,
// mysql.TypeMediumBlob mysql.TypeLongBlob
mysql.TypeMediumBlob, mysql.TypeLongBlob,
// mysql.TypeBlob mysql.TypeVarString
mysql.TypeBlob, mysql.TypeVarchar,
// mysql.TypeString mysql.TypeGeometry
mysql.TypeString, mysql.TypeGeometry,
// mysql.TypeTiDBVectorFloat32
mysql.TypeTiDBVectorFloat32,
},
/* mysql.TypeTimestamp -> */
{
// mysql.TypeUnspecified mysql.TypeTiny
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeShort mysql.TypeLong
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeFloat mysql.TypeDouble
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeNull mysql.TypeTimestamp
mysql.TypeTimestamp, mysql.TypeTimestamp,
// mysql.TypeLonglong mysql.TypeInt24
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeDate mysql.TypeTime
mysql.TypeDatetime, mysql.TypeDatetime,
// mysql.TypeDatetime mysql.TypeYear
mysql.TypeDatetime, mysql.TypeVarchar,
// mysql.TypeNewDate mysql.TypeVarchar
mysql.TypeNewDate, mysql.TypeVarchar,
// mysql.TypeBit <16>-<244>
mysql.TypeVarchar,
// mysql.TypeJSON
mysql.TypeVarchar,
// mysql.TypeNewDecimal mysql.TypeEnum
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeSet mysql.TypeTinyBlob
mysql.TypeVarchar, mysql.TypeTinyBlob,
// mysql.TypeMediumBlob mysql.TypeLongBlob
mysql.TypeMediumBlob, mysql.TypeLongBlob,
// mysql.TypeBlob mysql.TypeVarString
mysql.TypeBlob, mysql.TypeVarchar,
// mysql.TypeString mysql.TypeGeometry
mysql.TypeString, mysql.TypeVarchar,
// mysql.TypeTiDBVectorFloat32
mysql.TypeVarchar,
},
/* mysql.TypeLonglong -> */
{
// mysql.TypeUnspecified mysql.TypeTiny
mysql.TypeNewDecimal, mysql.TypeLonglong,
// mysql.TypeShort mysql.TypeLong
mysql.TypeLonglong, mysql.TypeLonglong,
// mysql.TypeFloat mysql.TypeDouble
mysql.TypeDouble, mysql.TypeDouble,
// mysql.TypeNull mysql.TypeTimestamp
mysql.TypeLonglong, mysql.TypeVarchar,
// mysql.TypeLonglong mysql.TypeInt24
mysql.TypeLonglong, mysql.TypeLong,
// mysql.TypeDate mysql.TypeTime
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeDatetime mysql.TypeYear
mysql.TypeVarchar, mysql.TypeLonglong,
// mysql.TypeNewDate mysql.TypeVarchar
mysql.TypeNewDate, mysql.TypeVarchar,
// mysql.TypeBit <16>-<244>
mysql.TypeLonglong,
// mysql.TypeJSON
mysql.TypeVarchar,
// mysql.TypeNewDecimal mysql.TypeEnum
mysql.TypeNewDecimal, mysql.TypeVarchar,
// mysql.TypeSet mysql.TypeTinyBlob
mysql.TypeVarchar, mysql.TypeTinyBlob,
// mysql.TypeMediumBlob mysql.TypeLongBlob
mysql.TypeMediumBlob, mysql.TypeLongBlob,
// mysql.TypeBlob mysql.TypeVarString
mysql.TypeBlob, mysql.TypeVarchar,
// mysql.TypeString mysql.TypeGeometry
mysql.TypeString, mysql.TypeVarchar,
// mysql.TypeTiDBVectorFloat32
mysql.TypeVarchar,
},
/* mysql.TypeInt24 -> */
{
// mysql.TypeUnspecified mysql.TypeTiny
mysql.TypeNewDecimal, mysql.TypeInt24,
// mysql.TypeShort mysql.TypeLong
mysql.TypeInt24, mysql.TypeLong,
// mysql.TypeFloat mysql.TypeDouble
mysql.TypeFloat, mysql.TypeDouble,
// mysql.TypeNull mysql.TypeTimestamp
mysql.TypeInt24, mysql.TypeVarchar,
// mysql.TypeLonglong mysql.TypeInt24
mysql.TypeLonglong, mysql.TypeInt24,
// mysql.TypeDate mysql.TypeTime
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeDatetime mysql.TypeYear
mysql.TypeVarchar, mysql.TypeInt24,
// mysql.TypeNewDate mysql.TypeVarchar
mysql.TypeNewDate, mysql.TypeVarchar,
// mysql.TypeBit <16>-<244>
mysql.TypeLonglong,
// mysql.TypeJSON
mysql.TypeVarchar,
// mysql.TypeNewDecimal mysql.TypeEnum
mysql.TypeNewDecimal, mysql.TypeVarchar,
// mysql.TypeSet mysql.TypeTinyBlob
mysql.TypeVarchar, mysql.TypeTinyBlob,
// mysql.TypeMediumBlob mysql.TypeLongBlob
mysql.TypeMediumBlob, mysql.TypeLongBlob,
// mysql.TypeBlob mysql.TypeVarString
mysql.TypeBlob, mysql.TypeVarchar,
// mysql.TypeString mysql.TypeGeometry
mysql.TypeString, mysql.TypeVarchar,
// mysql.TypeTiDBVectorFloat32
mysql.TypeVarchar,
},
/* mysql.TypeDate -> */
{
// mysql.TypeUnspecified mysql.TypeTiny
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeShort mysql.TypeLong
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeFloat mysql.TypeDouble
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeNull mysql.TypeTimestamp
mysql.TypeDate, mysql.TypeDatetime,
// mysql.TypeLonglong mysql.TypeInt24
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeDate mysql.TypeTime
mysql.TypeDate, mysql.TypeDatetime,
// mysql.TypeDatetime mysql.TypeYear
mysql.TypeDatetime, mysql.TypeVarchar,
// mysql.TypeNewDate mysql.TypeVarchar
mysql.TypeNewDate, mysql.TypeVarchar,
// mysql.TypeBit <16>-<244>
mysql.TypeVarchar,
// mysql.TypeJSON
mysql.TypeVarchar,
// mysql.TypeNewDecimal mysql.TypeEnum
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeSet mysql.TypeTinyBlob
mysql.TypeVarchar, mysql.TypeTinyBlob,
// mysql.TypeMediumBlob mysql.TypeLongBlob
mysql.TypeMediumBlob, mysql.TypeLongBlob,
// mysql.TypeBlob mysql.TypeVarString
mysql.TypeBlob, mysql.TypeVarchar,
// mysql.TypeString mysql.TypeGeometry
mysql.TypeString, mysql.TypeVarchar,
// mysql.TypeTiDBVectorFloat32
mysql.TypeVarchar,
},
/* mysql.TypeTime -> */
{
// mysql.TypeUnspecified mysql.TypeTiny
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeShort mysql.TypeLong
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeFloat mysql.TypeDouble
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeNull mysql.TypeTimestamp
mysql.TypeDuration, mysql.TypeDatetime,
// mysql.TypeLonglong mysql.TypeInt24
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeDate mysql.TypeTime
mysql.TypeDatetime, mysql.TypeDuration,
// mysql.TypeDatetime mysql.TypeYear
mysql.TypeDatetime, mysql.TypeVarchar,
// mysql.TypeNewDate mysql.TypeVarchar
mysql.TypeNewDate, mysql.TypeVarchar,
// mysql.TypeBit <16>-<244>
mysql.TypeVarchar,
// mysql.TypeJSON
mysql.TypeVarchar,
// mysql.TypeNewDecimal mysql.TypeEnum
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeSet mysql.TypeTinyBlob
mysql.TypeVarchar, mysql.TypeTinyBlob,
// mysql.TypeMediumBlob mysql.TypeLongBlob
mysql.TypeMediumBlob, mysql.TypeLongBlob,
// mysql.TypeBlob mysql.TypeVarString
mysql.TypeBlob, mysql.TypeVarchar,
// mysql.TypeString mysql.TypeGeometry
mysql.TypeString, mysql.TypeVarchar,
// mysql.TypeTiDBVectorFloat32
mysql.TypeVarchar,
},
/* mysql.TypeDatetime -> */
{
// mysql.TypeUnspecified mysql.TypeTiny
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeShort mysql.TypeLong
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeFloat mysql.TypeDouble
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeNull mysql.TypeTimestamp
mysql.TypeDatetime, mysql.TypeDatetime,
// mysql.TypeLonglong mysql.TypeInt24
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeDate mysql.TypeTime
mysql.TypeDatetime, mysql.TypeDatetime,
// mysql.TypeDatetime mysql.TypeYear
mysql.TypeDatetime, mysql.TypeVarchar,
// mysql.TypeNewDate mysql.TypeVarchar
mysql.TypeNewDate, mysql.TypeVarchar,
// mysql.TypeBit <16>-<244>
mysql.TypeVarchar,
// mysql.TypeJSON
mysql.TypeVarchar,
// mysql.TypeNewDecimal mysql.TypeEnum
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeSet mysql.TypeTinyBlob
mysql.TypeVarchar, mysql.TypeTinyBlob,
// mysql.TypeMediumBlob mysql.TypeLongBlob
mysql.TypeMediumBlob, mysql.TypeLongBlob,
// mysql.TypeBlob mysql.TypeVarString
mysql.TypeBlob, mysql.TypeVarchar,
// mysql.TypeString mysql.TypeGeometry
mysql.TypeString, mysql.TypeVarchar,
// mysql.TypeTiDBVectorFloat32
mysql.TypeVarchar,
},
/* mysql.TypeYear -> */
{
// mysql.TypeUnspecified mysql.TypeTiny
mysql.TypeUnspecified, mysql.TypeTiny,
// mysql.TypeShort mysql.TypeLong
mysql.TypeShort, mysql.TypeLong,
// mysql.TypeFloat mysql.TypeDouble
mysql.TypeFloat, mysql.TypeDouble,
// mysql.TypeNull mysql.TypeTimestamp
mysql.TypeYear, mysql.TypeVarchar,
// mysql.TypeLonglong mysql.TypeInt24
mysql.TypeLonglong, mysql.TypeInt24,
// mysql.TypeDate mysql.TypeTime
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeDatetime mysql.TypeYear
mysql.TypeVarchar, mysql.TypeYear,
// mysql.TypeNewDate mysql.TypeVarchar
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeBit <16>-<244>
mysql.TypeLonglong,
// mysql.TypeJSON
mysql.TypeVarchar,
// mysql.TypeNewDecimal mysql.TypeEnum
mysql.TypeNewDecimal, mysql.TypeVarchar,
// mysql.TypeSet mysql.TypeTinyBlob
mysql.TypeVarchar, mysql.TypeTinyBlob,
// mysql.TypeMediumBlob mysql.TypeLongBlob
mysql.TypeMediumBlob, mysql.TypeLongBlob,
// mysql.TypeBlob mysql.TypeVarString
mysql.TypeBlob, mysql.TypeVarchar,
// mysql.TypeString mysql.TypeGeometry
mysql.TypeString, mysql.TypeVarchar,
// mysql.TypeTiDBVectorFloat32
mysql.TypeVarchar,
},
/* mysql.TypeNewDate -> */
{
// mysql.TypeUnspecified mysql.TypeTiny
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeShort mysql.TypeLong
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeFloat mysql.TypeDouble
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeNull mysql.TypeTimestamp
mysql.TypeNewDate, mysql.TypeDatetime,
// mysql.TypeLonglong mysql.TypeInt24
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeDate mysql.TypeTime
mysql.TypeNewDate, mysql.TypeDatetime,
// mysql.TypeDatetime mysql.TypeYear
mysql.TypeDatetime, mysql.TypeVarchar,
// mysql.TypeNewDate mysql.TypeVarchar
mysql.TypeNewDate, mysql.TypeVarchar,
// mysql.TypeBit <16>-<244>
mysql.TypeVarchar,
// mysql.TypeJSON
mysql.TypeVarchar,
// mysql.TypeNewDecimal mysql.TypeEnum
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeSet mysql.TypeTinyBlob
mysql.TypeVarchar, mysql.TypeTinyBlob,
// mysql.TypeMediumBlob mysql.TypeLongBlob
mysql.TypeMediumBlob, mysql.TypeLongBlob,
// mysql.TypeBlob mysql.TypeVarString
mysql.TypeBlob, mysql.TypeVarchar,
// mysql.TypeString mysql.TypeGeometry
mysql.TypeString, mysql.TypeVarchar,
// mysql.TypeTiDBVectorFloat32
mysql.TypeVarchar,
},
/* mysql.TypeVarchar -> */
{
// mysql.TypeUnspecified mysql.TypeTiny
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeShort mysql.TypeLong
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeFloat mysql.TypeDouble
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeNull mysql.TypeTimestamp
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeLonglong mysql.TypeInt24
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeDate mysql.TypeTime
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeDatetime mysql.TypeYear
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeNewDate mysql.TypeVarchar
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeBit <16>-<244>
mysql.TypeVarchar,
// mysql.TypeJSON
mysql.TypeVarchar,
// mysql.TypeNewDecimal mysql.TypeEnum
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeSet mysql.TypeTinyBlob
mysql.TypeVarchar, mysql.TypeTinyBlob,
// mysql.TypeMediumBlob mysql.TypeLongBlob
mysql.TypeMediumBlob, mysql.TypeLongBlob,
// mysql.TypeBlob mysql.TypeVarString
mysql.TypeBlob, mysql.TypeVarchar,
// mysql.TypeString mysql.TypeGeometry
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeTiDBVectorFloat32
mysql.TypeVarchar,
},
/* mysql.TypeBit -> */
{
// mysql.TypeUnspecified mysql.TypeTiny
mysql.TypeVarchar, mysql.TypeLonglong,
// mysql.TypeShort mysql.TypeLong
mysql.TypeLonglong, mysql.TypeLonglong,
// mysql.TypeFloat mysql.TypeDouble
mysql.TypeDouble, mysql.TypeDouble,
// mysql.TypeNull mysql.TypeTimestamp
mysql.TypeBit, mysql.TypeVarchar,
// mysql.TypeLonglong mysql.TypeInt24
mysql.TypeLonglong, mysql.TypeLonglong,
// mysql.TypeDate mysql.TypeTime
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeDatetime mysql.TypeYear
mysql.TypeVarchar, mysql.TypeLonglong,
// mysql.TypeNewDate mysql.TypeVarchar
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeBit <16>-<244>
mysql.TypeBit,
// mysql.TypeJSON
mysql.TypeVarchar,
// mysql.TypeNewDecimal mysql.TypeEnum
mysql.TypeNewDecimal, mysql.TypeVarchar,
// mysql.TypeSet mysql.TypeTinyBlob
mysql.TypeVarchar, mysql.TypeTinyBlob,
// mysql.TypeMediumBlob mysql.TypeLongBlob
mysql.TypeMediumBlob, mysql.TypeLongBlob,
// mysql.TypeBlob mysql.TypeVarString
mysql.TypeBlob, mysql.TypeVarchar,
// mysql.TypeString mysql.TypeGeometry
mysql.TypeString, mysql.TypeVarchar,
// mysql.TypeTiDBVectorFloat32
mysql.TypeVarchar,
},
/* mysql.TypeJSON -> */
{
// mysql.TypeUnspecified mysql.TypeTiny
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeShort mysql.TypeLong
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeNewFloat mysql.TypeDouble
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeNull mysql.TypeTimestamp
mysql.TypeJSON, mysql.TypeVarchar,
// mysql.TypeLongLONG mysql.TypeInt24
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeDate MYSQL_TYPE_TIME
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeDatetime MYSQL_TYPE_YEAR
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeNewDate mysql.TypeVarchar
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeBit <16>-<244>
mysql.TypeVarchar,
// mysql.TypeJSON
mysql.TypeJSON,
// mysql.TypeNewDecimal MYSQL_TYPE_ENUM
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeSet mysql.TypeTinyBlob
mysql.TypeVarchar, mysql.TypeLongBlob,
// mysql.TypeMediumBlob mysql.TypeLongBlob
mysql.TypeLongBlob, mysql.TypeLongBlob,
// mysql.TypeBlob mysql.TypeVarString
mysql.TypeLongBlob, mysql.TypeVarchar,
// mysql.TypeString MYSQL_TYPE_GEOMETRY
mysql.TypeString, mysql.TypeVarchar,
// mysql.TypeTiDBVectorFloat32
mysql.TypeVarchar,
},
/* mysql.TypeNewDecimal -> */
{
// mysql.TypeUnspecified mysql.TypeTiny
mysql.TypeNewDecimal, mysql.TypeNewDecimal,
// mysql.TypeShort mysql.TypeLong
mysql.TypeNewDecimal, mysql.TypeNewDecimal,
// mysql.TypeFloat mysql.TypeDouble
mysql.TypeDouble, mysql.TypeDouble,
// mysql.TypeNull mysql.TypeTimestamp
mysql.TypeNewDecimal, mysql.TypeVarchar,
// mysql.TypeLonglong mysql.TypeInt24
mysql.TypeNewDecimal, mysql.TypeNewDecimal,
// mysql.TypeDate mysql.TypeTime
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeDatetime mysql.TypeYear
mysql.TypeVarchar, mysql.TypeNewDecimal,
// mysql.TypeNewDate mysql.TypeVarchar
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeBit <16>-<244>
mysql.TypeNewDecimal,
// mysql.TypeJSON
mysql.TypeVarchar,
// mysql.TypeNewDecimal mysql.TypeEnum
mysql.TypeNewDecimal, mysql.TypeVarchar,
// mysql.TypeSet mysql.TypeTinyBlob
mysql.TypeVarchar, mysql.TypeTinyBlob,
// mysql.TypeMediumBlob mysql.TypeLongBlob
mysql.TypeMediumBlob, mysql.TypeLongBlob,
// mysql.TypeBlob mysql.TypeVarString
mysql.TypeBlob, mysql.TypeVarchar,
// mysql.TypeString mysql.TypeGeometry
mysql.TypeString, mysql.TypeVarchar,
// mysql.TypeTiDBVectorFloat32
mysql.TypeVarchar,
},
/* mysql.TypeEnum -> */
{
// mysql.TypeUnspecified mysql.TypeTiny
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeShort mysql.TypeLong
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeFloat mysql.TypeDouble
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeNull mysql.TypeTimestamp
mysql.TypeEnum, mysql.TypeVarchar,
// mysql.TypeLonglong mysql.TypeInt24
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeDate mysql.TypeTime
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeDatetime mysql.TypeYear
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeNewDate mysql.TypeVarchar
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeBit <16>-<244>
mysql.TypeVarchar,
// mysql.TypeJSON
mysql.TypeVarchar,
// mysql.TypeNewDecimal mysql.TypeEnum
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeSet mysql.TypeTinyBlob
mysql.TypeVarchar, mysql.TypeTinyBlob,
// mysql.TypeMediumBlob mysql.TypeLongBlob
mysql.TypeMediumBlob, mysql.TypeLongBlob,
// mysql.TypeBlob mysql.TypeVarString
mysql.TypeBlob, mysql.TypeVarchar,
// mysql.TypeString mysql.TypeGeometry
mysql.TypeString, mysql.TypeVarchar,
// mysql.TypeTiDBVectorFloat32
mysql.TypeVarchar,
},
/* mysql.TypeSet -> */
{
// mysql.TypeUnspecified mysql.TypeTiny
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeShort mysql.TypeLong
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeFloat mysql.TypeDouble
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeNull mysql.TypeTimestamp
mysql.TypeSet, mysql.TypeVarchar,
// mysql.TypeLonglong mysql.TypeInt24
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeDate mysql.TypeTime
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeDatetime mysql.TypeYear
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeNewDate mysql.TypeVarchar
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeBit <16>-<244>
mysql.TypeVarchar,
// mysql.TypeJSON
mysql.TypeVarchar,
// mysql.TypeNewDecimal mysql.TypeEnum
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeSet mysql.TypeTinyBlob
mysql.TypeVarchar, mysql.TypeTinyBlob,
// mysql.TypeMediumBlob mysql.TypeLongBlob
mysql.TypeMediumBlob, mysql.TypeLongBlob,
// mysql.TypeBlob mysql.TypeVarString
mysql.TypeBlob, mysql.TypeVarchar,
// mysql.TypeString mysql.TypeGeometry
mysql.TypeString, mysql.TypeVarchar,
// mysql.TypeTiDBVectorFloat32
mysql.TypeVarchar,
},
/* mysql.TypeTinyBlob -> */
{
// mysql.TypeUnspecified mysql.TypeTiny
mysql.TypeTinyBlob, mysql.TypeTinyBlob,
// mysql.TypeShort mysql.TypeLong
mysql.TypeTinyBlob, mysql.TypeTinyBlob,
// mysql.TypeFloat mysql.TypeDouble
mysql.TypeTinyBlob, mysql.TypeTinyBlob,
// mysql.TypeNull mysql.TypeTimestamp
mysql.TypeTinyBlob, mysql.TypeTinyBlob,
// mysql.TypeLonglong mysql.TypeInt24
mysql.TypeTinyBlob, mysql.TypeTinyBlob,
// mysql.TypeDate mysql.TypeTime
mysql.TypeTinyBlob, mysql.TypeTinyBlob,
// mysql.TypeDatetime mysql.TypeYear
mysql.TypeTinyBlob, mysql.TypeTinyBlob,
// mysql.TypeNewDate mysql.TypeVarchar
mysql.TypeTinyBlob, mysql.TypeTinyBlob,
// mysql.TypeBit <16>-<244>
mysql.TypeTinyBlob,
// mysql.TypeJSON
mysql.TypeLongBlob,
// mysql.TypeNewDecimal mysql.TypeEnum
mysql.TypeTinyBlob, mysql.TypeTinyBlob,
// mysql.TypeSet mysql.TypeTinyBlob
mysql.TypeTinyBlob, mysql.TypeTinyBlob,
// mysql.TypeMediumBlob mysql.TypeLongBlob
mysql.TypeMediumBlob, mysql.TypeLongBlob,
// mysql.TypeBlob mysql.TypeVarString
mysql.TypeBlob, mysql.TypeTinyBlob,
// mysql.TypeString mysql.TypeGeometry
mysql.TypeTinyBlob, mysql.TypeTinyBlob,
// mysql.TypeTiDBVectorFloat32
mysql.TypeLongBlob,
},
/* mysql.TypeMediumBlob -> */
{
// mysql.TypeUnspecified mysql.TypeTiny
mysql.TypeMediumBlob, mysql.TypeMediumBlob,
// mysql.TypeShort mysql.TypeLong
mysql.TypeMediumBlob, mysql.TypeMediumBlob,
// mysql.TypeFloat mysql.TypeDouble
mysql.TypeMediumBlob, mysql.TypeMediumBlob,
// mysql.TypeNull mysql.TypeTimestamp
mysql.TypeMediumBlob, mysql.TypeMediumBlob,
// mysql.TypeLonglong mysql.TypeInt24
mysql.TypeMediumBlob, mysql.TypeMediumBlob,
// mysql.TypeDate mysql.TypeTime
mysql.TypeMediumBlob, mysql.TypeMediumBlob,
// mysql.TypeDatetime mysql.TypeYear
mysql.TypeMediumBlob, mysql.TypeMediumBlob,
// mysql.TypeNewDate mysql.TypeVarchar
mysql.TypeMediumBlob, mysql.TypeMediumBlob,
// mysql.TypeBit <16>-<244>
mysql.TypeMediumBlob,
// mysql.TypeJSON
mysql.TypeLongBlob,
// mysql.TypeNewDecimal mysql.TypeEnum
mysql.TypeMediumBlob, mysql.TypeMediumBlob,
// mysql.TypeSet mysql.TypeTinyBlob
mysql.TypeMediumBlob, mysql.TypeMediumBlob,
// mysql.TypeMediumBlob mysql.TypeLongBlob
mysql.TypeMediumBlob, mysql.TypeLongBlob,
// mysql.TypeBlob mysql.TypeVarString
mysql.TypeMediumBlob, mysql.TypeMediumBlob,
// mysql.TypeString mysql.TypeGeometry
mysql.TypeMediumBlob, mysql.TypeMediumBlob,
// mysql.TypeTiDBVectorFloat32
mysql.TypeLongBlob,
},
/* mysql.TypeLongBlob -> */
{
// mysql.TypeUnspecified mysql.TypeTiny
mysql.TypeLongBlob, mysql.TypeLongBlob,
// mysql.TypeShort mysql.TypeLong
mysql.TypeLongBlob, mysql.TypeLongBlob,
// mysql.TypeFloat mysql.TypeDouble
mysql.TypeLongBlob, mysql.TypeLongBlob,
// mysql.TypeNull mysql.TypeTimestamp
mysql.TypeLongBlob, mysql.TypeLongBlob,
// mysql.TypeLonglong mysql.TypeInt24
mysql.TypeLongBlob, mysql.TypeLongBlob,
// mysql.TypeDate mysql.TypeTime
mysql.TypeLongBlob, mysql.TypeLongBlob,
// mysql.TypeDatetime mysql.TypeYear
mysql.TypeLongBlob, mysql.TypeLongBlob,
// mysql.TypeNewDate mysql.TypeVarchar
mysql.TypeLongBlob, mysql.TypeLongBlob,
// mysql.TypeBit <16>-<244>
mysql.TypeLongBlob,
// mysql.TypeJSON
mysql.TypeLongBlob,
// mysql.TypeNewDecimal mysql.TypeEnum
mysql.TypeLongBlob, mysql.TypeLongBlob,
// mysql.TypeSet mysql.TypeTinyBlob
mysql.TypeLongBlob, mysql.TypeLongBlob,
// mysql.TypeMediumBlob mysql.TypeLongBlob
mysql.TypeLongBlob, mysql.TypeLongBlob,
// mysql.TypeBlob mysql.TypeVarString
mysql.TypeLongBlob, mysql.TypeLongBlob,
// mysql.TypeString mysql.TypeGeometry
mysql.TypeLongBlob, mysql.TypeLongBlob,
// mysql.TypeTiDBVectorFloat32
mysql.TypeLongBlob,
},
/* mysql.TypeBlob -> */
{
// mysql.TypeUnspecified mysql.TypeTiny
mysql.TypeBlob, mysql.TypeBlob,
// mysql.TypeShort mysql.TypeLong
mysql.TypeBlob, mysql.TypeBlob,
// mysql.TypeFloat mysql.TypeDouble
mysql.TypeBlob, mysql.TypeBlob,
// mysql.TypeNull mysql.TypeTimestamp
mysql.TypeBlob, mysql.TypeBlob,
// mysql.TypeLonglong mysql.TypeInt24
mysql.TypeBlob, mysql.TypeBlob,
// mysql.TypeDate mysql.TypeTime
mysql.TypeBlob, mysql.TypeBlob,
// mysql.TypeDatetime mysql.TypeYear
mysql.TypeBlob, mysql.TypeBlob,
// mysql.TypeNewDate mysql.TypeVarchar
mysql.TypeBlob, mysql.TypeBlob,
// mysql.TypeBit <16>-<244>
mysql.TypeBlob,
// mysql.TypeJSON
mysql.TypeLongBlob,
// mysql.TypeNewDecimal mysql.TypeEnum
mysql.TypeBlob, mysql.TypeBlob,
// mysql.TypeSet mysql.TypeTinyBlob
mysql.TypeBlob, mysql.TypeBlob,
// mysql.TypeMediumBlob mysql.TypeLongBlob
mysql.TypeMediumBlob, mysql.TypeLongBlob,
// mysql.TypeBlob mysql.TypeVarString
mysql.TypeBlob, mysql.TypeBlob,
// mysql.TypeString mysql.TypeGeometry
mysql.TypeBlob, mysql.TypeBlob,
// mysql.TypeTiDBVectorFloat32
mysql.TypeLongBlob,
},
/* mysql.TypeVarString -> */
{
// mysql.TypeUnspecified mysql.TypeTiny
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeShort mysql.TypeLong
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeFloat mysql.TypeDouble
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeNull mysql.TypeTimestamp
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeLonglong mysql.TypeInt24
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeDate mysql.TypeTime
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeDatetime mysql.TypeYear
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeNewDate mysql.TypeVarchar
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeBit <16>-<244>
mysql.TypeVarchar,
// mysql.TypeJSON
mysql.TypeVarchar,
// mysql.TypeNewDecimal mysql.TypeEnum
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeSet mysql.TypeTinyBlob
mysql.TypeVarchar, mysql.TypeTinyBlob,
// mysql.TypeMediumBlob mysql.TypeLongBlob
mysql.TypeMediumBlob, mysql.TypeLongBlob,
// mysql.TypeBlob mysql.TypeVarString
mysql.TypeBlob, mysql.TypeVarchar,
// mysql.TypeString mysql.TypeGeometry
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeTiDBVectorFloat32
mysql.TypeVarchar,
},
/* mysql.TypeString -> */
{
// mysql.TypeUnspecified mysql.TypeTiny
mysql.TypeString, mysql.TypeString,
// mysql.TypeShort mysql.TypeLong
mysql.TypeString, mysql.TypeString,
// mysql.TypeFloat mysql.TypeDouble
mysql.TypeString, mysql.TypeString,
// mysql.TypeNull mysql.TypeTimestamp
mysql.TypeString, mysql.TypeString,
// mysql.TypeLonglong mysql.TypeInt24
mysql.TypeString, mysql.TypeString,
// mysql.TypeDate mysql.TypeTime
mysql.TypeString, mysql.TypeString,
// mysql.TypeDatetime mysql.TypeYear
mysql.TypeString, mysql.TypeString,
// mysql.TypeNewDate mysql.TypeVarchar
mysql.TypeString, mysql.TypeVarchar,
// mysql.TypeBit <16>-<244>
mysql.TypeString,
// mysql.TypeJSON
mysql.TypeString,
// mysql.TypeNewDecimal mysql.TypeEnum
mysql.TypeString, mysql.TypeString,
// mysql.TypeSet mysql.TypeTinyBlob
mysql.TypeString, mysql.TypeTinyBlob,
// mysql.TypeMediumBlob mysql.TypeLongBlob
mysql.TypeMediumBlob, mysql.TypeLongBlob,
// mysql.TypeBlob mysql.TypeVarString
mysql.TypeBlob, mysql.TypeVarchar,
// mysql.TypeString mysql.TypeGeometry
mysql.TypeString, mysql.TypeString,
// mysql.TypeTiDBVectorFloat32
mysql.TypeString,
},
/* mysql.TypeGeometry -> */
{
// mysql.TypeUnspecified mysql.TypeTiny
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeShort mysql.TypeLong
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeFloat mysql.TypeDouble
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeNull mysql.TypeTimestamp
mysql.TypeGeometry, mysql.TypeVarchar,
// mysql.TypeLonglong mysql.TypeInt24
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeDate mysql.TypeTime
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeDatetime mysql.TypeYear
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeNewDate mysql.TypeVarchar
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeBit <16>-<244>
mysql.TypeVarchar,
// mysql.TypeJSON
mysql.TypeVarchar,
// mysql.TypeNewDecimal mysql.TypeEnum
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeSet mysql.TypeTinyBlob
mysql.TypeVarchar, mysql.TypeTinyBlob,
// mysql.TypeMediumBlob mysql.TypeLongBlob
mysql.TypeMediumBlob, mysql.TypeLongBlob,
// mysql.TypeBlob mysql.TypeVarString
mysql.TypeBlob, mysql.TypeVarchar,
// mysql.TypeString mysql.TypeGeometry
mysql.TypeString, mysql.TypeGeometry,
// mysql.TypeTiDBVectorFloat32
mysql.TypeVarchar,
},
/* mysql.TypeTiDBVectorFloat32 -> */
{
// mysql.TypeUnspecified mysql.TypeTiny
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeShort mysql.TypeLong
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeNewFloat mysql.TypeDouble
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeNull mysql.TypeTimestamp
mysql.TypeTiDBVectorFloat32, mysql.TypeVarchar,
// mysql.TypeLongLONG mysql.TypeInt24
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeDate MYSQL_TYPE_TIME
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeDatetime MYSQL_TYPE_YEAR
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeNewDate mysql.TypeVarchar
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeBit <16>-<244>
mysql.TypeVarchar,
// mysql.TypeJSON
mysql.TypeVarchar,
// mysql.TypeNewDecimal MYSQL_TYPE_ENUM
mysql.TypeVarchar, mysql.TypeVarchar,
// mysql.TypeSet mysql.TypeTinyBlob
mysql.TypeVarchar, mysql.TypeLongBlob,
// mysql.TypeMediumBlob mysql.TypeLongBlob
mysql.TypeLongBlob, mysql.TypeLongBlob,
// mysql.TypeBlob mysql.TypeVarString
mysql.TypeLongBlob, mysql.TypeVarchar,
// mysql.TypeString MYSQL_TYPE_GEOMETRY
mysql.TypeString, mysql.TypeVarchar,
// mysql.TypeTiDBVectorFloat32
mysql.TypeTiDBVectorFloat32,
},
}
// SetBinChsClnFlag sets charset, collation as 'binary' and adds binaryFlag to FieldType.
func SetBinChsClnFlag(ft *FieldType) {
ft.SetCharset(charset.CharsetBin)
ft.SetCollate(charset.CollationBin)
ft.AddFlag(mysql.BinaryFlag)
}
// VarStorageLen indicates this column is a variable length column.
const VarStorageLen = ast.VarStorageLen
// CheckModifyTypeCompatible checks whether changes column type to another is compatible and can be changed.
// If types are compatible and can be directly changed, nil err will be returned; otherwise the types are incompatible.
// There are two cases when types incompatible:
// 1. returned canReorg == true: types can be changed by reorg
// 2. returned canReorg == false: type change not supported yet
func CheckModifyTypeCompatible(origin *FieldType, to *FieldType) (canReorg bool, err error) {
// Deal with the same type.
if origin.GetType() == to.GetType() {
if origin.GetType() == mysql.TypeEnum || origin.GetType() == mysql.TypeSet {
typeVar := "set"
if origin.GetType() == mysql.TypeEnum {
typeVar = "enum"
}
if len(to.GetElems()) < len(origin.GetElems()) {
msg := fmt.Sprintf("the number of %s column's elements is less than the original: %d", typeVar, len(origin.GetElems()))
return true, dbterror.ErrUnsupportedModifyColumn.GenWithStackByArgs(msg)
}
for index, originElem := range origin.GetElems() {
toElem := to.GetElems()[index]
if originElem != toElem {
msg := fmt.Sprintf("cannot modify %s column value %s to %s", typeVar, originElem, toElem)
return true, dbterror.ErrUnsupportedModifyColumn.GenWithStackByArgs(msg)
}
}
}
if origin.GetType() == mysql.TypeNewDecimal {
// Floating-point and fixed-point types also can be UNSIGNED. As with integer types, this attribute prevents
// negative values from being stored in the column. Unlike the integer types, the upper range of column values
// remains the same.
if to.GetFlen() != origin.GetFlen() || to.GetDecimal() != origin.GetDecimal() || mysql.HasUnsignedFlag(to.GetFlag()) != mysql.HasUnsignedFlag(origin.GetFlag()) {
msg := fmt.Sprintf("decimal change from decimal(%d, %d) to decimal(%d, %d)", origin.GetFlen(), origin.GetDecimal(), to.GetFlen(), to.GetDecimal())
return true, dbterror.ErrUnsupportedModifyColumn.GenWithStackByArgs(msg)
}
}
needReorg, reason := needReorgToChange(origin, to)
if !needReorg {
return false, nil
}
return true, dbterror.ErrUnsupportedModifyColumn.GenWithStackByArgs(reason)
}
// Deal with the different type.
if !checkTypeChangeSupported(origin, to) {
unsupportedMsg := fmt.Sprintf("change from original type %v to %v is currently unsupported yet", origin.CompactStr(), to.CompactStr())
return false, dbterror.ErrUnsupportedModifyColumn.GenWithStackByArgs(unsupportedMsg)
}
// Check if different type can directly convert and no need to reorg.
stringToString := IsString(origin.GetType()) && IsString(to.GetType())
integerToInteger := mysql.IsIntegerType(origin.GetType()) && mysql.IsIntegerType(to.GetType())
if stringToString || integerToInteger {
needReorg, reason := needReorgToChange(origin, to)
if !needReorg {
return false, nil
}
return true, dbterror.ErrUnsupportedModifyColumn.GenWithStackByArgs(reason)
}
notCompatibleMsg := fmt.Sprintf("type %v not match origin %v", to.CompactStr(), origin.CompactStr())
return true, dbterror.ErrUnsupportedModifyColumn.GenWithStackByArgs(notCompatibleMsg)
}
func needReorgToChange(origin *FieldType, to *FieldType) (needReorg bool, reasonMsg string) {
toFlen := to.GetFlen()
originFlen := origin.GetFlen()
if mysql.IsIntegerType(to.GetType()) && mysql.IsIntegerType(origin.GetType()) {
// For integers, we should ignore the potential display length represented by flen, using
// the default flen of the type.
originFlen, _ = mysql.GetDefaultFieldLengthAndDecimal(origin.GetType())
toFlen, _ = mysql.GetDefaultFieldLengthAndDecimal(to.GetType())
}
if ConvertBetweenCharAndVarchar(origin.GetType(), to.GetType()) {
return true, "conversion between char and varchar string needs reorganization"
}
if toFlen > 0 && toFlen != originFlen {
if toFlen < originFlen {
return true, fmt.Sprintf("length %d is less than origin %d", toFlen, originFlen)
}
// Due to the behavior of padding \x00 at binary type, we need to reorg when binary length changed
isBinaryType := func(tp *FieldType) bool { return tp.GetType() == mysql.TypeString && IsBinaryStr(tp) }
if isBinaryType(origin) && isBinaryType(to) {
return true, "can't change binary types of different length"
}
}
if to.GetDecimal() > 0 && to.GetDecimal() < origin.GetDecimal() {
return true, fmt.Sprintf("decimal %d is less than origin %d", to.GetDecimal(), origin.GetDecimal())
}
if mysql.HasUnsignedFlag(origin.GetFlag()) != mysql.HasUnsignedFlag(to.GetFlag()) {
return true, "can't change unsigned integer to signed or vice versa"
}
return false, ""
}
func checkTypeChangeSupported(origin *FieldType, to *FieldType) bool {
if (IsTypeTime(origin.GetType()) || origin.GetType() == mysql.TypeDuration || origin.GetType() == mysql.TypeYear ||
IsString(origin.GetType()) || origin.GetType() == mysql.TypeJSON) &&
to.GetType() == mysql.TypeBit {
// TODO: Currently date/datetime/timestamp/time/year/string/json data type cast to bit are not compatible with mysql, should fix here after compatible.
return false
}
if (IsTypeTime(origin.GetType()) || origin.GetType() == mysql.TypeDuration || origin.GetType() == mysql.TypeYear ||
origin.GetType() == mysql.TypeNewDecimal || origin.GetType() == mysql.TypeFloat || origin.GetType() == mysql.TypeDouble || origin.GetType() == mysql.TypeJSON || origin.GetType() == mysql.TypeBit) &&
(to.GetType() == mysql.TypeEnum || to.GetType() == mysql.TypeSet) {
// TODO: Currently date/datetime/timestamp/time/year/decimal/float/double/json/bit cast to enum/set are not support yet, should fix here after supported.
return false
}
if (origin.GetType() == mysql.TypeEnum || origin.GetType() == mysql.TypeSet || origin.GetType() == mysql.TypeBit ||
origin.GetType() == mysql.TypeNewDecimal || origin.GetType() == mysql.TypeFloat || origin.GetType() == mysql.TypeDouble) &&
(IsTypeTime(to.GetType())) {
// TODO: Currently enum/set/bit/decimal/float/double cast to date/datetime/timestamp type are not support yet, should fix here after supported.
return false
}
if origin.GetType() == mysql.TypeTiDBVectorFloat32 || to.GetType() == mysql.TypeTiDBVectorFloat32 {
// TODO: Vector type not supported.
return false
}
if (origin.GetType() == mysql.TypeEnum || origin.GetType() == mysql.TypeSet || origin.GetType() == mysql.TypeBit) &&
to.GetType() == mysql.TypeDuration {
// TODO: Currently enum/set/bit cast to time are not support yet, should fix here after supported.
return false
}
return true
}
// ConvertBetweenCharAndVarchar is that Column type conversion between varchar to char need reorganization because
// 1. varchar -> char: char type is stored with the padding removed. All the indexes need to be rewritten.
// 2. char -> varchar: the index value encoding of secondary index on clustered primary key tables is different.
// These secondary indexes need to be rewritten.
func ConvertBetweenCharAndVarchar(oldCol, newCol byte) bool {
return (IsTypeVarchar(oldCol) && newCol == mysql.TypeString) ||
(oldCol == mysql.TypeString && IsTypeVarchar(newCol) && collate.NewCollationEnabled())
}
// IsVarcharTooBigFieldLength check if the varchar type column exceeds the maximum length limit.
func IsVarcharTooBigFieldLength(colDefTpFlen int, colDefName, setCharset string) error {
desc, err := charset.GetCharsetInfo(setCharset)
if err != nil {
return errors.Trace(err)
}
maxFlen := mysql.MaxFieldVarCharLength
maxFlen /= desc.Maxlen
if colDefTpFlen != UnspecifiedLength && colDefTpFlen > maxFlen {
return ErrTooBigFieldLength.GenWithStack("Column length too big for column '%s' (max = %d); use BLOB or TEXT instead", colDefName, maxFlen)
}
return nil
}
// Copyright 2022 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package types
// FieldTypeBuilder constructor
type FieldTypeBuilder struct {
ft FieldType
}
// NewFieldTypeBuilder will allocate the builder on the heap.
func NewFieldTypeBuilder() *FieldTypeBuilder {
return &FieldTypeBuilder{}
}
// GetType returns type of the ft
func (b *FieldTypeBuilder) GetType() byte {
return b.ft.GetType()
}
// GetFlag returns flag of the ft
func (b *FieldTypeBuilder) GetFlag() uint {
return b.ft.GetFlag()
}
// GetFlen returns length of the ft
func (b *FieldTypeBuilder) GetFlen() int {
return b.ft.GetFlen()
}
// GetDecimal returns decimals of the ft
func (b *FieldTypeBuilder) GetDecimal() int {
return b.ft.GetDecimal()
}
// GetCharset returns charset of the ft
func (b *FieldTypeBuilder) GetCharset() string {
return b.ft.GetCharset()
}
// GetCollate returns collation of the ft
func (b *FieldTypeBuilder) GetCollate() string {
return b.ft.GetCollate()
}
// SetType sets type of the ft
func (b *FieldTypeBuilder) SetType(tp byte) *FieldTypeBuilder {
b.ft.SetType(tp)
return b
}
// SetFlag sets flag of the ft
func (b *FieldTypeBuilder) SetFlag(flag uint) *FieldTypeBuilder {
b.ft.SetFlag(flag)
return b
}
// AddFlag adds flag to the ft
func (b *FieldTypeBuilder) AddFlag(flag uint) *FieldTypeBuilder {
b.ft.AddFlag(flag)
return b
}
// ToggleFlag toggles flag of the ft
func (b *FieldTypeBuilder) ToggleFlag(flag uint) *FieldTypeBuilder {
b.ft.ToggleFlag(flag)
return b
}
// DelFlag deletes flag of the ft
func (b *FieldTypeBuilder) DelFlag(flag uint) *FieldTypeBuilder {
b.ft.DelFlag(flag)
return b
}
// SetFlen sets length of the ft
func (b *FieldTypeBuilder) SetFlen(flen int) *FieldTypeBuilder {
b.ft.SetFlen(flen)
return b
}
// SetDecimal sets decimal of the ft
func (b *FieldTypeBuilder) SetDecimal(decimal int) *FieldTypeBuilder {
b.ft.SetDecimal(decimal)
return b
}
// SetCharset sets charset of the ft
func (b *FieldTypeBuilder) SetCharset(charset string) *FieldTypeBuilder {
b.ft.SetCharset(charset)
return b
}
// SetCollate sets collation of the ft
func (b *FieldTypeBuilder) SetCollate(collate string) *FieldTypeBuilder {
b.ft.SetCollate(collate)
return b
}
// SetElems sets elements of the ft
func (b *FieldTypeBuilder) SetElems(elems []string) *FieldTypeBuilder {
b.ft.SetElems(elems)
return b
}
// SetArray sets array of the ft
func (b *FieldTypeBuilder) SetArray(x bool) *FieldTypeBuilder {
b.ft.SetArray(x)
return b
}
// Build returns the ft
func (b *FieldTypeBuilder) Build() FieldType {
return b.ft
}
// BuildP returns pointer of the ft
func (b *FieldTypeBuilder) BuildP() *FieldType {
return &b.ft
}
// Copyright 2015 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package types
import (
"math"
"strconv"
"strings"
"github.com/pingcap/errors"
)
const (
// UnspecifiedFsp is the unspecified fractional seconds part.
UnspecifiedFsp = -1
// MaxFsp is the maximum digit of fractional seconds part.
MaxFsp = 6
// MinFsp is the minimum digit of fractional seconds part.
MinFsp = 0
// DefaultFsp is the default digit of fractional seconds part.
// MySQL use 0 as the default Fsp.
DefaultFsp = 0
)
// CheckFsp checks whether fsp is in valid range.
func CheckFsp(fsp int) (int, error) {
if fsp == UnspecifiedFsp {
return DefaultFsp, nil
}
if fsp < MinFsp {
return DefaultFsp, errors.Errorf("Invalid fsp %d", fsp)
} else if fsp > MaxFsp {
return MaxFsp, nil
}
return fsp, nil
}
// ParseFrac parses the input string according to fsp, returns the microsecond,
// and also a bool value to indice overflow. eg:
// "999" fsp=2 will overflow.
func ParseFrac(s string, fsp int) (v int, overflow bool, err error) {
if len(s) == 0 {
return 0, false, nil
}
fsp, err = CheckFsp(fsp)
if err != nil {
return 0, false, errors.Trace(err)
}
if fsp >= len(s) {
tmp, e := strconv.ParseInt(s, 10, 64)
if e != nil {
return 0, false, errors.Trace(e)
}
v = int(float64(tmp) * math.Pow10(MaxFsp-len(s)))
return
}
// Round when fsp < string length.
tmp, e := strconv.ParseInt(s[:fsp+1], 10, 64)
if e != nil {
return 0, false, errors.Trace(e)
}
tmp = (tmp + 5) / 10
if float64(tmp) >= math.Pow10(fsp) {
// overflow
return 0, true, nil
}
// Get the final frac, with 6 digit number
// 1236 round 3 -> 124 -> 124000
// 0312 round 2 -> 3 -> 30000
// 999 round 2 -> 100 -> overflow
v = int(float64(tmp) * math.Pow10(MaxFsp-fsp))
return
}
// alignFrac is used to generate alignment frac, like `100` -> `100000` ,`-100` -> `-100000`
func alignFrac(s string, fsp int) string {
sl := len(s)
if sl > 0 && s[0] == '-' {
sl = sl - 1
}
if sl < fsp {
return s + strings.Repeat("0", fsp-sl)
}
return s
}
// Copyright 2022 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
package types
// FuzzMarshalJSON implements the fuzzer
func FuzzUnmarshalJSON(data []byte) int {
bj := new(BinaryJSON)
bj.UnmarshalJSON(data)
return 1
}
// Copyright 2022 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
package types
// FuzzNewBitLiteral implements the fuzzer
func FuzzNewBitLiteral(data []byte) int {
_, err := NewBitLiteral(string(data))
if err != nil {
return 0
}
return 1
}
// Copyright 2022 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
package types
// FuzzNewHexLiteral implements the fuzzer
func FuzzNewHexLiteral(data []byte) int {
_, err := NewHexLiteral(string(data))
if err != nil {
return 0
}
return 1
}
// Copyright 2015 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package types
import (
"math"
"strconv"
"strings"
"unicode"
"github.com/pingcap/errors"
)
// RoundFloat rounds float val to the nearest even integer value with float64 format, like MySQL Round function.
// RoundFloat uses default rounding mode, see https://dev.mysql.com/doc/refman/5.7/en/precision-math-rounding.html
// so rounding use "round to nearest even".
// e.g, 1.5 -> 2, -1.5 -> -2.
func RoundFloat(f float64) float64 {
return math.RoundToEven(f)
}
// Round rounds the argument f to dec decimal places.
// dec defaults to 0 if not specified. dec can be negative
// to cause dec digits left of the decimal point of the
// value f to become zero.
func Round(f float64, dec int) float64 {
shift := math.Pow10(dec)
tmp := f * shift
if math.IsInf(tmp, 0) {
return f
}
result := RoundFloat(tmp) / shift
if math.IsNaN(result) {
return 0
}
return result
}
// Truncate truncates the argument f to dec decimal places.
// dec defaults to 0 if not specified. dec can be negative
// to cause dec digits left of the decimal point of the
// value f to become zero.
func Truncate(f float64, dec int) float64 {
shift := math.Pow10(dec)
tmp := f * shift
// When dec is larger than 308, the shift will be inf.
// At the same time, if f is 0, tmp will be NaN.
if math.IsInf(tmp, 0) || math.IsNaN(tmp) {
return f
}
if shift == 0.0 {
if math.IsNaN(f) {
return f
}
return 0.0
}
return math.Trunc(tmp) / shift
}
// GetMaxFloat gets the max float for given flen and decimal.
func GetMaxFloat(flen int, decimal int) float64 {
intPartLen := flen - decimal
f := math.Pow10(intPartLen)
f -= math.Pow10(-decimal)
return f
}
// TruncateFloat tries to truncate f.
// If the result exceeds the max/min float that flen/decimal allowed, returns the max/min float allowed.
func TruncateFloat(f float64, flen int, decimal int) (float64, error) {
if math.IsNaN(f) {
// nan returns 0
return 0, ErrOverflow.GenWithStackByArgs("DOUBLE", "")
}
maxF := GetMaxFloat(flen, decimal)
if !math.IsInf(f, 0) {
f = Round(f, decimal)
}
var err error
if f > maxF {
f = maxF
err = ErrOverflow.GenWithStackByArgs("DOUBLE", "")
} else if f < -maxF {
f = -maxF
err = ErrOverflow.GenWithStackByArgs("DOUBLE", "")
}
return f, errors.Trace(err)
}
// TruncateFloatToString is used to truncate float to string where dec is the number of digits after the decimal point.
func TruncateFloatToString(f float64, dec int) string {
f = Truncate(f, dec)
return strconv.FormatFloat(f, 'f', -1, 64)
}
func isSpace(c byte) bool {
return c == ' ' || c == '\t'
}
func isDigit(c byte) bool {
return c >= '0' && c <= '9'
}
// Returns true if the given byte is an ASCII punctuation character (printable and non-alphanumeric).
func isPunctuation(c byte) bool {
return (c >= 0x21 && c <= 0x2F) || (c >= 0x3A && c <= 0x40) || (c >= 0x5B && c <= 0x60) || (c >= 0x7B && c <= 0x7E)
}
const (
maxUint = uint64(math.MaxUint64)
uintCutOff = maxUint/uint64(10) + 1
intCutOff = uint64(math.MaxInt64) + 1
)
// strToInt converts a string to an integer in best effort.
func strToInt(str string) (int64, error) {
str = strings.TrimSpace(str)
if len(str) == 0 {
return 0, ErrTruncated
}
negative := false
i := 0
if str[i] == '-' {
negative = true
i++
} else if str[i] == '+' {
i++
}
var (
err error
hasNum = false
)
r := uint64(0)
for ; i < len(str); i++ {
if !unicode.IsDigit(rune(str[i])) {
err = ErrTruncated
break
}
hasNum = true
if r >= uintCutOff {
r = 0
err = errors.Trace(ErrBadNumber)
break
}
r = r * uint64(10)
r1 := r + uint64(str[i]-'0')
if r1 < r || r1 > maxUint {
r = 0
err = errors.Trace(ErrBadNumber)
break
}
r = r1
}
if !hasNum {
err = ErrTruncated
}
if !negative && r >= intCutOff {
return math.MaxInt64, errors.Trace(ErrBadNumber)
}
if negative && r > intCutOff {
return math.MinInt64, errors.Trace(ErrBadNumber)
}
if negative {
r = -r
}
return int64(r), err
}
// DecimalLength2Precision gets the precision.
func DecimalLength2Precision(length int, scale int, hasUnsignedFlag bool) int {
if scale > 0 {
length--
}
if hasUnsignedFlag || length > 0 {
length--
}
return length
}
// Precision2LengthNoTruncation gets the length.
func Precision2LengthNoTruncation(length int, scale int, hasUnsignedFlag bool) int {
if scale > 0 {
length++
}
if hasUnsignedFlag || length > 0 {
length++
}
return length
}
// Copyright 2017 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package types
import (
"bytes"
"cmp"
"encoding/base64"
"encoding/binary"
"encoding/json"
"fmt"
"math"
"math/bits"
"reflect"
"slices"
"strconv"
"strings"
"time"
"unicode/utf8"
"github.com/pingcap/errors"
"github.com/pingcap/tidb/pkg/parser/mysql"
"github.com/pingcap/tidb/pkg/parser/terror"
"github.com/pingcap/tidb/pkg/util/hack"
"github.com/pingcap/tidb/pkg/util/logutil"
"go.uber.org/zap"
)
/*
The binary JSON format from MySQL 5.7 is as follows:
JSON doc ::= type value
type ::=
0x01 | // large JSON object
0x03 | // large JSON array
0x04 | // literal (true/false/null)
0x05 | // int16
0x06 | // uint16
0x07 | // int32
0x08 | // uint32
0x09 | // int64
0x0a | // uint64
0x0b | // double
0x0c | // utf8mb4 string
0x0d | // opaque value
0x0e | // date
0x0f | // datetime
0x10 | // timestamp
0x11 | // time
value ::=
object |
array |
literal |
number |
string |
opaque |
time |
duration |
object ::= element-count size key-entry* value-entry* key* value*
array ::= element-count size value-entry* value*
// number of members in object or number of elements in array
element-count ::= uint32
// number of bytes in the binary representation of the object or array
size ::= uint32
key-entry ::= key-offset key-length
key-offset ::= uint32
key-length ::= uint16 // key length must be less than 64KB
value-entry ::= type offset-or-inlined-value
// This field holds either the offset to where the value is stored,
// or the value itself if it is small enough to be inlined (that is,
// if it is a JSON literal or a small enough [u]int).
offset-or-inlined-value ::= uint32
key ::= utf8mb4-data
literal ::=
0x00 | // JSON null literal
0x01 | // JSON true literal
0x02 | // JSON false literal
number ::= .... // little-endian format for [u]int(16|32|64), whereas
// double is stored in a platform-independent, eight-byte
// format using float8store()
string ::= data-length utf8mb4-data
data-length ::= uint8* // If the high bit of a byte is 1, the length
// field is continued in the next byte,
// otherwise it is the last byte of the length
// field. So we need 1 byte to represent
// lengths up to 127, 2 bytes to represent
// lengths up to 16383, and so on...
opaque ::= typeId data-length byte*
time ::= uint64
duration ::= uint64 uint32
typeId ::= byte
*/
var jsonZero = CreateBinaryJSON(uint64(0))
const maxJSONDepth = 100
// BinaryJSON represents a binary encoded JSON object.
// It can be randomly accessed without deserialization.
type BinaryJSON struct {
TypeCode JSONTypeCode
Value []byte
}
// String implements fmt.Stringer interface.
func (bj BinaryJSON) String() string {
out, err := bj.MarshalJSON()
terror.Log(err)
return string(out)
}
// Copy makes a copy of the BinaryJSON
func (bj BinaryJSON) Copy() BinaryJSON {
buf := make([]byte, len(bj.Value))
copy(buf, bj.Value)
return BinaryJSON{TypeCode: bj.TypeCode, Value: buf}
}
// MarshalJSON implements the json.Marshaler interface.
func (bj BinaryJSON) MarshalJSON() ([]byte, error) {
buf := make([]byte, 0, len(bj.Value)*3/2)
return bj.marshalTo(buf)
}
func (bj BinaryJSON) marshalTo(buf []byte) ([]byte, error) {
switch bj.TypeCode {
case JSONTypeCodeOpaque:
return jsonMarshalOpaqueTo(buf, bj.GetOpaque()), nil
case JSONTypeCodeString:
return jsonMarshalStringTo(buf, bj.GetString()), nil
case JSONTypeCodeLiteral:
return jsonMarshalLiteralTo(buf, bj.Value[0]), nil
case JSONTypeCodeInt64:
return strconv.AppendInt(buf, bj.GetInt64(), 10), nil
case JSONTypeCodeUint64:
return strconv.AppendUint(buf, bj.GetUint64(), 10), nil
case JSONTypeCodeFloat64:
return bj.marshalFloat64To(buf)
case JSONTypeCodeArray:
return bj.marshalArrayTo(buf)
case JSONTypeCodeObject:
return bj.marshalObjTo(buf)
case JSONTypeCodeDate, JSONTypeCodeDatetime, JSONTypeCodeTimestamp:
return jsonMarshalTimeTo(buf, bj.GetTime()), nil
case JSONTypeCodeDuration:
return jsonMarshalDurationTo(buf, bj.GetDuration()), nil
}
return buf, nil
}
// IsZero return a boolean indicate whether BinaryJSON is Zero
func (bj BinaryJSON) IsZero() bool {
// This behavior is different on MySQL 5.7 and 8.0
//
// In MySQL 5.7, most of these non-integer values are 0, and return a warning:
// "Invalid JSON value for CAST to INTEGER from column j"
//
// In MySQL 8, most of these non-integer values are not zero, with a warning:
// > "Evaluating a JSON value in SQL boolean context does an implicit comparison
// > against JSON integer 0; if this is not what you want, consider converting
// > JSON to a SQL numeric type with JSON_VALUE RETURNING"
//
// TODO: return a warning as MySQL 8 does
return CompareBinaryJSON(bj, jsonZero) == 0
}
// GetInt64 gets the int64 value.
func (bj BinaryJSON) GetInt64() int64 {
return int64(jsonEndian.Uint64(bj.Value))
}
// GetUint64 gets the uint64 value.
func (bj BinaryJSON) GetUint64() uint64 {
return jsonEndian.Uint64(bj.Value)
}
// GetFloat64 gets the float64 value.
func (bj BinaryJSON) GetFloat64() float64 {
return math.Float64frombits(bj.GetUint64())
}
// GetString gets the string value.
func (bj BinaryJSON) GetString() []byte {
strLen, lenLen := binary.Uvarint(bj.Value)
return bj.Value[lenLen : lenLen+int(strLen)]
}
// Opaque represents a raw binary type
type Opaque struct {
// TypeCode is the same with database type code
TypeCode byte
// Buf is the underlying bytes of the data
Buf []byte
}
// GetOpaque gets the opaque value
func (bj BinaryJSON) GetOpaque() Opaque {
typ := bj.Value[0]
strLen, lenLen := binary.Uvarint(bj.Value[1:])
bufStart := lenLen + 1
return Opaque{
TypeCode: typ,
Buf: bj.Value[bufStart : bufStart+int(strLen)],
}
}
// GetTime gets the time value with default fsp
//
// Deprecated: use GetTimeWithFsp instead. The `BinaryJSON` doesn't contain the fsp information, so the caller
// should always provide the fsp.
func (bj BinaryJSON) GetTime() Time {
return bj.GetTimeWithFsp(DefaultFsp)
}
// GetTimeWithFsp gets the time value with given fsp
func (bj BinaryJSON) GetTimeWithFsp(fsp int) Time {
coreTime := CoreTime(bj.GetUint64())
tp := mysql.TypeDate
if bj.TypeCode == JSONTypeCodeDatetime {
tp = mysql.TypeDatetime
} else if bj.TypeCode == JSONTypeCodeTimestamp {
tp = mysql.TypeTimestamp
}
return NewTime(coreTime, tp, fsp)
}
// GetDuration gets the duration value
func (bj BinaryJSON) GetDuration() Duration {
return Duration{
time.Duration(bj.GetInt64()),
int(jsonEndian.Uint32(bj.Value[8:])),
}
}
// GetOpaqueFieldType returns the type of opaque value
func (bj BinaryJSON) GetOpaqueFieldType() byte {
return bj.Value[0]
}
// GetKeys gets the keys of the object
func (bj BinaryJSON) GetKeys() BinaryJSON {
count := bj.GetElemCount()
ret := make([]BinaryJSON, 0, count)
for i := range count {
ret = append(ret, CreateBinaryJSON(string(bj.objectGetKey(i))))
}
return buildBinaryJSONArray(ret)
}
// GetElemCount gets the count of Object or Array.
func (bj BinaryJSON) GetElemCount() int {
return int(jsonEndian.Uint32(bj.Value))
}
// ArrayGetElem gets the element of the index `idx`.
func (bj BinaryJSON) ArrayGetElem(idx int) BinaryJSON {
return bj.valEntryGet(headerSize + idx*valEntrySize)
}
func (bj BinaryJSON) objectGetKey(i int) []byte {
keyOff := int(jsonEndian.Uint32(bj.Value[headerSize+i*keyEntrySize:]))
keyLen := int(jsonEndian.Uint16(bj.Value[headerSize+i*keyEntrySize+keyLenOff:]))
return bj.Value[keyOff : keyOff+keyLen]
}
func (bj BinaryJSON) objectGetVal(i int) BinaryJSON {
elemCount := bj.GetElemCount()
return bj.valEntryGet(headerSize + elemCount*keyEntrySize + i*valEntrySize)
}
func (bj BinaryJSON) valEntryGet(valEntryOff int) BinaryJSON {
tpCode := bj.Value[valEntryOff]
valOff := jsonEndian.Uint32(bj.Value[valEntryOff+valTypeSize:])
switch tpCode {
case JSONTypeCodeLiteral:
return BinaryJSON{TypeCode: JSONTypeCodeLiteral, Value: bj.Value[valEntryOff+valTypeSize : valEntryOff+valTypeSize+1]}
case JSONTypeCodeUint64, JSONTypeCodeInt64, JSONTypeCodeFloat64:
return BinaryJSON{TypeCode: tpCode, Value: bj.Value[valOff : valOff+8]}
case JSONTypeCodeString:
strLen, lenLen := binary.Uvarint(bj.Value[valOff:])
totalLen := uint32(lenLen) + uint32(strLen)
return BinaryJSON{TypeCode: tpCode, Value: bj.Value[valOff : valOff+totalLen]}
case JSONTypeCodeOpaque:
strLen, lenLen := binary.Uvarint(bj.Value[valOff+1:])
totalLen := 1 + uint32(lenLen) + uint32(strLen)
return BinaryJSON{TypeCode: tpCode, Value: bj.Value[valOff : valOff+totalLen]}
case JSONTypeCodeDate, JSONTypeCodeDatetime, JSONTypeCodeTimestamp:
return BinaryJSON{TypeCode: tpCode, Value: bj.Value[valOff : valOff+8]}
case JSONTypeCodeDuration:
return BinaryJSON{TypeCode: tpCode, Value: bj.Value[valOff : valOff+12]}
}
dataSize := jsonEndian.Uint32(bj.Value[valOff+dataSizeOff:])
return BinaryJSON{TypeCode: tpCode, Value: bj.Value[valOff : valOff+dataSize]}
}
func (bj BinaryJSON) marshalFloat64To(buf []byte) ([]byte, error) {
// NOTE: copied from Go standard library.
// TODO: this function is very similar to `util.AppendFormatFloat`, it'd be better to unify them.
// Now the `util.AppendFormatFloat` is an internal function of `server` package, and the `marshalFloat64To`
// handles the tailing `.0` specially, so they are not merged yet.
f := bj.GetFloat64()
if math.IsInf(f, 0) || math.IsNaN(f) {
return buf, &json.UnsupportedValueError{Str: strconv.FormatFloat(f, 'g', -1, 64)}
}
// Convert as if by ES6 number to string conversion.
// This matches most other JSON generators.
// See golang.org/issue/6384 and golang.org/issue/14135.
// Like fmt %g, but the exponent cutoffs are different
// and exponents themselves are not padded to two digits.
abs := math.Abs(f)
ffmt := byte('f')
// Note: Must use float32 comparisons for underlying float32 value to get precise cutoffs right.
if abs != 0 {
// The scientific notation range for MySQL is different from Go JSON. Ref `util.AppendFormatFloat`
if abs < 1e-15 || abs >= 1e15 {
ffmt = 'e'
}
}
floatPos := len(buf)
buf = strconv.AppendFloat(buf, f, ffmt, -1, 64)
floatBuf := buf[floatPos:]
if ffmt == 'e' {
// clean up e-09 to e-9
n := len(floatBuf)
if n >= 4 && buf[n-4] == 'e' && buf[n-3] == '-' && buf[n-2] == '0' {
buf[n-2] = buf[n-1]
buf = buf[:n-1]
}
// remove the leading '+' in the exponent
plusPos := bytes.IndexRune(floatBuf, '+')
if plusPos > 0 {
buf = slices.Delete(buf, floatPos+plusPos, floatPos+plusPos+1)
}
} else {
// keeps at least one digit even if `f` is an integer
// assuming that this `floatBuf` will not be too long, it's fine to scan it
// to find the dot
if !bytes.ContainsRune(floatBuf, '.') {
buf = append(buf, '.')
buf = append(buf, '0')
}
}
return buf, nil
}
func (bj BinaryJSON) marshalArrayTo(buf []byte) ([]byte, error) {
elemCount := int(jsonEndian.Uint32(bj.Value))
buf = append(buf, '[')
for i := range elemCount {
if i != 0 {
buf = append(buf, ", "...)
}
var err error
buf, err = bj.ArrayGetElem(i).marshalTo(buf)
if err != nil {
return nil, errors.Trace(err)
}
}
return append(buf, ']'), nil
}
func (bj BinaryJSON) marshalObjTo(buf []byte) ([]byte, error) {
elemCount := int(jsonEndian.Uint32(bj.Value))
buf = append(buf, '{')
for i := range elemCount {
if i != 0 {
buf = append(buf, ", "...)
}
buf = jsonMarshalStringTo(buf, bj.objectGetKey(i))
buf = append(buf, ": "...)
var err error
buf, err = bj.objectGetVal(i).marshalTo(buf)
if err != nil {
return nil, errors.Trace(err)
}
}
return append(buf, '}'), nil
}
func jsonMarshalStringTo(buf, s []byte) []byte {
// NOTE: copied from Go standard library.
// NOTE: keep in sync with string above.
buf = append(buf, '"')
start := 0
for i := 0; i < len(s); {
if b := s[i]; b < utf8.RuneSelf {
if jsonSafeSet[b] {
i++
continue
}
if start < i {
buf = append(buf, s[start:i]...)
}
switch b {
case '\\', '"':
buf = append(buf, '\\', b)
case '\n':
buf = append(buf, '\\', 'n')
case '\r':
buf = append(buf, '\\', 'r')
case '\t':
buf = append(buf, '\\', 't')
case '\b':
buf = append(buf, '\\', 'b')
case '\f':
buf = append(buf, '\\', 'f')
default:
// This encodes bytes < 0x20 except for \t, \n, \r, \b, \f.
// If escapeHTML is set, it also escapes <, >, and &
// because they can lead to security holes when
// user-controlled strings are rendered into JSON
// and served to some browsers.
buf = append(buf, `\u00`...)
buf = append(buf, jsonHexChars[b>>4], jsonHexChars[b&0xF])
}
i++
start = i
continue
}
c, size := utf8.DecodeRune(s[i:])
if c == utf8.RuneError && size == 1 {
if start < i {
buf = append(buf, s[start:i]...)
}
buf = append(buf, `\ufffd`...)
i += size
start = i
continue
}
// U+2028 is LINE SEPARATOR.
// U+2029 is PARAGRAPH SEPARATOR.
// They are both technically valid characters in JSON strings,
// but don't work in JSONP, which has to be evaluated as JavaScript,
// and can lead to security holes there. It is valid JSON to
// escape them, so we do so unconditionally.
// See http://timelessrepo.com/json-isnt-a-javascript-subset for discussion.
if c == '\u2028' || c == '\u2029' {
if start < i {
buf = append(buf, s[start:i]...)
}
buf = append(buf, `\u202`...)
buf = append(buf, jsonHexChars[c&0xF])
i += size
start = i
continue
}
i += size
}
if start < len(s) {
buf = append(buf, s[start:]...)
}
buf = append(buf, '"')
return buf
}
// opaque value will yield "base64:typeXX:<base64 encoded string>"
func jsonMarshalOpaqueTo(buf []byte, opaque Opaque) []byte {
b64 := base64.StdEncoding.EncodeToString(opaque.Buf)
output := fmt.Sprintf(`"base64:type%d:%s"`, opaque.TypeCode, b64)
// as the base64 string is simple and predictable, it could be appended
// to the buf directly.
buf = append(buf, output...)
return buf
}
func jsonMarshalLiteralTo(b []byte, litType byte) []byte {
switch litType {
case JSONLiteralFalse:
return append(b, "false"...)
case JSONLiteralTrue:
return append(b, "true"...)
case JSONLiteralNil:
return append(b, "null"...)
}
return b
}
func jsonMarshalTimeTo(buf []byte, time Time) []byte {
// printing json datetime/duration will always keep 6 fsp
time.SetFsp(6)
buf = append(buf, []byte(quoteJSONString(time.String()))...)
return buf
}
func jsonMarshalDurationTo(buf []byte, duration Duration) []byte {
// printing json datetime/duration will always keep 6 fsp
duration.Fsp = 6
buf = append(buf, []byte(quoteJSONString(duration.String()))...)
return buf
}
// ParseBinaryJSONFromString parses a json from string.
func ParseBinaryJSONFromString(s string) (bj BinaryJSON, err error) {
if len(s) == 0 {
err = ErrInvalidJSONText.GenWithStackByArgs("The document is empty")
return
}
data := hack.Slice(s)
if !json.Valid(data) {
err = ErrInvalidJSONText.GenWithStackByArgs("The document root must not be followed by other values.")
return
}
if err = bj.UnmarshalJSON(data); err != nil && !ErrJSONObjectKeyTooLong.Equal(err) && !ErrJSONDocumentTooDeep.Equal(err) {
err = ErrInvalidJSONText.GenWithStackByArgs(err)
}
return
}
// UnmarshalJSON implements the json.Unmarshaler interface.
func (bj *BinaryJSON) UnmarshalJSON(data []byte) error {
var decoder = json.NewDecoder(bytes.NewReader(data))
decoder.UseNumber()
var in any
err := decoder.Decode(&in)
if err != nil {
return errors.Trace(err)
}
newBj, err := CreateBinaryJSONWithCheck(in)
if err != nil {
return errors.Trace(err)
}
bj.TypeCode = newBj.TypeCode
bj.Value = newBj.Value
return nil
}
func getInt64FractionLength(i int64) int {
absInt := uint64(0)
if i < 0 {
absInt = uint64(-i)
} else {
absInt = uint64(i)
}
return getUint64FractionLength(absInt)
}
func getUint64FractionLength(i uint64) int {
lz := bits.LeadingZeros64(i)
tz := bits.TrailingZeros64(i)
// 64 bit removes the leading zero, removes the trailing zero and also removes the first "1".
fraction := 64 - lz - tz - 1
if lz == 64 && tz == 64 {
fraction = 0
}
return fraction
}
// HashValue converts certain JSON values for aggregate comparisons.
// For example int64(3) == float64(3.0)
// Other than the numeric condition, this function has to construct a bidirectional map between hash value
// and the original representation
func (bj BinaryJSON) HashValue(buf []byte) []byte {
switch bj.TypeCode {
case JSONTypeCodeInt64:
// Convert to a FLOAT if no precision is lost.
// In the future, it will be better to convert to a DECIMAL value instead
// See: https://github.com/pingcap/tidb/issues/9988
// A double precision float can have 52-bit in fraction part.
if getInt64FractionLength(bj.GetInt64()) <= 52 {
buf = append(buf, JSONTypeCodeFloat64)
buf = appendBinaryFloat64(buf, float64(bj.GetInt64()))
} else {
buf = append(buf, bj.TypeCode)
buf = append(buf, bj.Value...)
}
case JSONTypeCodeUint64:
// A double precision float can have 52-bit in fraction part.
if getUint64FractionLength(bj.GetUint64()) <= 52 {
buf = append(buf, JSONTypeCodeFloat64)
buf = appendBinaryFloat64(buf, float64(bj.GetUint64()))
} else {
buf = append(buf, bj.TypeCode)
buf = append(buf, bj.Value...)
}
case JSONTypeCodeArray:
// this hash value is bidirectional, because you can get the element one-by-one
// and you know the end of it, as the elemCount is also appended here
buf = append(buf, bj.TypeCode)
elemCount := int(jsonEndian.Uint32(bj.Value))
buf = append(buf, bj.Value[0:dataSizeOff]...)
for i := range elemCount {
buf = bj.ArrayGetElem(i).HashValue(buf)
}
case JSONTypeCodeObject:
// this hash value is bidirectional, because you can get the key using the json
// string format, and get the value accordingly.
buf = append(buf, bj.TypeCode)
elemCount := int(jsonEndian.Uint32(bj.Value))
buf = append(buf, bj.Value[0:dataSizeOff]...)
for i := range elemCount {
keyJSON := CreateBinaryJSON(string(bj.objectGetKey(i)))
buf = append(buf, keyJSON.Value...)
buf = bj.objectGetVal(i).HashValue(buf)
}
default:
buf = append(buf, bj.TypeCode)
buf = append(buf, bj.Value...)
}
return buf
}
// GetValue return the primitive value of the JSON.
func (bj BinaryJSON) GetValue() any {
switch bj.TypeCode {
case JSONTypeCodeInt64:
return bj.GetInt64()
case JSONTypeCodeUint64:
return bj.GetUint64()
case JSONTypeCodeDuration:
return bj.GetDuration()
case JSONTypeCodeFloat64:
return bj.GetFloat64()
case JSONTypeCodeString:
return bj.GetString()
case JSONTypeCodeDate, JSONTypeCodeDatetime:
return bj.GetTime()
}
logutil.BgLogger().Error("unreachable JSON type", zap.Any("type", bj.TypeCode))
return nil
}
// CreateBinaryJSON creates a BinaryJSON from interface.
func CreateBinaryJSON(in any) BinaryJSON {
bj, err := CreateBinaryJSONWithCheck(in)
if err != nil {
panic(err)
}
return bj
}
// CreateBinaryJSONWithCheck creates a BinaryJSON from interface with error check.
func CreateBinaryJSONWithCheck(in any) (BinaryJSON, error) {
typeCode, buf, err := appendBinaryJSON(nil, in)
if err != nil {
return BinaryJSON{}, err
}
bj := BinaryJSON{TypeCode: typeCode, Value: buf}
// GetElemDepth always returns +1.
if bj.GetElemDepth()-1 > maxJSONDepth {
return BinaryJSON{}, ErrJSONDocumentTooDeep
}
return bj, nil
}
func appendBinaryJSON(buf []byte, in any) (JSONTypeCode, []byte, error) {
var typeCode byte
var err error
switch x := in.(type) {
case nil:
typeCode = JSONTypeCodeLiteral
buf = append(buf, JSONLiteralNil)
case bool:
typeCode = JSONTypeCodeLiteral
if x {
buf = append(buf, JSONLiteralTrue)
} else {
buf = append(buf, JSONLiteralFalse)
}
case int64:
typeCode = JSONTypeCodeInt64
buf = appendBinaryUint64(buf, uint64(x))
case uint64:
typeCode = JSONTypeCodeUint64
buf = appendBinaryUint64(buf, x)
case float64:
typeCode = JSONTypeCodeFloat64
buf = appendBinaryFloat64(buf, x)
case json.Number:
typeCode, buf, err = appendBinaryNumber(buf, x)
if err != nil {
return typeCode, nil, errors.Trace(err)
}
case string:
typeCode = JSONTypeCodeString
buf = appendBinaryString(buf, x)
case BinaryJSON:
typeCode = x.TypeCode
buf = append(buf, x.Value...)
case []any:
typeCode = JSONTypeCodeArray
buf, err = appendBinaryArray(buf, x)
if err != nil {
return typeCode, nil, errors.Trace(err)
}
case map[string]any:
typeCode = JSONTypeCodeObject
buf, err = appendBinaryObject(buf, x)
if err != nil {
return typeCode, nil, errors.Trace(err)
}
case Opaque:
typeCode = JSONTypeCodeOpaque
buf = appendBinaryOpaque(buf, x)
case Time:
typeCode = JSONTypeCodeDate
if x.Type() == mysql.TypeDatetime {
typeCode = JSONTypeCodeDatetime
} else if x.Type() == mysql.TypeTimestamp {
typeCode = JSONTypeCodeTimestamp
}
buf = appendBinaryUint64(buf, uint64(x.CoreTime()))
case Duration:
typeCode = JSONTypeCodeDuration
buf = appendBinaryUint64(buf, uint64(x.Duration))
buf = appendBinaryUint32(buf, uint32(x.Fsp))
default:
msg := fmt.Sprintf(unknownTypeErrorMsg, reflect.TypeOf(in))
err = errors.New(msg)
}
return typeCode, buf, err
}
func appendZero(buf []byte, length int) []byte {
var tmp [8]byte
rem := length % 8
loop := length / 8
for range loop {
buf = append(buf, tmp[:]...)
}
for range rem {
buf = append(buf, 0)
}
return buf
}
func appendUint32(buf []byte, v uint32) []byte {
var tmp [4]byte
jsonEndian.PutUint32(tmp[:], v)
return append(buf, tmp[:]...)
}
func appendBinaryNumber(buf []byte, x json.Number) (JSONTypeCode, []byte, error) {
// The type interpretation process is as follows:
// - Attempt float64 if it contains Ee.
// - Next attempt int64
// - Then uint64 (valid in MySQL JSON, not in JSON decode library)
// - Then float64
// - Return an error
if strings.Contains(x.String(), "Ee.") {
f64, err := x.Float64()
if err != nil {
return JSONTypeCodeFloat64, nil, errors.Trace(err)
}
return JSONTypeCodeFloat64, appendBinaryFloat64(buf, f64), nil
} else if val, err := x.Int64(); err == nil {
return JSONTypeCodeInt64, appendBinaryUint64(buf, uint64(val)), nil
} else if val, err := strconv.ParseUint(string(x), 10, 64); err == nil {
return JSONTypeCodeUint64, appendBinaryUint64(buf, val), nil
}
val, err := x.Float64()
if err == nil {
return JSONTypeCodeFloat64, appendBinaryFloat64(buf, val), nil
}
var typeCode JSONTypeCode
return typeCode, nil, errors.Trace(err)
}
func appendBinaryString(buf []byte, v string) []byte {
begin := len(buf)
buf = appendZero(buf, binary.MaxVarintLen64)
lenLen := binary.PutUvarint(buf[begin:], uint64(len(v)))
buf = buf[:len(buf)-binary.MaxVarintLen64+lenLen]
buf = append(buf, v...)
return buf
}
func appendBinaryOpaque(buf []byte, v Opaque) []byte {
buf = append(buf, v.TypeCode)
lenBegin := len(buf)
buf = appendZero(buf, binary.MaxVarintLen64)
lenLen := binary.PutUvarint(buf[lenBegin:], uint64(len(v.Buf)))
buf = buf[:len(buf)-binary.MaxVarintLen64+lenLen]
buf = append(buf, v.Buf...)
return buf
}
func appendBinaryFloat64(buf []byte, v float64) []byte {
off := len(buf)
buf = appendZero(buf, 8)
jsonEndian.PutUint64(buf[off:], math.Float64bits(v))
return buf
}
func appendBinaryUint64(buf []byte, v uint64) []byte {
off := len(buf)
buf = appendZero(buf, 8)
jsonEndian.PutUint64(buf[off:], v)
return buf
}
func appendBinaryUint32(buf []byte, v uint32) []byte {
off := len(buf)
buf = appendZero(buf, 4)
jsonEndian.PutUint32(buf[off:], v)
return buf
}
func appendBinaryArray(buf []byte, array []any) ([]byte, error) {
docOff := len(buf)
buf = appendUint32(buf, uint32(len(array)))
buf = appendZero(buf, dataSizeOff)
valEntryBegin := len(buf)
buf = appendZero(buf, len(array)*valEntrySize)
for i, val := range array {
var err error
buf, err = appendBinaryValElem(buf, docOff, valEntryBegin+i*valEntrySize, val)
if err != nil {
return nil, errors.Trace(err)
}
}
docSize := len(buf) - docOff
jsonEndian.PutUint32(buf[docOff+dataSizeOff:], uint32(docSize))
return buf, nil
}
func appendBinaryValElem(buf []byte, docOff, valEntryOff int, val any) ([]byte, error) {
var typeCode JSONTypeCode
var err error
elemDocOff := len(buf)
typeCode, buf, err = appendBinaryJSON(buf, val)
if err != nil {
return nil, errors.Trace(err)
}
if typeCode == JSONTypeCodeLiteral {
litCode := buf[elemDocOff]
buf = buf[:elemDocOff]
buf[valEntryOff] = JSONTypeCodeLiteral
buf[valEntryOff+1] = litCode
return buf, nil
}
buf[valEntryOff] = typeCode
valOff := elemDocOff - docOff
jsonEndian.PutUint32(buf[valEntryOff+1:], uint32(valOff))
return buf, nil
}
type field struct {
key string
val any
}
func appendBinaryObject(buf []byte, x map[string]any) ([]byte, error) {
docOff := len(buf)
buf = appendUint32(buf, uint32(len(x)))
buf = appendZero(buf, dataSizeOff)
keyEntryBegin := len(buf)
buf = appendZero(buf, len(x)*keyEntrySize)
valEntryBegin := len(buf)
buf = appendZero(buf, len(x)*valEntrySize)
fields := make([]field, 0, len(x))
for key, val := range x {
fields = append(fields, field{key: key, val: val})
}
slices.SortFunc(fields, func(i, j field) int {
return cmp.Compare(i.key, j.key)
})
for i, field := range fields {
keyEntryOff := keyEntryBegin + i*keyEntrySize
keyOff := len(buf) - docOff
keyLen := uint32(len(field.key))
if keyLen > math.MaxUint16 {
return nil, ErrJSONObjectKeyTooLong
}
jsonEndian.PutUint32(buf[keyEntryOff:], uint32(keyOff))
jsonEndian.PutUint16(buf[keyEntryOff+keyLenOff:], uint16(keyLen))
buf = append(buf, field.key...)
}
for i, field := range fields {
var err error
buf, err = appendBinaryValElem(buf, docOff, valEntryBegin+i*valEntrySize, field.val)
if err != nil {
return nil, errors.Trace(err)
}
}
docSize := len(buf) - docOff
jsonEndian.PutUint32(buf[docOff+dataSizeOff:], uint32(docSize))
return buf, nil
}
// Copyright 2017 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package types
import (
"bytes"
"encoding/binary"
"encoding/hex"
"fmt"
"math"
"slices"
"sort"
"unicode/utf16"
"unicode/utf8"
"github.com/pingcap/errors"
"github.com/pingcap/tidb/pkg/parser/mysql"
"github.com/pingcap/tidb/pkg/util/hack"
"github.com/pingcap/tidb/pkg/util/stringutil"
)
// Type returns type of BinaryJSON as string.
func (bj BinaryJSON) Type() string {
switch bj.TypeCode {
case JSONTypeCodeObject:
return "OBJECT"
case JSONTypeCodeArray:
return "ARRAY"
case JSONTypeCodeLiteral:
switch bj.Value[0] {
case JSONLiteralNil:
return "NULL"
default:
return "BOOLEAN"
}
case JSONTypeCodeInt64:
return "INTEGER"
case JSONTypeCodeUint64:
return "UNSIGNED INTEGER"
case JSONTypeCodeFloat64:
return "DOUBLE"
case JSONTypeCodeString:
return "STRING"
case JSONTypeCodeOpaque:
typ := bj.GetOpaqueFieldType()
switch typ {
case mysql.TypeTinyBlob, mysql.TypeMediumBlob, mysql.TypeLongBlob, mysql.TypeBlob, mysql.TypeString, mysql.TypeVarString, mysql.TypeVarchar:
return "BLOB"
case mysql.TypeBit:
return "BIT"
default:
return "OPAQUE"
}
case JSONTypeCodeDate:
return "DATE"
case JSONTypeCodeDatetime:
return "DATETIME"
case JSONTypeCodeTimestamp:
return "DATETIME"
case JSONTypeCodeDuration:
return "TIME"
default:
msg := fmt.Sprintf(unknownTypeCodeErrorMsg, bj.TypeCode)
panic(msg)
}
}
// Unquote is for JSON_UNQUOTE.
func (bj BinaryJSON) Unquote() (string, error) {
switch bj.TypeCode {
case JSONTypeCodeString:
str := string(hack.String(bj.GetString()))
return UnquoteString(str)
default:
return bj.String(), nil
}
}
// UnquoteString remove quotes in a string,
// including the quotes at the head and tail of string.
func UnquoteString(str string) (string, error) {
strLen := len(str)
if strLen < 2 {
return str, nil
}
head, tail := str[0], str[strLen-1]
if head == '"' && tail == '"' {
// Remove prefix and suffix '"' before unquoting
return unquoteJSONString(str[1 : strLen-1])
}
// if value is not double quoted, do nothing
return str, nil
}
// unquoteJSONString recognizes the escape sequences shown in:
// https://dev.mysql.com/doc/refman/5.7/en/json-modification-functions.html#json-unquote-character-escape-sequences
func unquoteJSONString(s string) (string, error) {
ret := new(bytes.Buffer)
for i := 0; i < len(s); i++ {
if s[i] == '\\' {
i++
if i == len(s) {
return "", errors.New("Missing a closing quotation mark in string")
}
switch s[i] {
case '"':
ret.WriteByte('"')
case 'b':
ret.WriteByte('\b')
case 'f':
ret.WriteByte('\f')
case 'n':
ret.WriteByte('\n')
case 'r':
ret.WriteByte('\r')
case 't':
ret.WriteByte('\t')
case '\\':
ret.WriteByte('\\')
case 'u':
if i+4 > len(s) {
return "", errors.Errorf("Invalid unicode: %s", s[i+1:])
}
char, size, inSurrogateRange, err := decodeOneEscapedUnicode(hack.Slice(s[i+1 : i+5]))
if err != nil {
// For `surrogate pair`, it uses two `\\uxxx` to encode a character.
if inSurrogateRange && len(s) >= i+10 && s[i+5] == '\\' && s[i+6] == 'u' {
char, size, _, err = decodeOneEscapedUnicode(append([]byte(s[i+1:i+5]), []byte(s[i+7:i+11])...))
if err != nil {
return "", errors.Trace(err)
}
ret.Write(char[0:size])
i += 10
continue
}
return "", errors.Trace(err)
}
ret.Write(char[0:size])
i += 4
default:
// For all other escape sequences, backslash is ignored.
ret.WriteByte(s[i])
}
} else {
ret.WriteByte(s[i])
}
}
return ret.String(), nil
}
// decodeOneEscapedUnicode decodes one unicode into utf8 bytes specified in RFC 3629.
// According RFC 3629, the max length of utf8 characters is 4 bytes.
// And MySQL use 4 bytes to represent the unicode which must be in [0, 65536).
func decodeOneEscapedUnicode(s []byte) (char [4]byte, size int, inSurrogateRange bool, err error) {
if len(s) > 8 {
return char, 0, false, errors.Errorf("Invalid `s` for decodeEscapedUnicode: %s", s)
}
size, err = hex.Decode(char[0:4], s)
if err != nil {
return char, 0, false, errors.Trace(err)
}
if size != 2 && size != 4 {
// The unicode must can be represented in 2 bytes or 4 bytes.
return char, size, false, errors.Errorf("Invalid unicode length: %d", size)
}
r1 := rune(binary.BigEndian.Uint16(char[0:2]))
if size == 4 {
r1 = utf16.DecodeRune(r1, rune(binary.BigEndian.Uint16(char[2:4])))
}
size = utf8.RuneLen(r1)
if size < 0 {
if r1 >= 0xD800 && r1 <= 0xDFFF {
inSurrogateRange = true
}
return char, size, inSurrogateRange, errors.Errorf("Invalid unicode: %s", s)
}
utf8.EncodeRune(char[0:size], r1)
return
}
// quoteJSONString escapes interior quote and other characters for json functions.
//
// The implementation of `JSON_QUOTE` doesn't use this function. The `JSON_QUOTE` used `goJSON` to encode the string
// directly. Therefore, this function is not compatible with `JSON_QUOTE` function for the convience of internal usage.
//
// This function will add extra quotes to the string if it contains special characters which needs to escape, or it's not
// a valid ECMAScript identifier.
func quoteJSONString(s string) string {
var escapeByteMap = map[byte]string{
'\\': "\\\\",
'"': "\\\"",
'\b': "\\b",
'\f': "\\f",
'\n': "\\n",
'\r': "\\r",
'\t': "\\t",
}
ret := new(bytes.Buffer)
ret.WriteByte('"')
start := 0
hasEscaped := false
for i := 0; i < len(s); {
if b := s[i]; b < utf8.RuneSelf {
escaped, ok := escapeByteMap[b]
if ok {
if start < i {
ret.WriteString(s[start:i])
}
hasEscaped = true
ret.WriteString(escaped)
i++
start = i
} else {
i++
}
} else {
c, size := utf8.DecodeRuneInString(s[i:])
if c == utf8.RuneError && size == 1 { // refer to codes of `binary.jsonMarshalStringTo`
if start < i {
ret.WriteString(s[start:i])
}
hasEscaped = true
ret.WriteString(`\ufffd`)
i += size
start = i
continue
}
i += size
}
}
if start < len(s) {
ret.WriteString(s[start:])
}
if hasEscaped || !isEcmascriptIdentifier(s) {
ret.WriteByte('"')
return ret.String()
}
return ret.String()[1:]
}
// Extract receives several path expressions as arguments, matches them in bj, and returns:
//
// ret: target JSON matched any path expressions. maybe autowrapped as an array.
// found: true if any path expressions matched.
func (bj BinaryJSON) Extract(pathExprList []JSONPathExpression) (ret BinaryJSON, found bool) {
buf := make([]BinaryJSON, 0, 1)
for _, pathExpr := range pathExprList {
buf = bj.extractTo(buf, pathExpr, make(map[*byte]struct{}), false)
}
if len(buf) == 0 {
found = false
} else if len(pathExprList) == 1 && len(buf) == 1 {
// If pathExpr contains asterisks, len(elemList) won't be 1
// even if len(pathExprList) equals to 1.
found = true
ret = buf[0]
// Fix https://github.com/pingcap/tidb/issues/30352
if pathExprList[0].CouldMatchMultipleValues() {
ret = buildBinaryJSONArray(buf)
}
} else {
found = true
ret = buildBinaryJSONArray(buf)
}
return
}
func (bj BinaryJSON) extractOne(pathExpr JSONPathExpression) []BinaryJSON {
result := make([]BinaryJSON, 0, 1)
return bj.extractTo(result, pathExpr, nil, true)
}
func (bj BinaryJSON) extractTo(buf []BinaryJSON, pathExpr JSONPathExpression, dup map[*byte]struct{}, one bool) []BinaryJSON {
if len(pathExpr.legs) == 0 {
if dup != nil {
if _, exists := dup[&bj.Value[0]]; exists {
return buf
}
dup[&bj.Value[0]] = struct{}{}
}
return append(buf, bj)
}
currentLeg, subPathExpr := pathExpr.popOneLeg()
if currentLeg.typ == jsonPathLegArraySelection {
if bj.TypeCode != JSONTypeCodeArray {
// If the current object is not an array, still append them if the selection includes
// 0 or last. But for asterisk, it still returns NULL.
//
// don't call `getIndexRange` or `getIndexFromStart`, they will panic if the argument
// is not array.
switch selection := currentLeg.arraySelection.(type) {
case jsonPathArraySelectionIndex:
if selection.index == 0 || selection.index == -1 {
buf = bj.extractTo(buf, subPathExpr, dup, one)
}
case jsonPathArraySelectionRange:
// for [0 to Non-negative Number] and [0 to last], it extracts itself
if selection.start == 0 && selection.end >= -1 {
buf = bj.extractTo(buf, subPathExpr, dup, one)
}
}
return buf
}
start, end := currentLeg.arraySelection.getIndexRange(bj)
if start >= 0 && start <= end {
for i := start; i <= end; i++ {
buf = bj.ArrayGetElem(i).extractTo(buf, subPathExpr, dup, one)
}
}
} else if currentLeg.typ == jsonPathLegKey && bj.TypeCode == JSONTypeCodeObject {
elemCount := bj.GetElemCount()
if currentLeg.dotKey == "*" {
for i := 0; i < elemCount && !jsonFinished(buf, one); i++ {
buf = bj.objectGetVal(i).extractTo(buf, subPathExpr, dup, one)
}
} else {
child, ok := bj.objectSearchKey(hack.Slice(currentLeg.dotKey))
if ok {
buf = child.extractTo(buf, subPathExpr, dup, one)
}
}
} else if currentLeg.typ == jsonPathLegDoubleAsterisk {
buf = bj.extractTo(buf, subPathExpr, dup, one)
if bj.TypeCode == JSONTypeCodeArray {
elemCount := bj.GetElemCount()
for i := 0; i < elemCount && !jsonFinished(buf, one); i++ {
buf = bj.ArrayGetElem(i).extractTo(buf, pathExpr, dup, one)
}
} else if bj.TypeCode == JSONTypeCodeObject {
elemCount := bj.GetElemCount()
for i := 0; i < elemCount && !jsonFinished(buf, one); i++ {
buf = bj.objectGetVal(i).extractTo(buf, pathExpr, dup, one)
}
}
}
return buf
}
func jsonFinished(buf []BinaryJSON, one bool) bool {
return one && len(buf) > 0
}
func (bj BinaryJSON) objectSearchKey(key []byte) (BinaryJSON, bool) {
elemCount := bj.GetElemCount()
idx := sort.Search(elemCount, func(i int) bool {
return bytes.Compare(bj.objectGetKey(i), key) >= 0
})
if idx < elemCount && bytes.Equal(bj.objectGetKey(idx), key) {
return bj.objectGetVal(idx), true
}
return BinaryJSON{}, false
}
func buildBinaryJSONArray(elems []BinaryJSON) BinaryJSON {
totalSize := headerSize + len(elems)*valEntrySize
for _, elem := range elems {
if elem.TypeCode != JSONTypeCodeLiteral {
totalSize += len(elem.Value)
}
}
buf := make([]byte, headerSize+len(elems)*valEntrySize, totalSize)
jsonEndian.PutUint32(buf, uint32(len(elems)))
jsonEndian.PutUint32(buf[dataSizeOff:], uint32(totalSize))
buf = buildBinaryJSONElements(buf, headerSize, elems)
return BinaryJSON{TypeCode: JSONTypeCodeArray, Value: buf}
}
func buildBinaryJSONElements(buf []byte, entryStart int, elems []BinaryJSON) []byte {
for i, elem := range elems {
buf[entryStart+i*valEntrySize] = elem.TypeCode
if elem.TypeCode == JSONTypeCodeLiteral {
buf[entryStart+i*valEntrySize+valTypeSize] = elem.Value[0]
} else {
jsonEndian.PutUint32(buf[entryStart+i*valEntrySize+valTypeSize:], uint32(len(buf)))
buf = append(buf, elem.Value...)
}
}
return buf
}
func buildBinaryJSONObject(keys [][]byte, elems []BinaryJSON) (BinaryJSON, error) {
totalSize := headerSize + len(elems)*(keyEntrySize+valEntrySize)
for i, elem := range elems {
if elem.TypeCode != JSONTypeCodeLiteral {
totalSize += len(elem.Value)
}
totalSize += len(keys[i])
}
buf := make([]byte, headerSize+len(elems)*(keyEntrySize+valEntrySize), totalSize)
jsonEndian.PutUint32(buf, uint32(len(elems)))
jsonEndian.PutUint32(buf[dataSizeOff:], uint32(totalSize))
for i, key := range keys {
if len(key) > math.MaxUint16 {
return BinaryJSON{}, ErrJSONObjectKeyTooLong
}
jsonEndian.PutUint32(buf[headerSize+i*keyEntrySize:], uint32(len(buf)))
jsonEndian.PutUint16(buf[headerSize+i*keyEntrySize+keyLenOff:], uint16(len(key)))
buf = append(buf, key...)
}
entryStart := headerSize + len(elems)*keyEntrySize
buf = buildBinaryJSONElements(buf, entryStart, elems)
return BinaryJSON{TypeCode: JSONTypeCodeObject, Value: buf}, nil
}
// Modify modifies a JSON object by insert, replace or set.
// All path expressions cannot contain * or ** wildcard.
// If any error occurs, the input won't be changed.
func (bj BinaryJSON) Modify(pathExprList []JSONPathExpression, values []BinaryJSON, mt JSONModifyType) (retj BinaryJSON, err error) {
if len(pathExprList) != len(values) {
// TODO: should return 1582(42000)
return retj, errors.New("Incorrect parameter count")
}
for _, pathExpr := range pathExprList {
if pathExpr.flags.containsAnyAsterisk() || pathExpr.flags.containsAnyRange() {
return retj, ErrInvalidJSONPathMultipleSelection
}
}
for i := range pathExprList {
pathExpr, value := pathExprList[i], values[i]
modifier := &binaryModifier{bj: bj}
switch mt {
case JSONModifyInsert:
bj = modifier.insert(pathExpr, value)
case JSONModifyReplace:
bj = modifier.replace(pathExpr, value)
case JSONModifySet:
bj = modifier.set(pathExpr, value)
}
if modifier.err != nil {
return BinaryJSON{}, modifier.err
}
}
if bj.GetElemDepth()-1 > maxJSONDepth {
return bj, ErrJSONDocumentTooDeep
}
return bj, nil
}
// ArrayInsert insert a BinaryJSON into the given array cell.
// All path expressions cannot contain * or ** wildcard.
// If any error occurs, the input won't be changed.
func (bj BinaryJSON) ArrayInsert(pathExpr JSONPathExpression, value BinaryJSON) (res BinaryJSON, err error) {
// Check the path is a index
if len(pathExpr.legs) < 1 {
return bj, ErrInvalidJSONPathArrayCell
}
parentPath, lastLeg := pathExpr.popOneLastLeg()
if lastLeg.typ != jsonPathLegArraySelection {
return bj, ErrInvalidJSONPathArrayCell
}
// Find the target array
obj, exists := bj.Extract([]JSONPathExpression{parentPath})
if !exists || obj.TypeCode != JSONTypeCodeArray {
return bj, nil
}
idx := 0
switch selection := lastLeg.arraySelection.(type) {
case jsonPathArraySelectionIndex:
idx = selection.index.getIndexFromStart(obj)
default:
return bj, ErrInvalidJSONPathArrayCell
}
count := obj.GetElemCount()
if idx >= count {
idx = count
}
// Insert into the array
newArray := make([]BinaryJSON, 0, count+1)
for i := range idx {
elem := obj.ArrayGetElem(i)
newArray = append(newArray, elem)
}
newArray = append(newArray, value)
for i := idx; i < count; i++ {
elem := obj.ArrayGetElem(i)
newArray = append(newArray, elem)
}
obj = buildBinaryJSONArray(newArray)
bj, err = bj.Modify([]JSONPathExpression{parentPath}, []BinaryJSON{obj}, JSONModifySet)
if err != nil {
return bj, err
}
return bj, nil
}
// Remove removes the elements indicated by pathExprList from JSON.
func (bj BinaryJSON) Remove(pathExprList []JSONPathExpression) (BinaryJSON, error) {
for _, pathExpr := range pathExprList {
if len(pathExpr.legs) == 0 {
return bj, ErrJSONVacuousPath
}
if pathExpr.flags.containsAnyAsterisk() || pathExpr.flags.containsAnyRange() {
return bj, ErrInvalidJSONPathMultipleSelection
}
modifer := &binaryModifier{bj: bj}
bj = modifer.remove(pathExpr)
if modifer.err != nil {
return BinaryJSON{}, modifer.err
}
}
return bj, nil
}
type binaryModifier struct {
bj BinaryJSON
modifyPtr *byte
modifyValue BinaryJSON
err error
}
func (bm *binaryModifier) set(path JSONPathExpression, newBj BinaryJSON) BinaryJSON {
result := bm.bj.extractOne(path)
if len(result) > 0 {
bm.modifyPtr = &result[0].Value[0]
bm.modifyValue = newBj
return bm.rebuild()
}
bm.doInsert(path, newBj)
if bm.err != nil {
return BinaryJSON{}
}
return bm.rebuild()
}
func (bm *binaryModifier) replace(path JSONPathExpression, newBj BinaryJSON) BinaryJSON {
result := bm.bj.extractOne(path)
if len(result) == 0 {
return bm.bj
}
bm.modifyPtr = &result[0].Value[0]
bm.modifyValue = newBj
return bm.rebuild()
}
func (bm *binaryModifier) insert(path JSONPathExpression, newBj BinaryJSON) BinaryJSON {
result := bm.bj.extractOne(path)
if len(result) > 0 {
return bm.bj
}
bm.doInsert(path, newBj)
if bm.err != nil {
return BinaryJSON{}
}
return bm.rebuild()
}
// doInsert inserts the newBj to its parent, and builds the new parent.
func (bm *binaryModifier) doInsert(path JSONPathExpression, newBj BinaryJSON) {
parentPath, lastLeg := path.popOneLastLeg()
result := bm.bj.extractOne(parentPath)
if len(result) == 0 {
return
}
parentBj := result[0]
if lastLeg.typ == jsonPathLegArraySelection {
bm.modifyPtr = &parentBj.Value[0]
if parentBj.TypeCode != JSONTypeCodeArray {
bm.modifyValue = buildBinaryJSONArray([]BinaryJSON{parentBj, newBj})
return
}
elemCount := parentBj.GetElemCount()
elems := make([]BinaryJSON, 0, elemCount+1)
for i := range elemCount {
elems = append(elems, parentBj.ArrayGetElem(i))
}
elems = append(elems, newBj)
bm.modifyValue = buildBinaryJSONArray(elems)
return
}
if parentBj.TypeCode != JSONTypeCodeObject {
return
}
bm.modifyPtr = &parentBj.Value[0]
elemCount := parentBj.GetElemCount()
insertKey := hack.Slice(lastLeg.dotKey)
insertIdx := sort.Search(elemCount, func(i int) bool {
return bytes.Compare(parentBj.objectGetKey(i), insertKey) >= 0
})
keys := make([][]byte, 0, elemCount+1)
elems := make([]BinaryJSON, 0, elemCount+1)
for i := range elemCount {
if i == insertIdx {
keys = append(keys, insertKey)
elems = append(elems, newBj)
}
keys = append(keys, parentBj.objectGetKey(i))
elems = append(elems, parentBj.objectGetVal(i))
}
if insertIdx == elemCount {
keys = append(keys, insertKey)
elems = append(elems, newBj)
}
bm.modifyValue, bm.err = buildBinaryJSONObject(keys, elems)
}
func (bm *binaryModifier) remove(path JSONPathExpression) BinaryJSON {
result := bm.bj.extractOne(path)
if len(result) == 0 {
return bm.bj
}
bm.doRemove(path)
if bm.err != nil {
return BinaryJSON{}
}
return bm.rebuild()
}
func (bm *binaryModifier) doRemove(path JSONPathExpression) {
parentPath, lastLeg := path.popOneLastLeg()
result := bm.bj.extractOne(parentPath)
if len(result) == 0 {
return
}
parentBj := result[0]
if lastLeg.typ == jsonPathLegArraySelection {
if parentBj.TypeCode != JSONTypeCodeArray {
return
}
selectionIndex, ok := lastLeg.arraySelection.(jsonPathArraySelectionIndex)
if !ok {
return
}
idx := selectionIndex.index.getIndexFromStart(parentBj)
bm.modifyPtr = &parentBj.Value[0]
elemCount := parentBj.GetElemCount()
elems := make([]BinaryJSON, 0, elemCount-1)
for i := range elemCount {
if i != idx {
elems = append(elems, parentBj.ArrayGetElem(i))
}
}
bm.modifyValue = buildBinaryJSONArray(elems)
return
}
if parentBj.TypeCode != JSONTypeCodeObject {
return
}
bm.modifyPtr = &parentBj.Value[0]
elemCount := parentBj.GetElemCount()
removeKey := hack.Slice(lastLeg.dotKey)
keys := make([][]byte, 0, elemCount+1)
elems := make([]BinaryJSON, 0, elemCount+1)
for i := range elemCount {
key := parentBj.objectGetKey(i)
if !bytes.Equal(key, removeKey) {
keys = append(keys, parentBj.objectGetKey(i))
elems = append(elems, parentBj.objectGetVal(i))
}
}
bm.modifyValue, bm.err = buildBinaryJSONObject(keys, elems)
}
// rebuild merges the old and the modified JSON into a new BinaryJSON
func (bm *binaryModifier) rebuild() BinaryJSON {
buf := make([]byte, 0, len(bm.bj.Value)+len(bm.modifyValue.Value))
value, tpCode := bm.rebuildTo(buf)
return BinaryJSON{TypeCode: tpCode, Value: value}
}
func (bm *binaryModifier) rebuildTo(buf []byte) ([]byte, JSONTypeCode) {
if bm.modifyPtr == &bm.bj.Value[0] {
bm.modifyPtr = nil
return append(buf, bm.modifyValue.Value...), bm.modifyValue.TypeCode
} else if bm.modifyPtr == nil {
return append(buf, bm.bj.Value...), bm.bj.TypeCode
}
bj := bm.bj
if bj.TypeCode != JSONTypeCodeArray && bj.TypeCode != JSONTypeCodeObject {
return append(buf, bj.Value...), bj.TypeCode
}
docOff := len(buf)
elemCount := bj.GetElemCount()
var valEntryStart int
if bj.TypeCode == JSONTypeCodeArray {
copySize := headerSize + elemCount*valEntrySize
valEntryStart = headerSize
buf = append(buf, bj.Value[:copySize]...)
} else {
copySize := headerSize + elemCount*(keyEntrySize+valEntrySize)
valEntryStart = headerSize + elemCount*keyEntrySize
buf = append(buf, bj.Value[:copySize]...)
if elemCount > 0 {
firstKeyOff := int(jsonEndian.Uint32(bj.Value[headerSize:]))
lastKeyOff := int(jsonEndian.Uint32(bj.Value[headerSize+(elemCount-1)*keyEntrySize:]))
lastKeyLen := int(jsonEndian.Uint16(bj.Value[headerSize+(elemCount-1)*keyEntrySize+keyLenOff:]))
buf = append(buf, bj.Value[firstKeyOff:lastKeyOff+lastKeyLen]...)
}
}
for i := range elemCount {
valEntryOff := valEntryStart + i*valEntrySize
elem := bj.valEntryGet(valEntryOff)
bm.bj = elem
var tpCode JSONTypeCode
valOff := len(buf) - docOff
buf, tpCode = bm.rebuildTo(buf)
buf[docOff+valEntryOff] = tpCode
if tpCode == JSONTypeCodeLiteral {
lastIdx := len(buf) - 1
jsonEndian.PutUint32(buf[docOff+valEntryOff+valTypeSize:], uint32(buf[lastIdx]))
buf = buf[:lastIdx]
} else {
jsonEndian.PutUint32(buf[docOff+valEntryOff+valTypeSize:], uint32(valOff))
}
}
jsonEndian.PutUint32(buf[docOff+dataSizeOff:], uint32(len(buf)-docOff))
return buf, bj.TypeCode
}
// floatEpsilon is the acceptable error quantity when comparing two float numbers.
const floatEpsilon = 1.e-8
// compareFloat64PrecisionLoss returns an integer comparing the float64 x to y,
// allowing precision loss.
func compareFloat64PrecisionLoss(x, y float64) int {
if x-y < floatEpsilon && y-x < floatEpsilon {
return 0
} else if x-y < 0 {
return -1
}
return 1
}
func compareInt64(x int64, y int64) int {
if x < y {
return -1
} else if x == y {
return 0
}
return 1
}
func compareFloat64(x float64, y float64) int {
if x < y {
return -1
} else if x == y {
return 0
}
return 1
}
func compareUint64(x uint64, y uint64) int {
if x < y {
return -1
} else if x == y {
return 0
}
return 1
}
func compareInt64Uint64(x int64, y uint64) int {
if x < 0 {
return -1
}
return compareUint64(uint64(x), y)
}
func compareFloat64Int64(x float64, y int64) int {
return compareFloat64PrecisionLoss(x, float64(y))
}
func compareFloat64Uint64(x float64, y uint64) int {
return compareFloat64PrecisionLoss(x, float64(y))
}
// CompareBinaryJSON compares two binary json objects. Returns -1 if left < right,
// 0 if left == right, else returns 1.
func CompareBinaryJSON(left, right BinaryJSON) int {
precedence1 := jsonTypePrecedences[left.Type()]
precedence2 := jsonTypePrecedences[right.Type()]
var cmp int
if precedence1 == precedence2 {
if precedence1 == jsonTypePrecedences["NULL"] {
// for JSON null.
cmp = 0
}
switch left.TypeCode {
case JSONTypeCodeLiteral:
// false is less than true.
cmp = int(right.Value[0]) - int(left.Value[0])
case JSONTypeCodeInt64:
switch right.TypeCode {
case JSONTypeCodeInt64:
cmp = compareInt64(left.GetInt64(), right.GetInt64())
case JSONTypeCodeUint64:
cmp = compareInt64Uint64(left.GetInt64(), right.GetUint64())
case JSONTypeCodeFloat64:
cmp = -compareFloat64Int64(right.GetFloat64(), left.GetInt64())
}
case JSONTypeCodeUint64:
switch right.TypeCode {
case JSONTypeCodeInt64:
cmp = -compareInt64Uint64(right.GetInt64(), left.GetUint64())
case JSONTypeCodeUint64:
cmp = compareUint64(left.GetUint64(), right.GetUint64())
case JSONTypeCodeFloat64:
cmp = -compareFloat64Uint64(right.GetFloat64(), left.GetUint64())
}
case JSONTypeCodeFloat64:
switch right.TypeCode {
case JSONTypeCodeInt64:
cmp = compareFloat64Int64(left.GetFloat64(), right.GetInt64())
case JSONTypeCodeUint64:
cmp = compareFloat64Uint64(left.GetFloat64(), right.GetUint64())
case JSONTypeCodeFloat64:
cmp = compareFloat64(left.GetFloat64(), right.GetFloat64())
}
case JSONTypeCodeString:
cmp = bytes.Compare(left.GetString(), right.GetString())
case JSONTypeCodeArray:
leftCount := left.GetElemCount()
rightCount := right.GetElemCount()
for i := 0; i < leftCount && i < rightCount; i++ {
elem1 := left.ArrayGetElem(i)
elem2 := right.ArrayGetElem(i)
cmp = CompareBinaryJSON(elem1, elem2)
if cmp != 0 {
return cmp
}
}
cmp = leftCount - rightCount
case JSONTypeCodeObject:
// reference:
// https://github.com/mysql/mysql-server/blob/ee4455a33b10f1b1886044322e4893f587b319ed/sql/json_dom.cc#L2561
leftCount, rightCount := left.GetElemCount(), right.GetElemCount()
cmp := compareInt64(int64(leftCount), int64(rightCount))
if cmp != 0 {
return cmp
}
for i := range leftCount {
leftKey, rightKey := left.objectGetKey(i), right.objectGetKey(i)
cmp = bytes.Compare(leftKey, rightKey)
if cmp != 0 {
return cmp
}
cmp = CompareBinaryJSON(left.objectGetVal(i), right.objectGetVal(i))
if cmp != 0 {
return cmp
}
}
case JSONTypeCodeOpaque:
cmp = bytes.Compare(left.GetOpaque().Buf, right.GetOpaque().Buf)
case JSONTypeCodeDate, JSONTypeCodeDatetime, JSONTypeCodeTimestamp:
// the jsonTypePrecedences guarantees that the DATE is only
// comparable with the DATE, and the DATETIME and TIMESTAMP will compare with each other
// as the `Type()` of `JSONTypeCodeTimestamp` is also `DATETIME`.
leftTime := left.GetTime()
rightTime := right.GetTime()
cmp = leftTime.Compare(rightTime)
case JSONTypeCodeDuration:
leftDuration := left.GetDuration()
rightDuration := right.GetDuration()
cmp = leftDuration.Compare(rightDuration)
}
} else {
cmp = precedence1 - precedence2
if cmp > 0 {
cmp = 1
} else if cmp < 0 {
cmp = -1
}
}
return cmp
}
// MergePatchBinaryJSON implements RFC7396
// https://datatracker.ietf.org/doc/html/rfc7396
func MergePatchBinaryJSON(bjs []*BinaryJSON) (*BinaryJSON, error) {
var err error
length := len(bjs)
// according to the implements of RFC7396
// when the last item is not object
// we can return the last item directly
for i := length - 1; i >= 0; i-- {
if bjs[i] == nil || bjs[i].TypeCode != JSONTypeCodeObject {
bjs = bjs[i:]
break
}
}
target := bjs[0]
for _, patch := range bjs[1:] {
target, err = mergePatchBinaryJSON(target, patch)
if err != nil {
return nil, err
}
}
return target, nil
}
func mergePatchBinaryJSON(target, patch *BinaryJSON) (result *BinaryJSON, err error) {
if patch == nil {
return nil, nil
}
if patch.TypeCode == JSONTypeCodeObject {
if target == nil {
return nil, nil
}
keyValMap := make(map[string]BinaryJSON)
if target.TypeCode == JSONTypeCodeObject {
elemCount := target.GetElemCount()
for i := range elemCount {
key := target.objectGetKey(i)
val := target.objectGetVal(i)
keyValMap[string(key)] = val
}
}
var tmp *BinaryJSON
elemCount := patch.GetElemCount()
for i := range elemCount {
key := patch.objectGetKey(i)
val := patch.objectGetVal(i)
k := string(key)
targetKV, exists := keyValMap[k]
if val.TypeCode == JSONTypeCodeLiteral && val.Value[0] == JSONLiteralNil {
if exists {
delete(keyValMap, k)
}
} else {
tmp, err = mergePatchBinaryJSON(&targetKV, &val)
if err != nil {
return result, err
}
keyValMap[k] = *tmp
}
}
length := len(keyValMap)
keys := make([][]byte, 0, length)
for key := range keyValMap {
keys = append(keys, []byte(key))
}
slices.SortFunc(keys, bytes.Compare)
length = len(keys)
values := make([]BinaryJSON, 0, len(keys))
for i := range length {
values = append(values, keyValMap[string(keys[i])])
}
binaryObject, e := buildBinaryJSONObject(keys, values)
if e != nil {
return nil, e
}
return &binaryObject, nil
}
return patch, nil
}
// MergeBinaryJSON merges multiple BinaryJSON into one according the following rules:
// 1) adjacent arrays are merged to a single array;
// 2) adjacent object are merged to a single object;
// 3) a scalar value is autowrapped as an array before merge;
// 4) an adjacent array and object are merged by autowrapping the object as an array.
func MergeBinaryJSON(bjs []BinaryJSON) BinaryJSON {
var remain = bjs
var objects []BinaryJSON
var results []BinaryJSON
for len(remain) > 0 {
if remain[0].TypeCode != JSONTypeCodeObject {
results = append(results, remain[0])
remain = remain[1:]
} else {
objects, remain = getAdjacentObjects(remain)
results = append(results, mergeBinaryObject(objects))
}
}
if len(results) == 1 {
return results[0]
}
return mergeBinaryArray(results)
}
func getAdjacentObjects(bjs []BinaryJSON) (objects, remain []BinaryJSON) {
for i := range bjs {
if bjs[i].TypeCode != JSONTypeCodeObject {
return bjs[:i], bjs[i:]
}
}
return bjs, nil
}
func mergeBinaryArray(elems []BinaryJSON) BinaryJSON {
buf := make([]BinaryJSON, 0, len(elems))
for i := range elems {
elem := elems[i]
if elem.TypeCode != JSONTypeCodeArray {
buf = append(buf, elem)
} else {
childCount := elem.GetElemCount()
for j := range childCount {
buf = append(buf, elem.ArrayGetElem(j))
}
}
}
return buildBinaryJSONArray(buf)
}
func mergeBinaryObject(objects []BinaryJSON) BinaryJSON {
keyValMap := make(map[string]BinaryJSON)
keys := make([][]byte, 0, len(keyValMap))
for _, obj := range objects {
elemCount := obj.GetElemCount()
for i := range elemCount {
key := obj.objectGetKey(i)
val := obj.objectGetVal(i)
if old, ok := keyValMap[string(key)]; ok {
keyValMap[string(key)] = MergeBinaryJSON([]BinaryJSON{old, val})
} else {
keyValMap[string(key)] = val
keys = append(keys, key)
}
}
}
slices.SortFunc(keys, bytes.Compare)
values := make([]BinaryJSON, len(keys))
for i, key := range keys {
values[i] = keyValMap[string(key)]
}
binaryObject, err := buildBinaryJSONObject(keys, values)
if err != nil {
panic("mergeBinaryObject should never panic, please contact the TiDB team for help")
}
return binaryObject
}
// PeekBytesAsJSON trys to peek some bytes from b, until
// we can deserialize a JSON from those bytes.
func PeekBytesAsJSON(b []byte) (n int, err error) {
if len(b) <= 0 {
err = errors.New("Cant peek from empty bytes")
return
}
switch c := b[0]; c {
case JSONTypeCodeObject, JSONTypeCodeArray:
if len(b) >= valTypeSize+headerSize {
size := jsonEndian.Uint32(b[valTypeSize+dataSizeOff:])
n = valTypeSize + int(size)
return
}
case JSONTypeCodeString:
strLen, lenLen := binary.Uvarint(b[valTypeSize:])
return valTypeSize + int(strLen) + lenLen, nil
case JSONTypeCodeInt64, JSONTypeCodeUint64, JSONTypeCodeFloat64, JSONTypeCodeDate, JSONTypeCodeDatetime, JSONTypeCodeTimestamp:
n = valTypeSize + 8
return
case JSONTypeCodeLiteral:
n = valTypeSize + 1
return
case JSONTypeCodeOpaque:
bufLen, lenLen := binary.Uvarint(b[valTypeSize+1:])
return valTypeSize + 1 + int(bufLen) + lenLen, nil
case JSONTypeCodeDuration:
n = valTypeSize + 12
return
}
err = errors.New("Invalid JSON bytes")
return
}
// ContainsBinaryJSON check whether JSON document contains specific target according the following rules:
// 1) object contains a target object if and only if every key is contained in source object and the value associated with the target key is contained in the value associated with the source key;
// 2) array contains a target nonarray if and only if the target is contained in some element of the array;
// 3) array contains a target array if and only if every element is contained in some element of the array;
// 4) scalar contains a target scalar if and only if they are comparable and are equal;
func ContainsBinaryJSON(obj, target BinaryJSON) bool {
switch obj.TypeCode {
case JSONTypeCodeObject:
if target.TypeCode == JSONTypeCodeObject {
elemCount := target.GetElemCount()
for i := range elemCount {
key := target.objectGetKey(i)
val := target.objectGetVal(i)
if exp, exists := obj.objectSearchKey(key); !exists || !ContainsBinaryJSON(exp, val) {
return false
}
}
return true
}
return false
case JSONTypeCodeArray:
if target.TypeCode == JSONTypeCodeArray {
elemCount := target.GetElemCount()
for i := range elemCount {
if !ContainsBinaryJSON(obj, target.ArrayGetElem(i)) {
return false
}
}
return true
}
elemCount := obj.GetElemCount()
for i := range elemCount {
if ContainsBinaryJSON(obj.ArrayGetElem(i), target) {
return true
}
}
return false
default:
return CompareBinaryJSON(obj, target) == 0
}
}
// OverlapsBinaryJSON is similar with ContainsBinaryJSON, but it checks the `OR` relationship.
func OverlapsBinaryJSON(obj, target BinaryJSON) bool {
if obj.TypeCode != JSONTypeCodeArray && target.TypeCode == JSONTypeCodeArray {
obj, target = target, obj
}
switch obj.TypeCode {
case JSONTypeCodeObject:
if target.TypeCode == JSONTypeCodeObject {
elemCount := target.GetElemCount()
for i := range elemCount {
key := target.objectGetKey(i)
val := target.objectGetVal(i)
if exp, exists := obj.objectSearchKey(key); exists && CompareBinaryJSON(exp, val) == 0 {
return true
}
}
}
return false
case JSONTypeCodeArray:
if target.TypeCode == JSONTypeCodeArray {
for i := range obj.GetElemCount() {
o := obj.ArrayGetElem(i)
for j := range target.GetElemCount() {
if CompareBinaryJSON(o, target.ArrayGetElem(j)) == 0 {
return true
}
}
}
return false
}
elemCount := obj.GetElemCount()
for i := range elemCount {
if CompareBinaryJSON(obj.ArrayGetElem(i), target) == 0 {
return true
}
}
return false
default:
return CompareBinaryJSON(obj, target) == 0
}
}
// GetElemDepth for JSON_DEPTH
// Returns the maximum depth of a JSON document
// rules referenced by MySQL JSON_DEPTH function
// [https://dev.mysql.com/doc/refman/5.7/en/json-attribute-functions.html#function_json-depth]
// 1) An empty array, empty object, or scalar value has depth 1.
// 2) A nonempty array containing only elements of depth 1 or nonempty object containing only member values of depth 1 has depth 2.
// 3) Otherwise, a JSON document has depth greater than 2.
// e.g. depth of '{}', '[]', 'true': 1
// e.g. depth of '[10, 20]', '[[], {}]': 2
// e.g. depth of '[10, {"a": 20}]': 3
func (bj BinaryJSON) GetElemDepth() int {
switch bj.TypeCode {
case JSONTypeCodeObject:
elemCount := bj.GetElemCount()
maxDepth := 0
for i := range elemCount {
obj := bj.objectGetVal(i)
depth := obj.GetElemDepth()
if depth > maxDepth {
maxDepth = depth
}
}
return maxDepth + 1
case JSONTypeCodeArray:
elemCount := bj.GetElemCount()
maxDepth := 0
for i := range elemCount {
obj := bj.ArrayGetElem(i)
depth := obj.GetElemDepth()
if depth > maxDepth {
maxDepth = depth
}
}
return maxDepth + 1
default:
return 1
}
}
// Search for JSON_Search
// rules referenced by MySQL JSON_SEARCH function
// [https://dev.mysql.com/doc/refman/5.7/en/json-search-functions.html#function_json-search]
func (bj BinaryJSON) Search(containType string, search string, escape byte, pathExpres []JSONPathExpression) (res BinaryJSON, isNull bool, err error) {
if containType != JSONContainsPathOne && containType != JSONContainsPathAll {
return res, true, ErrJSONBadOneOrAllArg.GenWithStackByArgs("json_search")
}
patChars, patTypes := stringutil.CompilePattern(search, escape)
result := make([]any, 0)
walkFn := func(fullpath JSONPathExpression, bj BinaryJSON) (stop bool, err error) {
if bj.TypeCode == JSONTypeCodeString && stringutil.DoMatch(string(bj.GetString()), patChars, patTypes) {
result = append(result, fullpath.String())
if containType == JSONContainsPathOne {
return true, nil
}
}
return false, nil
}
if len(pathExpres) != 0 {
err := bj.Walk(walkFn, pathExpres...)
if err != nil {
return res, true, err
}
} else {
err := bj.Walk(walkFn)
if err != nil {
return res, true, err
}
}
switch len(result) {
case 0:
return res, true, nil
case 1:
return CreateBinaryJSON(result[0]), false, nil
default:
return CreateBinaryJSON(result), false, nil
}
}
// extractCallbackFn the type of CALLBACK function for extractToCallback
type extractCallbackFn func(fullpath JSONPathExpression, bj BinaryJSON) (stop bool, err error)
// extractToCallback callback alternative of extractTo
//
// would be more effective when walk through the whole JSON is unnecessary
//
// NOTICE: path [0] & [*] for JSON object other than array is INVALID, which is different from extractTo.
func (bj BinaryJSON) extractToCallback(pathExpr JSONPathExpression, callbackFn extractCallbackFn, fullpath JSONPathExpression) (stop bool, err error) {
if len(pathExpr.legs) == 0 {
return callbackFn(fullpath, bj)
}
currentLeg, subPathExpr := pathExpr.popOneLeg()
if currentLeg.typ == jsonPathLegArraySelection && bj.TypeCode == JSONTypeCodeArray {
elemCount := bj.GetElemCount()
switch selection := currentLeg.arraySelection.(type) {
case jsonPathArraySelectionAsterisk:
for i := range elemCount {
// buf = bj.ArrayGetElem(i).extractTo(buf, subPathExpr)
path := fullpath.pushBackOneArraySelectionLeg(jsonPathArraySelectionIndex{jsonPathArrayIndexFromStart(i)})
stop, err = bj.ArrayGetElem(i).extractToCallback(subPathExpr, callbackFn, path)
if stop || err != nil {
return
}
}
case jsonPathArraySelectionIndex:
idx := selection.index.getIndexFromStart(bj)
if idx < elemCount && idx >= 0 {
// buf = bj.ArrayGetElem(currentLeg.arraySelection).extractTo(buf, subPathExpr)
path := fullpath.pushBackOneArraySelectionLeg(currentLeg.arraySelection)
stop, err = bj.ArrayGetElem(idx).extractToCallback(subPathExpr, callbackFn, path)
if stop || err != nil {
return
}
}
case jsonPathArraySelectionRange:
start := selection.start.getIndexFromStart(bj)
end := selection.end.getIndexFromStart(bj)
if end >= elemCount {
end = elemCount - 1
}
if start <= end && start >= 0 {
for i := start; i <= end; i++ {
path := fullpath.pushBackOneArraySelectionLeg(jsonPathArraySelectionIndex{jsonPathArrayIndexFromStart(i)})
stop, err = bj.ArrayGetElem(i).extractToCallback(subPathExpr, callbackFn, path)
if stop || err != nil {
return
}
}
}
}
} else if currentLeg.typ == jsonPathLegKey && bj.TypeCode == JSONTypeCodeObject {
elemCount := bj.GetElemCount()
if currentLeg.dotKey == "*" {
for i := range elemCount {
// buf = bj.objectGetVal(i).extractTo(buf, subPathExpr)
path := fullpath.pushBackOneKeyLeg(string(bj.objectGetKey(i)))
stop, err = bj.objectGetVal(i).extractToCallback(subPathExpr, callbackFn, path)
if stop || err != nil {
return
}
}
} else {
child, ok := bj.objectSearchKey(hack.Slice(currentLeg.dotKey))
if ok {
// buf = child.extractTo(buf, subPathExpr)
path := fullpath.pushBackOneKeyLeg(currentLeg.dotKey)
stop, err = child.extractToCallback(subPathExpr, callbackFn, path)
if stop || err != nil {
return
}
}
}
} else if currentLeg.typ == jsonPathLegDoubleAsterisk {
// buf = bj.extractTo(buf, subPathExpr)
stop, err = bj.extractToCallback(subPathExpr, callbackFn, fullpath)
if stop || err != nil {
return
}
if bj.TypeCode == JSONTypeCodeArray {
elemCount := bj.GetElemCount()
for i := range elemCount {
// buf = bj.ArrayGetElem(i).extractTo(buf, pathExpr)
path := fullpath.pushBackOneArraySelectionLeg(jsonPathArraySelectionIndex{jsonPathArrayIndexFromStart(i)})
stop, err = bj.ArrayGetElem(i).extractToCallback(pathExpr, callbackFn, path)
if stop || err != nil {
return
}
}
} else if bj.TypeCode == JSONTypeCodeObject {
elemCount := bj.GetElemCount()
for i := range elemCount {
// buf = bj.objectGetVal(i).extractTo(buf, pathExpr)
path := fullpath.pushBackOneKeyLeg(string(bj.objectGetKey(i)))
stop, err = bj.objectGetVal(i).extractToCallback(pathExpr, callbackFn, path)
if stop || err != nil {
return
}
}
}
}
return false, nil
}
// BinaryJSONWalkFunc is used as callback function for BinaryJSON.Walk
type BinaryJSONWalkFunc func(fullpath JSONPathExpression, bj BinaryJSON) (stop bool, err error)
// Walk traverse BinaryJSON objects
func (bj BinaryJSON) Walk(walkFn BinaryJSONWalkFunc, pathExprList ...JSONPathExpression) (err error) {
pathSet := make(map[string]bool)
var doWalk extractCallbackFn
doWalk = func(fullpath JSONPathExpression, bj BinaryJSON) (stop bool, err error) {
pathStr := fullpath.String()
if _, ok := pathSet[pathStr]; ok {
return false, nil
}
stop, err = walkFn(fullpath, bj)
pathSet[pathStr] = true
if stop || err != nil {
return
}
if bj.TypeCode == JSONTypeCodeArray {
elemCount := bj.GetElemCount()
for i := range elemCount {
path := fullpath.pushBackOneArraySelectionLeg(jsonPathArraySelectionIndex{jsonPathArrayIndexFromStart(i)})
stop, err = doWalk(path, bj.ArrayGetElem(i))
if stop || err != nil {
return
}
}
} else if bj.TypeCode == JSONTypeCodeObject {
elemCount := bj.GetElemCount()
for i := range elemCount {
path := fullpath.pushBackOneKeyLeg(string(bj.objectGetKey(i)))
stop, err = doWalk(path, bj.objectGetVal(i))
if stop || err != nil {
return
}
}
}
return false, nil
}
fullpath := JSONPathExpression{legs: make([]jsonPathLeg, 0, 32), flags: jsonPathExpressionFlag(0)}
if len(pathExprList) > 0 {
for _, pathExpr := range pathExprList {
var stop bool
stop, err = bj.extractToCallback(pathExpr, doWalk, fullpath)
if stop || err != nil {
return err
}
}
} else {
_, err = doWalk(fullpath, bj)
if err != nil {
return
}
}
return nil
}
// Copyright 2017 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package types
import (
"encoding/json"
"math"
"slices"
"strconv"
"strings"
"sync"
"unicode"
"github.com/pingcap/tidb/pkg/util/hack"
"github.com/pingcap/tidb/pkg/util/kvcache"
)
/*
From MySQL 5.7, JSON path expression grammar:
pathExpression ::= scope (jsonPathLeg)*
scope ::= [ columnReference ] '$'
columnReference ::= // omit...
jsonPathLeg ::= member | arrayLocation | '**'
member ::= '.' (keyName | '*')
arrayLocation ::= '[' (non-negative-integer | '*') ']'
keyName ::= ECMAScript-identifier | ECMAScript-string-literal
And some implementation limits in MySQL 5.7:
1) columnReference in scope must be empty now;
2) double asterisk(**) could not be last leg;
Examples:
select json_extract('{"a": "b", "c": [1, "2"]}', '$.a') -> "b"
select json_extract('{"a": "b", "c": [1, "2"]}', '$.c') -> [1, "2"]
select json_extract('{"a": "b", "c": [1, "2"]}', '$.a', '$.c') -> ["b", [1, "2"]]
select json_extract('{"a": "b", "c": [1, "2"]}', '$.c[0]') -> 1
select json_extract('{"a": "b", "c": [1, "2"]}', '$.c[2]') -> NULL
select json_extract('{"a": "b", "c": [1, "2"]}', '$.c[*]') -> [1, "2"]
select json_extract('{"a": "b", "c": [1, "2"]}', '$.*') -> ["b", [1, "2"]]
*/
var (
lastStr = []rune("last")
toStr = []rune("to")
)
// if index is positive, it represents the [index]
// if index is negative, it represents the [len() + index]
// a normal index "5" will be parsed into "5", and the "last - 5" will be "-6"
type jsonPathArrayIndex int
func (index jsonPathArrayIndex) getIndexFromStart(obj BinaryJSON) int {
if index < 0 {
return obj.GetElemCount() + int(index)
}
return int(index)
}
// validateIndexRange returns whether `a` could be less or equal than `b`
// if two indexes are all non-negative, or all negative, the comparison follows the number order
// if the sign of them differs, this function will still return true
func validateIndexRange(a jsonPathArrayIndex, b jsonPathArrayIndex) bool {
if (a >= 0 && b >= 0) || (a < 0 && b < 0) {
return a <= b
}
return true
}
func jsonPathArrayIndexFromStart(index int) jsonPathArrayIndex {
return jsonPathArrayIndex(index)
}
func jsonPathArrayIndexFromLast(index int) jsonPathArrayIndex {
return jsonPathArrayIndex(-1 - index)
}
type jsonPathArraySelection interface {
// returns the closed interval of the range it represents
// it ensures the `end` is less or equal than element count - 1
// the caller should validate the return value through checking start <= end
getIndexRange(bj BinaryJSON) (int, int)
}
var _ jsonPathArraySelection = jsonPathArraySelectionAsterisk{}
var _ jsonPathArraySelection = jsonPathArraySelectionIndex{}
var _ jsonPathArraySelection = jsonPathArraySelectionRange{}
type jsonPathArraySelectionAsterisk struct{}
func (jsonPathArraySelectionAsterisk) getIndexRange(bj BinaryJSON) (int, int) {
return 0, bj.GetElemCount() - 1
}
type jsonPathArraySelectionIndex struct {
index jsonPathArrayIndex
}
func (i jsonPathArraySelectionIndex) getIndexRange(bj BinaryJSON) (int, int) {
end := i.index.getIndexFromStart(bj)
// returns index, min(index, count - 1)
// so that the caller could only check the start <= end
elemCount := bj.GetElemCount()
if end >= elemCount {
end = elemCount - 1
}
return i.index.getIndexFromStart(bj), end
}
// jsonPathArraySelectionRange represents a closed interval
type jsonPathArraySelectionRange struct {
start jsonPathArrayIndex
end jsonPathArrayIndex
}
func (i jsonPathArraySelectionRange) getIndexRange(bj BinaryJSON) (int, int) {
start := i.start.getIndexFromStart(bj)
end := i.end.getIndexFromStart(bj)
elemCount := bj.GetElemCount()
if end >= elemCount {
end = elemCount - 1
}
return start, end
}
type jsonPathLegType byte
const (
// jsonPathLegKey indicates the path leg with '.key'.
jsonPathLegKey jsonPathLegType = 0x01
// jsonPathLegArraySelection indicates the path leg with form '[index]', '[index to index]'.
jsonPathLegArraySelection jsonPathLegType = 0x02
// jsonPathLegDoubleAsterisk indicates the path leg with form '**'.
jsonPathLegDoubleAsterisk jsonPathLegType = 0x03
)
// jsonPathLeg is only used by JSONPathExpression.
type jsonPathLeg struct {
typ jsonPathLegType
arraySelection jsonPathArraySelection // if typ is jsonPathLegArraySelection, the value should be parsed into here.
dotKey string // if typ is jsonPathLegKey, the key should be parsed into here.
}
// jsonPathExpressionFlag holds attributes of JSONPathExpression
type jsonPathExpressionFlag byte
const (
jsonPathExpressionContainsAsterisk jsonPathExpressionFlag = 0x01
jsonPathExpressionContainsDoubleAsterisk jsonPathExpressionFlag = 0x02
jsonPathExpressionContainsRange jsonPathExpressionFlag = 0x04
)
// containsAnyAsterisk returns true if pef contains any asterisk.
func (pef jsonPathExpressionFlag) containsAnyAsterisk() bool {
pef &= jsonPathExpressionContainsAsterisk | jsonPathExpressionContainsDoubleAsterisk
return byte(pef) != 0
}
// containsAnyRange returns true if pef contains any range.
func (pef jsonPathExpressionFlag) containsAnyRange() bool {
pef &= jsonPathExpressionContainsRange
return byte(pef) != 0
}
// JSONPathExpression is for JSON path expression.
type JSONPathExpression struct {
legs []jsonPathLeg
flags jsonPathExpressionFlag
}
func (pe JSONPathExpression) clone() JSONPathExpression {
legs := make([]jsonPathLeg, len(pe.legs))
copy(legs, pe.legs)
return JSONPathExpression{legs: legs, flags: pe.flags}
}
var peCache JSONPathExpressionCache
type jsonPathExpressionKey string
func (key jsonPathExpressionKey) Hash() []byte {
return hack.Slice(string(key))
}
// JSONPathExpressionCache is a cache for JSONPathExpression.
type JSONPathExpressionCache struct {
mu sync.Mutex
cache *kvcache.SimpleLRUCache
}
// popOneLeg returns a jsonPathLeg, and a child JSONPathExpression without that leg.
func (pe JSONPathExpression) popOneLeg() (jsonPathLeg, JSONPathExpression) {
newPe := JSONPathExpression{
legs: pe.legs[1:],
flags: 0,
}
for _, leg := range newPe.legs {
if leg.typ == jsonPathLegArraySelection {
switch leg.arraySelection.(type) {
case jsonPathArraySelectionAsterisk:
newPe.flags |= jsonPathExpressionContainsAsterisk
case jsonPathArraySelectionRange:
newPe.flags |= jsonPathExpressionContainsRange
}
} else if leg.typ == jsonPathLegKey && leg.dotKey == "*" {
newPe.flags |= jsonPathExpressionContainsAsterisk
} else if leg.typ == jsonPathLegDoubleAsterisk {
newPe.flags |= jsonPathExpressionContainsDoubleAsterisk
}
}
return pe.legs[0], newPe
}
// popOneLastLeg returns the parent JSONPathExpression and the last jsonPathLeg
func (pe JSONPathExpression) popOneLastLeg() (JSONPathExpression, jsonPathLeg) {
lastLegIdx := len(pe.legs) - 1
lastLeg := pe.legs[lastLegIdx]
// It is used only in modification, it has been checked that there is no asterisks.
return JSONPathExpression{legs: pe.legs[:lastLegIdx]}, lastLeg
}
// pushBackOneArraySelectionLeg pushback one leg of INDEX type
func (pe JSONPathExpression) pushBackOneArraySelectionLeg(arraySelection jsonPathArraySelection) JSONPathExpression {
newPe := JSONPathExpression{
legs: append(pe.legs, jsonPathLeg{typ: jsonPathLegArraySelection, arraySelection: arraySelection}),
flags: pe.flags,
}
switch arraySelection.(type) {
case jsonPathArraySelectionAsterisk:
newPe.flags |= jsonPathExpressionContainsAsterisk
case jsonPathArraySelectionRange:
newPe.flags |= jsonPathExpressionContainsRange
}
return newPe
}
// pushBackOneKeyLeg pushback one leg of KEY type
func (pe JSONPathExpression) pushBackOneKeyLeg(key string) JSONPathExpression {
newPe := JSONPathExpression{
legs: append(pe.legs, jsonPathLeg{typ: jsonPathLegKey, dotKey: key}),
flags: pe.flags,
}
if key == "*" {
newPe.flags |= jsonPathExpressionContainsAsterisk
}
return newPe
}
// CouldMatchMultipleValues returns true if pe contains any asterisk or range selection.
func (pe JSONPathExpression) CouldMatchMultipleValues() bool {
return pe.flags.containsAnyAsterisk() || pe.flags.containsAnyRange()
}
type jsonPathStream struct {
pathExpr []rune
pos int
}
func (s *jsonPathStream) skipWhiteSpace() {
for ; s.pos < len(s.pathExpr); s.pos++ {
if !unicode.IsSpace(s.pathExpr[s.pos]) {
break
}
}
}
func (s *jsonPathStream) read() rune {
b := s.pathExpr[s.pos]
s.pos++
return b
}
func (s *jsonPathStream) peek() rune {
return s.pathExpr[s.pos]
}
func (s *jsonPathStream) skip(i int) {
s.pos += i
}
func (s *jsonPathStream) exhausted() bool {
return s.pos >= len(s.pathExpr)
}
func (s *jsonPathStream) readWhile(f func(rune) bool) (str []rune, metEnd bool) {
start := s.pos
for ; !s.exhausted(); s.skip(1) {
if !f(s.peek()) {
return s.pathExpr[start:s.pos], false
}
}
return s.pathExpr[start:], true
}
func parseJSONPathExpr(pathExpr string) (pe JSONPathExpression, err error) {
s := &jsonPathStream{pathExpr: []rune(pathExpr), pos: 0}
s.skipWhiteSpace()
if s.exhausted() || s.read() != '$' {
return JSONPathExpression{}, ErrInvalidJSONPath.GenWithStackByArgs(1)
}
s.skipWhiteSpace()
pe.legs = make([]jsonPathLeg, 0, 16)
pe.flags = jsonPathExpressionFlag(0)
var ok bool
for !s.exhausted() {
switch s.peek() {
case '.':
ok = parseJSONPathMember(s, &pe)
case '[':
ok = parseJSONPathArray(s, &pe)
case '*':
ok = parseJSONPathWildcard(s, &pe)
default:
ok = false
}
if !ok {
return JSONPathExpression{}, ErrInvalidJSONPath.GenWithStackByArgs(s.pos)
}
s.skipWhiteSpace()
}
if len(pe.legs) > 0 && pe.legs[len(pe.legs)-1].typ == jsonPathLegDoubleAsterisk {
return JSONPathExpression{}, ErrInvalidJSONPath.GenWithStackByArgs(s.pos)
}
return
}
func parseJSONPathWildcard(s *jsonPathStream, p *JSONPathExpression) bool {
s.skip(1)
if s.exhausted() || s.read() != '*' {
return false
}
if s.exhausted() || s.peek() == '*' {
return false
}
p.flags |= jsonPathExpressionContainsDoubleAsterisk
p.legs = append(p.legs, jsonPathLeg{typ: jsonPathLegDoubleAsterisk})
return true
}
func (s *jsonPathStream) tryReadString(expected []rune) bool {
recordPos := s.pos
i := 0
str, meetEnd := s.readWhile(func(b rune) bool {
i += 1
return i <= len(expected)
})
if meetEnd || !slices.Equal(str, expected) {
s.pos = recordPos
return false
}
return true
}
func (s *jsonPathStream) tryReadIndexNumber() (int, bool) {
recordPos := s.pos
str, meetEnd := s.readWhile(func(b rune) bool {
return b >= '0' && b <= '9'
})
if meetEnd {
s.pos = recordPos
return 0, false
}
index, err := strconv.Atoi(string(str))
if err != nil || index > math.MaxUint32 {
s.pos = recordPos
return 0, false
}
return index, true
}
// tryParseArrayIndex tries to read an arrayIndex, which is 'number', 'last' or 'last - number'
// if failed, the stream will not be pushed forward
func (s *jsonPathStream) tryParseArrayIndex() (jsonPathArrayIndex, bool) {
recordPos := s.pos
s.skipWhiteSpace()
if s.exhausted() {
return 0, false
}
switch c := s.peek(); {
case c >= '0' && c <= '9':
index, ok := s.tryReadIndexNumber()
if !ok {
s.pos = recordPos
return 0, false
}
return jsonPathArrayIndexFromStart(index), true
case c == 'l':
if !s.tryReadString(lastStr) {
s.pos = recordPos
return 0, false
}
s.skipWhiteSpace()
if s.exhausted() {
return jsonPathArrayIndexFromLast(0), true
}
if s.peek() != '-' {
return jsonPathArrayIndexFromLast(0), true
}
s.skip(1)
s.skipWhiteSpace()
index, ok := s.tryReadIndexNumber()
if !ok {
s.pos = recordPos
return 0, false
}
return jsonPathArrayIndexFromLast(index), true
}
return 0, false
}
func parseJSONPathArray(s *jsonPathStream, p *JSONPathExpression) bool {
s.skip(1)
s.skipWhiteSpace()
if s.exhausted() {
return false
}
if s.peek() == '*' {
s.skip(1)
p.flags |= jsonPathExpressionContainsAsterisk
p.legs = append(p.legs, jsonPathLeg{typ: jsonPathLegArraySelection, arraySelection: jsonPathArraySelectionAsterisk{}})
} else {
start, ok := s.tryParseArrayIndex()
if !ok {
return false
}
var selection jsonPathArraySelection
selection = jsonPathArraySelectionIndex{start}
// try to read " to " and the end
if unicode.IsSpace(s.peek()) {
s.skipWhiteSpace()
if s.tryReadString(toStr) && unicode.IsSpace(s.peek()) {
s.skipWhiteSpace()
if s.exhausted() {
return false
}
end, ok := s.tryParseArrayIndex()
if !ok {
return false
}
if !validateIndexRange(start, end) {
return false
}
p.flags |= jsonPathExpressionContainsRange
selection = jsonPathArraySelectionRange{start, end}
}
}
p.legs = append(p.legs, jsonPathLeg{typ: jsonPathLegArraySelection, arraySelection: selection})
}
s.skipWhiteSpace()
if s.exhausted() || s.read() != ']' {
return false
}
return true
}
func parseJSONPathMember(s *jsonPathStream, p *JSONPathExpression) bool {
var err error
s.skip(1)
s.skipWhiteSpace()
if s.exhausted() {
return false
}
if s.peek() == '*' {
s.skip(1)
p.flags |= jsonPathExpressionContainsAsterisk
p.legs = append(p.legs, jsonPathLeg{typ: jsonPathLegKey, dotKey: "*"})
} else {
var dotKey string
var wasQuoted bool
if s.peek() == '"' {
s.skip(1)
str, meetEnd := s.readWhile(func(b rune) bool {
if b == '\\' {
s.skip(1)
return true
}
return b != '"'
})
if meetEnd {
return false
}
s.skip(1)
dotKey = string(str)
wasQuoted = true
} else {
dotKeyInRune, _ := s.readWhile(func(b rune) bool {
return !(unicode.IsSpace(b) || b == '.' || b == '[' || b == '*')
})
dotKey = string(dotKeyInRune)
}
dotKey = "\"" + dotKey + "\""
if !json.Valid(hack.Slice(dotKey)) {
return false
}
dotKey, err = unquoteJSONString(dotKey[1 : len(dotKey)-1])
if err != nil || (!wasQuoted && !isEcmascriptIdentifier(dotKey)) {
return false
}
p.legs = append(p.legs, jsonPathLeg{typ: jsonPathLegKey, dotKey: dotKey})
}
return true
}
func isEcmascriptIdentifier(s string) bool {
if s == "" {
return false
}
for i := range len(s) {
c := rune(s[i])
// accept Latin1 letter
if c <= unicode.MaxLatin1 && unicode.IsLetter(c) {
continue
}
// accept '$' and '_'
if c == '$' || c == '_' {
continue
}
// the first character must be a letter or '$' or '_'
if i == 0 {
return false
}
// accept unicode combining mark
if unicode.Is(unicode.Mc, c) {
continue
}
// accept digit
if unicode.IsDigit(c) {
continue
}
// accept unicode connector punctuation
if unicode.Is(unicode.Pc, c) {
continue
}
// accept ZWNJ and ZWJ
if c == 0x200C || c == 0x200D {
continue
}
return false
}
return true
}
// ParseJSONPathExpr parses a JSON path expression. Returns a JSONPathExpression
// object which can be used in JSON_EXTRACT, JSON_SET and so on.
func ParseJSONPathExpr(pathExpr string) (JSONPathExpression, error) {
peCache.mu.Lock()
val, ok := peCache.cache.Get(jsonPathExpressionKey(pathExpr))
if ok {
peCache.mu.Unlock()
return val.(JSONPathExpression).clone(), nil
}
peCache.mu.Unlock()
pathExpression, err := parseJSONPathExpr(pathExpr)
if err == nil {
peCache.mu.Lock()
peCache.cache.Put(jsonPathExpressionKey(pathExpr), kvcache.Value(pathExpression))
peCache.mu.Unlock()
}
return pathExpression, err
}
func (index jsonPathArrayIndex) String() string {
if index < 0 {
indexStr := strconv.Itoa(int(math.Abs(float64(index + 1))))
return "last-" + indexStr
}
indexStr := strconv.Itoa(int(index))
return indexStr
}
func (pe JSONPathExpression) String() string {
var s strings.Builder
s.WriteString("$")
for _, leg := range pe.legs {
switch leg.typ {
case jsonPathLegArraySelection:
switch selection := leg.arraySelection.(type) {
case jsonPathArraySelectionAsterisk:
s.WriteString("[*]")
case jsonPathArraySelectionIndex:
s.WriteString("[")
s.WriteString(selection.index.String())
s.WriteString("]")
case jsonPathArraySelectionRange:
s.WriteString("[")
s.WriteString(selection.start.String())
s.WriteString(" to ")
s.WriteString(selection.end.String())
s.WriteString("]")
}
case jsonPathLegKey:
s.WriteString(".")
if leg.dotKey == "*" {
s.WriteString(leg.dotKey)
} else {
s.WriteString(quoteJSONString(leg.dotKey))
}
case jsonPathLegDoubleAsterisk:
s.WriteString("**")
}
}
return s.String()
}
func init() {
peCache.cache = kvcache.NewSimpleLRUCache(1000, 0.1, math.MaxUint64)
}
// Copyright 2016 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package types
import (
"encoding/json"
"math"
"strconv"
"strings"
"github.com/pingcap/errors"
"github.com/pingcap/log"
"github.com/pingcap/tidb/pkg/parser/mysql"
"github.com/pingcap/tidb/pkg/parser/terror"
"go.uber.org/zap"
)
// RoundMode is the type for round mode.
type RoundMode int32
// constant values.
const (
ten0 = 1
ten1 = 10
ten2 = 100
ten3 = 1000
ten4 = 10000
ten5 = 100000
ten6 = 1000000
ten7 = 10000000
ten8 = 100000000
ten9 = 1000000000
maxWordBufLen = 9 // A MyDecimal holds 9 words.
digitsPerWord = 9 // A word holds 9 digits.
wordSize = 4 // A word is 4 bytes int32.
digMask = ten8
wordBase = ten9
wordMax = wordBase - 1
notFixedDec = 31
// Round up to the next integer if positive or down to the next integer if negative.
ModeHalfUp RoundMode = 5
// Truncate just truncates the decimal.
ModeTruncate RoundMode = 10
// Ceiling is not supported now.
ModeCeiling RoundMode = 0
pow10off int = 81
)
var (
wordBufLen = 9
mod9 = [128]int8{
0, 1, 2, 3, 4, 5, 6, 7, 8,
0, 1, 2, 3, 4, 5, 6, 7, 8,
0, 1, 2, 3, 4, 5, 6, 7, 8,
0, 1, 2, 3, 4, 5, 6, 7, 8,
0, 1, 2, 3, 4, 5, 6, 7, 8,
0, 1, 2, 3, 4, 5, 6, 7, 8,
0, 1, 2, 3, 4, 5, 6, 7, 8,
0, 1, 2, 3, 4, 5, 6, 7, 8,
0, 1, 2, 3, 4, 5, 6, 7, 8,
0, 1, 2, 3, 4, 5, 6, 7, 8,
0, 1, 2, 3, 4, 5, 6, 7, 8,
0, 1, 2, 3, 4, 5, 6, 7, 8,
0, 1, 2, 3, 4, 5, 6, 7, 8,
0, 1, 2, 3, 4, 5, 6, 7, 8,
0, 1,
}
div9 = [128]int{
0, 0, 0, 0, 0, 0, 0, 0, 0,
1, 1, 1, 1, 1, 1, 1, 1, 1,
2, 2, 2, 2, 2, 2, 2, 2, 2,
3, 3, 3, 3, 3, 3, 3, 3, 3,
4, 4, 4, 4, 4, 4, 4, 4, 4,
5, 5, 5, 5, 5, 5, 5, 5, 5,
6, 6, 6, 6, 6, 6, 6, 6, 6,
7, 7, 7, 7, 7, 7, 7, 7, 7,
8, 8, 8, 8, 8, 8, 8, 8, 8,
9, 9, 9, 9, 9, 9, 9, 9, 9,
10, 10, 10, 10, 10, 10, 10, 10, 10,
11, 11, 11, 11, 11, 11, 11, 11, 11,
12, 12, 12, 12, 12, 12, 12, 12, 12,
13, 13, 13, 13, 13, 13, 13, 13, 13,
14, 14,
}
powers10 = [10]int32{ten0, ten1, ten2, ten3, ten4, ten5, ten6, ten7, ten8, ten9}
dig2bytes = [10]int{0, 1, 1, 2, 2, 3, 3, 4, 4, 4}
fracMax = [8]int32{
900000000,
990000000,
999000000,
999900000,
999990000,
999999000,
999999900,
999999990,
}
zeroMyDecimal = MyDecimal{}
pow10off81 = [...]float64{1e-81, 1e-80, 1e-79, 1e-78, 1e-77, 1e-76, 1e-75, 1e-74, 1e-73, 1e-72, 1e-71, 1e-70, 1e-69, 1e-68, 1e-67, 1e-66, 1e-65, 1e-64, 1e-63, 1e-62, 1e-61, 1e-60, 1e-59, 1e-58, 1e-57, 1e-56, 1e-55, 1e-54, 1e-53, 1e-52, 1e-51, 1e-50, 1e-49, 1e-48, 1e-47, 1e-46, 1e-45, 1e-44, 1e-43, 1e-42, 1e-41, 1e-40, 1e-39, 1e-38, 1e-37, 1e-36, 1e-35, 1e-34, 1e-33, 1e-32, 1e-31, 1e-30, 1e-29, 1e-28, 1e-27, 1e-26, 1e-25, 1e-24, 1e-23, 1e-22, 1e-21, 1e-20, 1e-19, 1e-18, 1e-17, 1e-16, 1e-15, 1e-14, 1e-13, 1e-12, 1e-11, 1e-10, 1e-9, 1e-8, 1e-7, 1e-6, 1e-5, 1e-4, 1e-3, 1e-2, 1e-1, 1e0, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13, 1e14, 1e15, 1e16, 1e17, 1e18, 1e19, 1e20, 1e21, 1e22, 1e23, 1e24, 1e25, 1e26, 1e27, 1e28, 1e29, 1e30, 1e31, 1e32, 1e33, 1e34, 1e35, 1e36, 1e37, 1e38, 1e39, 1e40, 1e41, 1e42, 1e43, 1e44, 1e45, 1e46, 1e47, 1e48, 1e49, 1e50, 1e51, 1e52, 1e53, 1e54, 1e55, 1e56, 1e57, 1e58, 1e59, 1e60, 1e61, 1e62, 1e63, 1e64, 1e65, 1e66, 1e67, 1e68, 1e69, 1e70, 1e71, 1e72, 1e73, 1e74, 1e75, 1e76, 1e77, 1e78, 1e79, 1e80, 1e81}
)
// get the zero of MyDecimal with the specified result fraction digits
func zeroMyDecimalWithFrac(frac int8) MyDecimal {
zero := MyDecimal{}
zero.digitsFrac = frac
zero.resultFrac = frac
return zero
}
// add adds a and b and carry, returns the sum and new carry.
func add(a, b, carry int32) (sum int32, newCarry int32) {
sum = a + b + carry
if sum >= wordBase {
newCarry = 1
sum -= wordBase
} else {
newCarry = 0
}
return sum, newCarry
}
// add2 adds a and b and carry, returns the sum and new carry.
// It is only used in DecimalMul.
// nolint: revive
func add2(a, b, carry int32) (int32, int32) {
sum := int64(a) + int64(b) + int64(carry)
if sum >= wordBase {
carry = 1
sum -= wordBase
} else {
carry = 0
}
if sum >= wordBase {
sum -= wordBase
carry++
}
return int32(sum), carry
}
// sub subtracts b and carry from a, returns the diff and new carry.
func sub(a, b, carry int32) (diff int32, newCarry int32) {
diff = a - b - carry
if diff < 0 {
newCarry = 1
diff += wordBase
} else {
newCarry = 0
}
return diff, newCarry
}
// sub2 subtracts b and carry from a, returns the diff and new carry.
// the new carry may be 2.
func sub2(a, b, carry int32) (diff int32, newCarray int32) {
diff = a - b - carry
if diff < 0 {
newCarray = 1
diff += wordBase
} else {
newCarray = 0
}
if diff < 0 {
diff += wordBase
newCarray++
}
return diff, newCarray
}
// fixWordCntError limits word count in wordBufLen, and returns overflow or truncate error.
func fixWordCntError(wordsInt, wordsFrac int) (newWordsInt int, newWordsFrac int, err error) {
if wordsInt+wordsFrac > wordBufLen {
if wordsInt > wordBufLen {
return wordBufLen, 0, ErrOverflow
}
return wordsInt, wordBufLen - wordsInt, ErrTruncated
}
return wordsInt, wordsFrac, nil
}
/*
countLeadingZeroes returns the number of leading zeroes that can be removed from fraction.
@param i start index
@param word value to compare against list of powers of 10
*/
func countLeadingZeroes(i int, word int32) int {
leading := 0
for word < powers10[i] {
i--
leading++
}
return leading
}
/*
countTrailingZeros returns the number of trailing zeroes that can be removed from fraction.
@param i start index
@param word value to compare against list of powers of 10
*/
func countTrailingZeroes(i int, word int32) int {
trailing := 0
for word%powers10[i] == 0 {
i++
trailing++
}
return trailing
}
func digitsToWords(digits int) int {
if digits+digitsPerWord-1 >= 0 && digits+digitsPerWord-1 < 128 {
return div9[digits+digitsPerWord-1]
}
return (digits + digitsPerWord - 1) / digitsPerWord
}
// MyDecimalStructSize is the struct size of MyDecimal.
const MyDecimalStructSize = 40
// MyDecimal represents a decimal value.
type MyDecimal struct {
digitsInt int8 // the number of *decimal* digits before the point.
digitsFrac int8 // the number of decimal digits after the point.
resultFrac int8 // result fraction digits.
negative bool
// wordBuf is an array of int32 words.
// A word is an int32 value can hold 9 digits.(0 <= word < wordBase)
wordBuf [maxWordBufLen]int32
}
// IsNegative returns whether a decimal is negative.
func (d *MyDecimal) IsNegative() bool {
return d.negative
}
// GetDigitsFrac returns the digitsFrac.
func (d *MyDecimal) GetDigitsFrac() int8 {
return d.digitsFrac
}
// GetDigitsInt returns the digitsInt.
func (d *MyDecimal) GetDigitsInt() int8 {
return d.digitsInt
}
// String returns the decimal string representation rounded to resultFrac.
func (d *MyDecimal) String() string {
tmp := *d
err := tmp.Round(&tmp, int(tmp.resultFrac), ModeHalfUp)
terror.Log(errors.Trace(err))
return string(tmp.ToString())
}
func (d *MyDecimal) stringSize() int {
// sign, zero integer and dot.
return int(d.digitsInt + d.digitsFrac + 3)
}
func (d *MyDecimal) removeLeadingZeros() (wordIdx int, digitsInt int) {
digitsInt = int(d.digitsInt)
i := ((digitsInt - 1) % digitsPerWord) + 1
for digitsInt > 0 && d.wordBuf[wordIdx] == 0 {
digitsInt -= i
i = digitsPerWord
wordIdx++
}
if digitsInt > 0 {
digitsInt -= countLeadingZeroes((digitsInt-1)%digitsPerWord, d.wordBuf[wordIdx])
} else {
digitsInt = 0
}
return
}
func (d *MyDecimal) removeTrailingZeros() (lastWordIdx int, digitsFrac int) {
digitsFrac = int(d.digitsFrac)
i := ((digitsFrac - 1) % digitsPerWord) + 1
lastWordIdx = digitsToWords(int(d.digitsInt)) + digitsToWords(int(d.digitsFrac))
for digitsFrac > 0 && d.wordBuf[lastWordIdx-1] == 0 {
digitsFrac -= i
i = digitsPerWord
lastWordIdx--
}
if digitsFrac > 0 {
digitsFrac -= countTrailingZeroes(9-((digitsFrac-1)%digitsPerWord), d.wordBuf[lastWordIdx-1])
} else {
digitsFrac = 0
}
return
}
// ToString converts decimal to its printable string representation without rounding.
//
// RETURN VALUE
//
// str - result string
// errCode - eDecOK/eDecTruncate/eDecOverflow
func (d *MyDecimal) ToString() (str []byte) {
str = make([]byte, d.stringSize())
digitsFrac := int(d.digitsFrac)
wordStartIdx, digitsInt := d.removeLeadingZeros()
if digitsInt+digitsFrac == 0 {
digitsInt = 1
wordStartIdx = 0
}
digitsIntLen := digitsInt
if digitsIntLen == 0 {
digitsIntLen = 1
}
digitsFracLen := digitsFrac
length := digitsIntLen + digitsFracLen
if d.negative {
length++
}
if digitsFrac > 0 {
length++
}
str = str[:length]
strIdx := 0
if d.negative {
str[strIdx] = '-'
strIdx++
}
var fill int
if digitsFrac > 0 {
fracIdx := strIdx + digitsIntLen
fill = digitsFracLen - digitsFrac
wordIdx := wordStartIdx + digitsToWords(digitsInt)
str[fracIdx] = '.'
fracIdx++
for ; digitsFrac > 0; digitsFrac -= digitsPerWord {
x := d.wordBuf[wordIdx]
wordIdx++
for i := min(digitsFrac, digitsPerWord); i > 0; i-- {
y := x / digMask
str[fracIdx] = byte(y) + '0'
fracIdx++
x -= y * digMask
x *= 10
}
}
for ; fill > 0; fill-- {
str[fracIdx] = '0'
fracIdx++
}
}
fill = digitsIntLen - digitsInt
if digitsInt == 0 {
fill-- /* symbol 0 before digital point */
}
for ; fill > 0; fill-- {
str[strIdx] = '0'
strIdx++
}
if digitsInt > 0 {
strIdx += digitsInt
wordIdx := wordStartIdx + digitsToWords(digitsInt)
for ; digitsInt > 0; digitsInt -= digitsPerWord {
wordIdx--
x := d.wordBuf[wordIdx]
for i := min(digitsInt, digitsPerWord); i > 0; i-- {
y := x / 10
strIdx--
str[strIdx] = '0' + byte(x-y*10)
x = y
}
}
} else {
str[strIdx] = '0'
}
return
}
// FromString parses decimal from string.
func (d *MyDecimal) FromString(str []byte) error {
for i := range str {
if !isSpace(str[i]) {
str = str[i:]
break
}
}
if len(str) == 0 {
*d = zeroMyDecimal
return ErrTruncatedWrongVal.GenWithStackByArgs("DECIMAL", str)
}
switch str[0] {
case '-':
d.negative = true
fallthrough
case '+':
str = str[1:]
}
var strIdx int
for strIdx < len(str) && isDigit(str[strIdx]) {
strIdx++
}
digitsInt := strIdx
var digitsFrac int
var endIdx int
if strIdx < len(str) && str[strIdx] == '.' {
endIdx = strIdx + 1
for endIdx < len(str) && isDigit(str[endIdx]) {
endIdx++
}
digitsFrac = endIdx - strIdx - 1
} else {
digitsFrac = 0
endIdx = strIdx
}
if digitsInt+digitsFrac == 0 {
*d = zeroMyDecimal
return ErrTruncatedWrongVal.GenWithStackByArgs("DECIMAL", str)
}
wordsInt := digitsToWords(digitsInt)
wordsFrac := digitsToWords(digitsFrac)
wordsInt, wordsFrac, err := fixWordCntError(wordsInt, wordsFrac)
if err != nil {
digitsFrac = wordsFrac * digitsPerWord
if err == ErrOverflow {
digitsInt = wordsInt * digitsPerWord
}
}
d.digitsInt = int8(digitsInt)
d.digitsFrac = int8(digitsFrac)
wordIdx := wordsInt
strIdxTmp := strIdx
var word int32
var innerIdx int
for digitsInt > 0 {
digitsInt--
strIdx--
word += int32(str[strIdx]-'0') * powers10[innerIdx]
innerIdx++
if innerIdx == digitsPerWord {
wordIdx--
d.wordBuf[wordIdx] = word
word = 0
innerIdx = 0
}
}
if innerIdx != 0 {
wordIdx--
d.wordBuf[wordIdx] = word
}
wordIdx = wordsInt
strIdx = strIdxTmp
word = 0
innerIdx = 0
for digitsFrac > 0 {
digitsFrac--
strIdx++
word = int32(str[strIdx]-'0') + word*10
innerIdx++
if innerIdx == digitsPerWord {
d.wordBuf[wordIdx] = word
wordIdx++
word = 0
innerIdx = 0
}
}
if innerIdx != 0 {
d.wordBuf[wordIdx] = word * powers10[digitsPerWord-innerIdx]
}
if endIdx+1 <= len(str) {
if str[endIdx] == 'e' || str[endIdx] == 'E' {
exponent, err1 := strToInt(string(str[endIdx+1:]))
if err1 != nil {
err = errors.Cause(err1)
if err != ErrTruncated {
*d = zeroMyDecimal
}
}
if exponent > math.MaxInt32/2 {
negative := d.negative
maxDecimal(wordBufLen*digitsPerWord, 0, d)
d.negative = negative
err = ErrOverflow
}
if exponent < math.MinInt32/2 && err != ErrOverflow {
*d = zeroMyDecimal
err = ErrTruncated
}
if err != ErrOverflow {
shiftErr := d.Shift(int(exponent))
if shiftErr != nil {
if shiftErr == ErrOverflow {
negative := d.negative
maxDecimal(wordBufLen*digitsPerWord, 0, d)
d.negative = negative
}
err = shiftErr
}
}
} else {
trimstr := strings.TrimSpace(string(str[endIdx:]))
if len(trimstr) != 0 {
err = ErrTruncated
}
}
}
allZero := true
for i := range wordBufLen {
if d.wordBuf[i] != 0 {
allZero = false
break
}
}
if allZero {
d.negative = false
}
d.resultFrac = d.digitsFrac
return err
}
// Shift shifts decimal digits in given number (with rounding if it need), shift > 0 means shift to left shift,
// shift < 0 means right shift. In fact it is multiplying on 10^shift.
//
// RETURN
//
// eDecOK OK
// eDecOverflow operation lead to overflow, number is untoched
// eDecTruncated number was rounded to fit into buffer
func (d *MyDecimal) Shift(shift int) error {
var err error
if shift == 0 {
return nil
}
var (
// digitBegin is index of first non zero digit (all indexes from 0).
digitBegin int
// digitEnd is index of position after last decimal digit.
digitEnd int
// point is index of digit position just after point.
point = digitsToWords(int(d.digitsInt)) * digitsPerWord
// new point position.
newPoint = point + shift
// number of digits in result.
digitsInt, digitsFrac int
newFront int
)
digitBegin, digitEnd = d.digitBounds()
if digitBegin == digitEnd {
*d = zeroMyDecimal
return nil
}
digitsInt = max(newPoint-digitBegin, 0)
digitsFrac = max(digitEnd-newPoint, 0)
wordsInt := digitsToWords(digitsInt)
wordsFrac := digitsToWords(digitsFrac)
newLen := wordsInt + wordsFrac
if newLen > wordBufLen {
lack := newLen - wordBufLen
if wordsFrac < lack {
return ErrOverflow
}
/* cut off fraction part to allow new number to fit in our buffer */
err = ErrTruncated
wordsFrac -= lack
diff := digitsFrac - wordsFrac*digitsPerWord
err1 := d.Round(d, digitEnd-point-diff, ModeHalfUp)
if err1 != nil {
return errors.Trace(err1)
}
digitEnd -= diff
digitsFrac = wordsFrac * digitsPerWord
if digitEnd <= digitBegin {
/*
We lost all digits (they will be shifted out of buffer), so we can
just return 0.
*/
*d = zeroMyDecimal
return ErrTruncated
}
}
if shift%digitsPerWord != 0 {
var lMiniShift, rMiniShift, miniShift int
var doLeft bool
/*
Calculate left/right shift to align decimal digits inside our bug
digits correctly.
*/
if shift > 0 {
lMiniShift = shift % digitsPerWord
rMiniShift = digitsPerWord - lMiniShift
doLeft = lMiniShift <= digitBegin
} else {
rMiniShift = (-shift) % digitsPerWord
lMiniShift = digitsPerWord - rMiniShift
doLeft = (digitsPerWord*wordBufLen - digitEnd) < rMiniShift
}
if doLeft {
d.doMiniLeftShift(lMiniShift, digitBegin, digitEnd)
miniShift = -lMiniShift
} else {
d.doMiniRightShift(rMiniShift, digitBegin, digitEnd)
miniShift = rMiniShift
}
newPoint += miniShift
/*
If number is shifted and correctly aligned in buffer we can finish.
*/
if shift+miniShift == 0 && (newPoint-digitsInt) < digitsPerWord {
d.digitsInt = int8(digitsInt)
d.digitsFrac = int8(digitsFrac)
return err /* already shifted as it should be */
}
digitBegin += miniShift
digitEnd += miniShift
}
/* if new 'decimal front' is in first digit, we do not need move digits */
newFront = newPoint - digitsInt
if newFront >= digitsPerWord || newFront < 0 {
/* need to move digits */
var wordShift int
if newFront > 0 {
/* move left */
wordShift = newFront / digitsPerWord
to := digitBegin/digitsPerWord - wordShift
barier := (digitEnd-1)/digitsPerWord - wordShift
for ; to <= barier; to++ {
d.wordBuf[to] = d.wordBuf[to+wordShift]
}
for barier += wordShift; to <= barier; to++ {
d.wordBuf[to] = 0
}
wordShift = -wordShift
} else {
/* move right */
wordShift = (1 - newFront) / digitsPerWord
to := (digitEnd-1)/digitsPerWord + wordShift
barier := digitBegin/digitsPerWord + wordShift
for ; to >= barier; to-- {
d.wordBuf[to] = d.wordBuf[to-wordShift]
}
for barier -= wordShift; to >= barier; to-- {
d.wordBuf[to] = 0
}
}
digitShift := wordShift * digitsPerWord
digitBegin += digitShift
digitEnd += digitShift
newPoint += digitShift
}
/*
If there are gaps then fill them with 0.
Only one of following 'for' loops will work because wordIdxBegin <= wordIdxEnd.
*/
wordIdxBegin := digitBegin / digitsPerWord
wordIdxEnd := (digitEnd - 1) / digitsPerWord
wordIdxNewPoint := 0
/* We don't want negative new_point below */
if newPoint != 0 {
wordIdxNewPoint = (newPoint - 1) / digitsPerWord
}
if wordIdxNewPoint > wordIdxEnd {
for wordIdxNewPoint > wordIdxEnd {
d.wordBuf[wordIdxNewPoint] = 0
wordIdxNewPoint--
}
} else {
for ; wordIdxNewPoint < wordIdxBegin; wordIdxNewPoint++ {
d.wordBuf[wordIdxNewPoint] = 0
}
}
d.digitsInt = int8(digitsInt)
d.digitsFrac = int8(digitsFrac)
return err
}
/*
digitBounds returns bounds of decimal digits in the number.
start - index (from 0 ) of first decimal digits.
end - index of position just after last decimal digit.
*/
func (d *MyDecimal) digitBounds() (start, end int) {
var i int
bufBeg := 0
bufLen := digitsToWords(int(d.digitsInt)) + digitsToWords(int(d.digitsFrac))
bufEnd := bufLen - 1
/* find non-zero digit from number beginning */
for bufBeg < bufLen && d.wordBuf[bufBeg] == 0 {
bufBeg++
}
if bufBeg >= bufLen {
return 0, 0
}
/* find non-zero decimal digit from number beginning */
if bufBeg == 0 && d.digitsInt > 0 {
i = (int(d.digitsInt) - 1) % digitsPerWord
start = digitsPerWord - i - 1
} else {
i = digitsPerWord - 1
start = bufBeg * digitsPerWord
}
if bufBeg < bufLen {
start += countLeadingZeroes(i, d.wordBuf[bufBeg])
}
/* find non-zero digit at the end */
for bufEnd > bufBeg && d.wordBuf[bufEnd] == 0 {
bufEnd--
}
/* find non-zero decimal digit from the end */
if bufEnd == bufLen-1 && d.digitsFrac > 0 {
i = (int(d.digitsFrac)-1)%digitsPerWord + 1
end = bufEnd*digitsPerWord + i
i = digitsPerWord - i + 1
} else {
end = (bufEnd + 1) * digitsPerWord
i = 1
}
end -= countTrailingZeroes(i, d.wordBuf[bufEnd])
return start, end
}
/*
doMiniLeftShift does left shift for alignment of data in buffer.
shift number of decimal digits on which it should be shifted
beg/end bounds of decimal digits (see digitsBounds())
NOTE
Result fitting in the buffer should be garanted.
'shift' have to be from 1 to digitsPerWord-1 (inclusive)
*/
func (d *MyDecimal) doMiniLeftShift(shift, beg, end int) {
bufFrom := beg / digitsPerWord
bufEnd := (end - 1) / digitsPerWord
cShift := digitsPerWord - shift
if beg%digitsPerWord < shift {
d.wordBuf[bufFrom-1] = d.wordBuf[bufFrom] / powers10[cShift]
}
for bufFrom < bufEnd {
d.wordBuf[bufFrom] = (d.wordBuf[bufFrom]%powers10[cShift])*powers10[shift] + d.wordBuf[bufFrom+1]/powers10[cShift]
bufFrom++
}
d.wordBuf[bufFrom] = (d.wordBuf[bufFrom] % powers10[cShift]) * powers10[shift]
}
/*
doMiniRightShift does right shift for alignment of data in buffer.
shift number of decimal digits on which it should be shifted
beg/end bounds of decimal digits (see digitsBounds())
NOTE
Result fitting in the buffer should be garanted.
'shift' have to be from 1 to digitsPerWord-1 (inclusive)
*/
func (d *MyDecimal) doMiniRightShift(shift, beg, end int) {
bufFrom := (end - 1) / digitsPerWord
bufEnd := beg / digitsPerWord
cShift := digitsPerWord - shift
if digitsPerWord-((end-1)%digitsPerWord+1) < shift {
d.wordBuf[bufFrom+1] = (d.wordBuf[bufFrom] % powers10[shift]) * powers10[cShift]
}
for bufFrom > bufEnd {
d.wordBuf[bufFrom] = d.wordBuf[bufFrom]/powers10[shift] + (d.wordBuf[bufFrom-1]%powers10[shift])*powers10[cShift]
bufFrom--
}
d.wordBuf[bufFrom] = d.wordBuf[bufFrom] / powers10[shift]
}
// Round rounds the decimal to "frac" digits.
//
// to - result buffer. d == to is allowed
// frac - to what position after fraction point to round. can be negative!
// roundMode - round to nearest even or truncate
// ModeHalfUp rounds normally.
// ModeTruncate just truncates the decimal.
//
// NOTES
//
// frac can be negative !
// one TRUNCATED error (line XXX below) isn't treated very logical :(
//
// RETURN VALUE
//
// nil/ErrTruncated/ErrOverflow
func (d *MyDecimal) Round(to *MyDecimal, frac int, roundMode RoundMode) (err error) {
// wordsFracTo is the number of fraction words in buffer.
wordsFracTo := (frac + 1) / digitsPerWord
if frac > 0 {
wordsFracTo = digitsToWords(frac)
}
wordsFrac := digitsToWords(int(d.digitsFrac))
wordsInt := digitsToWords(int(d.digitsInt))
roundDigit := int32(roundMode)
/* TODO - fix this code as it won't work for CEILING mode */
if wordsInt+wordsFracTo > wordBufLen {
wordsFracTo = wordBufLen - wordsInt
frac = wordsFracTo * digitsPerWord
err = ErrTruncated
}
if int(d.digitsInt)+frac < 0 {
*to = zeroMyDecimal
return nil
}
if to != d {
copy(to.wordBuf[:], d.wordBuf[:])
to.negative = d.negative
to.digitsInt = int8(min(wordsInt, wordBufLen) * digitsPerWord)
}
if wordsFracTo > wordsFrac {
idx := wordsInt + wordsFrac
for wordsFracTo > wordsFrac {
wordsFracTo--
to.wordBuf[idx] = 0
idx++
}
to.digitsFrac = int8(frac)
to.resultFrac = to.digitsFrac
return
}
if frac >= int(d.digitsFrac) {
to.digitsFrac = int8(frac)
to.resultFrac = to.digitsFrac
return
}
// Do increment.
toIdx := wordsInt + wordsFracTo - 1
if frac == wordsFracTo*digitsPerWord {
doInc := false
switch roundMode {
// Notice: No support for ceiling mode now.
case ModeCeiling:
// If any word after scale is not zero, do increment.
// e.g ceiling 3.0001 to scale 1, gets 3.1
idx := toIdx + (wordsFrac - wordsFracTo)
for idx > toIdx {
if d.wordBuf[idx] != 0 {
doInc = true
break
}
idx--
}
case ModeHalfUp:
digAfterScale := d.wordBuf[toIdx+1] / digMask // the first digit after scale.
// If first digit after scale is equal to or greater than 5, do increment.
doInc = digAfterScale >= 5
case ModeTruncate:
// Never round, just truncate.
doInc = false
}
if doInc {
if toIdx >= 0 {
to.wordBuf[toIdx]++
} else {
toIdx++
to.wordBuf[toIdx] = wordBase
}
} else if wordsInt+wordsFracTo == 0 {
*to = zeroMyDecimal
return nil
}
} else {
/* TODO - fix this code as it won't work for CEILING mode */
pos := wordsFracTo*digitsPerWord - frac - 1
shiftedNumber := to.wordBuf[toIdx] / powers10[pos]
digAfterScale := shiftedNumber % 10
if digAfterScale > roundDigit || (roundDigit == 5 && digAfterScale == 5) {
shiftedNumber += 10
}
to.wordBuf[toIdx] = powers10[pos] * (shiftedNumber - digAfterScale)
}
/*
In case we're rounding e.g. 1.5e9 to 2.0e9, the decimal words inside
the buffer are as follows.
Before <1, 5e8>
After <2, 5e8>
Hence we need to set the 2nd field to 0.
The same holds if we round 1.5e-9 to 2e-9.
*/
if wordsFracTo < wordsFrac {
idx := wordsInt + wordsFracTo
if frac == 0 && wordsInt == 0 {
idx = 1
}
for idx < wordBufLen {
to.wordBuf[idx] = 0
idx++
}
}
// Handle carry.
var carry int32
if to.wordBuf[toIdx] >= wordBase {
carry = 1
to.wordBuf[toIdx] -= wordBase
for carry == 1 && toIdx > 0 {
toIdx--
to.wordBuf[toIdx], carry = add(to.wordBuf[toIdx], 0, carry)
}
if carry > 0 {
if wordsInt+wordsFracTo >= wordBufLen {
wordsFracTo--
frac = wordsFracTo * digitsPerWord
err = ErrTruncated
}
for toIdx = wordsInt + max(wordsFracTo, 0); toIdx > 0; toIdx-- {
if toIdx < wordBufLen {
to.wordBuf[toIdx] = to.wordBuf[toIdx-1]
} else {
err = ErrOverflow
}
}
to.wordBuf[toIdx] = 1
/* We cannot have more than 9 * 9 = 81 digits. */
if int(to.digitsInt) < digitsPerWord*wordBufLen {
to.digitsInt++
} else {
err = ErrOverflow
}
}
} else {
for {
if to.wordBuf[toIdx] != 0 {
break
}
if toIdx == 0 {
/* making 'zero' with the proper scale */
idx := wordsFracTo + 1
to.digitsInt = 1
to.digitsFrac = int8(max(frac, 0))
to.negative = false
for toIdx < idx {
to.wordBuf[toIdx] = 0
toIdx++
}
to.resultFrac = to.digitsFrac
return nil
}
toIdx--
}
}
/* Here we check 999.9 -> 1000 case when we need to increase intDigCnt */
firstDig := mod9[to.digitsInt]
if firstDig > 0 && to.wordBuf[toIdx] >= powers10[firstDig] {
to.digitsInt++
}
if frac < 0 {
frac = 0
}
to.digitsFrac = int8(frac)
to.resultFrac = to.digitsFrac
return
}
// FromInt sets the decimal value from int64.
func (d *MyDecimal) FromInt(val int64) *MyDecimal {
var uVal uint64
if val < 0 {
d.negative = true
uVal = uint64(-val)
} else {
uVal = uint64(val)
}
return d.FromUint(uVal)
}
// FromUint sets the decimal value from uint64.
func (d *MyDecimal) FromUint(val uint64) *MyDecimal {
x := val
wordIdx := 1
for x >= wordBase {
wordIdx++
x /= wordBase
}
d.digitsFrac = 0
d.digitsInt = int8(wordIdx * digitsPerWord)
x = val
for wordIdx > 0 {
wordIdx--
y := x / wordBase
d.wordBuf[wordIdx] = int32(x - y*wordBase)
x = y
}
return d
}
// ToInt returns int part of the decimal, returns the result and errcode.
func (d *MyDecimal) ToInt() (int64, error) {
var x int64
wordIdx := 0
for i := d.digitsInt; i > 0; i -= digitsPerWord {
y := x
/*
Attention: trick!
we're calculating -|from| instead of |from| here
because |LONGLONG_MIN| > LONGLONG_MAX
so we can convert -9223372036854775808 correctly
*/
x = x*wordBase - int64(d.wordBuf[wordIdx])
wordIdx++
if y < math.MinInt64/wordBase || x > y {
/*
the decimal is bigger than any possible integer
return border integer depending on the sign
*/
if d.negative {
return math.MinInt64, ErrOverflow
}
return math.MaxInt64, ErrOverflow
}
}
/* boundary case: 9223372036854775808 */
if !d.negative && x == math.MinInt64 {
return math.MaxInt64, ErrOverflow
}
if !d.negative {
x = -x
}
for i := d.digitsFrac; i > 0; i -= digitsPerWord {
if d.wordBuf[wordIdx] != 0 {
return x, ErrTruncated
}
wordIdx++
}
return x, nil
}
// ToUint returns int part of the decimal, returns the result and errcode.
func (d *MyDecimal) ToUint() (uint64, error) {
if d.negative {
return 0, ErrOverflow
}
var x uint64
wordIdx := 0
for i := d.digitsInt; i > 0; i -= digitsPerWord {
y := x
x = x*wordBase + uint64(d.wordBuf[wordIdx])
wordIdx++
if y > math.MaxUint64/wordBase || x < y {
return math.MaxUint64, ErrOverflow
}
}
for i := d.digitsFrac; i > 0; i -= digitsPerWord {
if d.wordBuf[wordIdx] != 0 {
return x, ErrTruncated
}
wordIdx++
}
return x, nil
}
// FromFloat64 creates a decimal from float64 value.
func (d *MyDecimal) FromFloat64(f float64) error {
s := strconv.FormatFloat(f, 'g', -1, 64)
return d.FromString([]byte(s))
}
// ToFloat64 converts decimal to float64 value.
func (d *MyDecimal) ToFloat64() (f float64, err error) {
digitsInt := int(d.digitsInt)
digitsFrac := int(d.digitsFrac)
// https://en.wikipedia.org/wiki/Double-precision_floating-point_format#IEEE_754_double-precision_binary_floating-point_format:_binary64
// "The 53-bit significand precision gives from 15 to 17 significant decimal digits precision (2−53 ≈ 1.11 × 10−16).
// If a decimal string with at most 15 significant digits is converted to IEEE 754 double-precision representation,
// and then converted back to a decimal string with the same number of digits, the final result should match the original string."
// The new method is about 10.5X faster than the old one according to the benchmark in types/mydecimal_benchmark_test.go.
// The initial threshold here is 15, we adjusted it to 12 for compatibility with previous.
// We did a full test of 12 significant digits to make sure it's correct and behaves as before.
if digitsInt+digitsFrac > 12 {
f, err = strconv.ParseFloat(d.String(), 64)
if err != nil {
err = ErrOverflow
}
return
}
wordsInt := (digitsInt-1)/digitsPerWord + 1
wordIdx := 0
for i := 0; i < digitsInt; i += digitsPerWord {
x := d.wordBuf[wordIdx]
wordIdx++
// Equivalent to f += float64(x) * math.Pow10((wordsInt-wordIdx)*digitsPerWord)
f += float64(x) * pow10off81[(wordsInt-wordIdx)*digitsPerWord+pow10off]
}
fracStart := wordIdx
for i := 0; i < digitsFrac; i += digitsPerWord {
x := d.wordBuf[wordIdx]
wordIdx++
// Equivalent to f += float64(x) * math.Pow10(-digitsPerWord*(wordIdx-fracStart))
f += float64(x) * pow10off81[-digitsPerWord*(wordIdx-fracStart)+pow10off]
}
// Equivalent to unit := math.Pow10(int(d.resultFrac))
unit := pow10off81[int(d.resultFrac)+pow10off]
f = math.Round(f*unit) / unit
if d.negative {
f = -f
}
return
}
/*
ToBin converts decimal to its binary fixed-length representation
two representations of the same length can be compared with memcmp
with the correct -1/0/+1 result
PARAMS
precision/frac - if precision is 0, internal value of the decimal will be used,
then the encoded value is not memory comparable.
NOTE
the buffer is assumed to be of the size DecimalBinSize(precision, frac)
RETURN VALUE
bin - binary value
errCode - eDecOK/eDecTruncate/eDecOverflow
DESCRIPTION
for storage decimal numbers are converted to the "binary" format.
This format has the following properties:
1. length of the binary representation depends on the {precision, frac}
as provided by the caller and NOT on the digitsInt/digitsFrac of the decimal to
convert.
2. binary representations of the same {precision, frac} can be compared
with memcmp - with the same result as DecimalCompare() of the original
decimals (not taking into account possible precision loss during
conversion).
This binary format is as follows:
1. First the number is converted to have a requested precision and frac.
2. Every full digitsPerWord digits of digitsInt part are stored in 4 bytes
as is
3. The first digitsInt % digitesPerWord digits are stored in the reduced
number of bytes (enough bytes to store this number of digits -
see dig2bytes)
4. same for frac - full word are stored as is,
the last frac % digitsPerWord digits - in the reduced number of bytes.
5. If the number is negative - every byte is inversed.
5. The very first bit of the resulting byte array is inverted (because
memcmp compares unsigned bytes, see property 2 above)
Example:
1234567890.1234
internally is represented as 3 words
1 234567890 123400000
(assuming we want a binary representation with precision=14, frac=4)
in hex it's
00-00-00-01 0D-FB-38-D2 07-5A-EF-40
now, middle word is full - it stores 9 decimal digits. It goes
into binary representation as is:
........... 0D-FB-38-D2 ............
First word has only one decimal digit. We can store one digit in
one byte, no need to waste four:
01 0D-FB-38-D2 ............
now, last word. It's 123400000. We can store 1234 in two bytes:
01 0D-FB-38-D2 04-D2
So, we've packed 12 bytes number in 7 bytes.
And now we invert the highest bit to get the final result:
81 0D FB 38 D2 04 D2
And for -1234567890.1234 it would be
7E F2 04 C7 2D FB 2D
*/
func (d *MyDecimal) ToBin(precision, frac int) ([]byte, error) {
return d.WriteBin(precision, frac, []byte{})
}
// WriteBin encode and write the binary encoded to target buffer
func (d *MyDecimal) WriteBin(precision, frac int, buf []byte) ([]byte, error) {
if precision > digitsPerWord*maxWordBufLen || precision < 0 || frac > mysql.MaxDecimalScale || frac < 0 {
return buf, ErrBadNumber
}
var err error
var mask int32
if d.negative {
mask = -1
}
digitsInt := precision - frac
wordsInt := digitsInt / digitsPerWord
leadingDigits := digitsInt - wordsInt*digitsPerWord
wordsFrac := frac / digitsPerWord
trailingDigits := frac - wordsFrac*digitsPerWord
wordsFracFrom := int(d.digitsFrac) / digitsPerWord
trailingDigitsFrom := int(d.digitsFrac) - wordsFracFrom*digitsPerWord
intSize := wordsInt*wordSize + dig2bytes[leadingDigits]
fracSize := wordsFrac*wordSize + dig2bytes[trailingDigits]
fracSizeFrom := wordsFracFrom*wordSize + dig2bytes[trailingDigitsFrom]
originIntSize := intSize
originFracSize := fracSize
bufLen := len(buf)
if bufLen+intSize+fracSize <= cap(buf) {
buf = buf[:bufLen+intSize+fracSize]
} else {
buf = append(buf, make([]byte, intSize+fracSize)...)
}
bin := buf[bufLen:]
binIdx := 0
wordIdxFrom, digitsIntFrom := d.removeLeadingZeros()
if digitsIntFrom+fracSizeFrom == 0 {
mask = 0
digitsInt = 1
}
wordsIntFrom := digitsIntFrom / digitsPerWord
leadingDigitsFrom := digitsIntFrom - wordsIntFrom*digitsPerWord
iSizeFrom := wordsIntFrom*wordSize + dig2bytes[leadingDigitsFrom]
if digitsInt < digitsIntFrom {
wordIdxFrom += wordsIntFrom - wordsInt
if leadingDigitsFrom > 0 {
wordIdxFrom++
}
if leadingDigits > 0 {
wordIdxFrom--
}
wordsIntFrom = wordsInt
leadingDigitsFrom = leadingDigits
err = ErrOverflow
} else if intSize > iSizeFrom {
for intSize > iSizeFrom {
intSize--
bin[binIdx] = byte(mask)
binIdx++
}
}
if fracSize < fracSizeFrom ||
(fracSize == fracSizeFrom && (trailingDigits <= trailingDigitsFrom || wordsFrac <= wordsFracFrom)) {
if fracSize < fracSizeFrom || (fracSize == fracSizeFrom && trailingDigits < trailingDigitsFrom) || (fracSize == fracSizeFrom && wordsFrac < wordsFracFrom) {
err = ErrTruncated
}
wordsFracFrom = wordsFrac
trailingDigitsFrom = trailingDigits
} else if fracSize > fracSizeFrom && trailingDigitsFrom > 0 {
if wordsFrac == wordsFracFrom {
trailingDigitsFrom = trailingDigits
fracSize = fracSizeFrom
} else {
wordsFracFrom++
trailingDigitsFrom = 0
}
}
// xIntFrom part
if leadingDigitsFrom > 0 {
i := dig2bytes[leadingDigitsFrom]
x := (d.wordBuf[wordIdxFrom] % powers10[leadingDigitsFrom]) ^ mask
wordIdxFrom++
writeWord(bin[binIdx:], x, i)
binIdx += i
}
// wordsInt + wordsFrac part.
for stop := wordIdxFrom + wordsIntFrom + wordsFracFrom; wordIdxFrom < stop; binIdx += wordSize {
x := d.wordBuf[wordIdxFrom] ^ mask
wordIdxFrom++
writeWord(bin[binIdx:], x, 4)
}
// xFracFrom part
if trailingDigitsFrom > 0 {
var x int32
i := dig2bytes[trailingDigitsFrom]
lim := trailingDigits
if wordsFracFrom < wordsFrac {
lim = digitsPerWord
}
for trailingDigitsFrom < lim && dig2bytes[trailingDigitsFrom] == i {
trailingDigitsFrom++
}
x = (d.wordBuf[wordIdxFrom] / powers10[digitsPerWord-trailingDigitsFrom]) ^ mask
writeWord(bin[binIdx:], x, i)
binIdx += i
}
if fracSize > fracSizeFrom {
binIdxEnd := originIntSize + originFracSize
for fracSize > fracSizeFrom && binIdx < binIdxEnd {
fracSize--
bin[binIdx] = byte(mask)
binIdx++
}
}
bin[0] ^= 0x80
return buf, err
}
// ToHashKey removes the leading and trailing zeros and generates a hash key.
// Two Decimals dec0 and dec1 with different fraction will generate the same hash keys if dec0.Compare(dec1) == 0.
func (d *MyDecimal) ToHashKey() ([]byte, error) {
_, digitsInt := d.removeLeadingZeros()
_, digitsFrac := d.removeTrailingZeros()
prec := digitsInt + digitsFrac
if prec == 0 { // zeroDecimal
prec = 1
}
buf, err := d.ToBin(prec, digitsFrac)
if err == ErrTruncated {
// This err is caused by shorter digitsFrac;
// After removing the trailing zeros from a Decimal,
// so digitsFrac may be less than the real digitsFrac of the Decimal,
// thus ErrTruncated may be raised, we can ignore it here.
err = nil
}
buf = append(buf, byte(digitsFrac))
return buf, err
}
// PrecisionAndFrac returns the internal precision and frac number.
func (d *MyDecimal) PrecisionAndFrac() (precision, frac int) {
frac = int(d.digitsFrac)
_, digitsInt := d.removeLeadingZeros()
precision = digitsInt + frac
if precision == 0 {
precision = 1
}
return
}
// IsZero checks whether it's a zero decimal.
func (d *MyDecimal) IsZero() bool {
isZero := true
for _, val := range d.wordBuf {
if val != 0 {
isZero = false
break
}
}
return isZero
}
// FromBin Restores decimal from its binary fixed-length representation.
func (d *MyDecimal) FromBin(bin []byte, precision, frac int) (binSize int, err error) {
if len(bin) == 0 {
*d = zeroMyDecimal
return 0, ErrBadNumber
}
digitsInt := precision - frac
wordsInt := digitsInt / digitsPerWord
leadingDigits := digitsInt - wordsInt*digitsPerWord
wordsFrac := frac / digitsPerWord
trailingDigits := frac - wordsFrac*digitsPerWord
wordsIntTo := wordsInt
if leadingDigits > 0 {
wordsIntTo++
}
wordsFracTo := wordsFrac
if trailingDigits > 0 {
wordsFracTo++
}
binIdx := 0
mask := int32(-1)
if bin[binIdx]&0x80 > 0 {
mask = 0
}
binSize, err = DecimalBinSize(precision, frac)
if err != nil {
return 0, err
}
if binSize < 0 || binSize > 40 {
return 0, ErrBadNumber
}
dCopy := make([]byte, 40)
dCopy = dCopy[:binSize]
copy(dCopy, bin)
dCopy[0] ^= 0x80
bin = dCopy
oldWordsIntTo := wordsIntTo
wordsIntTo, wordsFracTo, err = fixWordCntError(wordsIntTo, wordsFracTo)
if err != nil {
if wordsIntTo < oldWordsIntTo {
binIdx += dig2bytes[leadingDigits] + (wordsInt-wordsIntTo)*wordSize
} else {
trailingDigits = 0
wordsFrac = wordsFracTo
}
}
d.negative = mask != 0
d.digitsInt = int8(wordsInt*digitsPerWord + leadingDigits)
d.digitsFrac = int8(wordsFrac*digitsPerWord + trailingDigits)
wordIdx := 0
if leadingDigits > 0 {
i := dig2bytes[leadingDigits]
x := readWord(bin[binIdx:], i)
binIdx += i
d.wordBuf[wordIdx] = x ^ mask
if uint64(d.wordBuf[wordIdx]) >= uint64(powers10[leadingDigits+1]) {
*d = zeroMyDecimal
return binSize, ErrBadNumber
}
if wordIdx > 0 || d.wordBuf[wordIdx] != 0 {
wordIdx++
} else {
d.digitsInt -= int8(leadingDigits)
}
}
for stop := binIdx + wordsInt*wordSize; binIdx < stop; binIdx += wordSize {
d.wordBuf[wordIdx] = readWord(bin[binIdx:], 4) ^ mask
if uint32(d.wordBuf[wordIdx]) > wordMax {
*d = zeroMyDecimal
return binSize, ErrBadNumber
}
if wordIdx > 0 || d.wordBuf[wordIdx] != 0 {
wordIdx++
} else {
d.digitsInt -= digitsPerWord
}
}
for stop := binIdx + wordsFrac*wordSize; binIdx < stop; binIdx += wordSize {
d.wordBuf[wordIdx] = readWord(bin[binIdx:], 4) ^ mask
if uint32(d.wordBuf[wordIdx]) > wordMax {
*d = zeroMyDecimal
return binSize, ErrBadNumber
}
wordIdx++
}
if trailingDigits > 0 {
i := dig2bytes[trailingDigits]
x := readWord(bin[binIdx:], i)
d.wordBuf[wordIdx] = (x ^ mask) * powers10[digitsPerWord-trailingDigits]
if uint32(d.wordBuf[wordIdx]) > wordMax {
*d = zeroMyDecimal
return binSize, ErrBadNumber
}
}
if d.digitsInt == 0 && d.digitsFrac == 0 {
*d = zeroMyDecimal
}
d.resultFrac = int8(frac)
return binSize, err
}
// DecimalBinSize returns the size of array to hold a binary representation of a decimal.
func DecimalBinSize(precision, frac int) (int, error) {
digitsInt := precision - frac
wordsInt := digitsInt / digitsPerWord
wordsFrac := frac / digitsPerWord
xInt := digitsInt - wordsInt*digitsPerWord
xFrac := frac - wordsFrac*digitsPerWord
if xInt < 0 || xInt >= len(dig2bytes) || xFrac < 0 || xFrac >= len(dig2bytes) {
return 0, ErrBadNumber
}
return wordsInt*wordSize + dig2bytes[xInt] + wordsFrac*wordSize + dig2bytes[xFrac], nil
}
func readWord(b []byte, size int) int32 {
var x int32
switch size {
case 1:
x = int32(int8(b[0]))
case 2:
x = int32(int8(b[0]))<<8 + int32(b[1])
case 3:
if b[0]&128 > 0 {
x = int32(uint32(255)<<24 | uint32(b[0])<<16 | uint32(b[1])<<8 | uint32(b[2]))
} else {
x = int32(uint32(b[0])<<16 | uint32(b[1])<<8 | uint32(b[2]))
}
case 4:
x = int32(b[3]) + int32(b[2])<<8 + int32(b[1])<<16 + int32(int8(b[0]))<<24
}
return x
}
func writeWord(b []byte, word int32, size int) {
v := uint32(word)
switch size {
case 1:
b[0] = byte(word)
case 2:
b[0] = byte(v >> 8)
b[1] = byte(v)
case 3:
b[0] = byte(v >> 16)
b[1] = byte(v >> 8)
b[2] = byte(v)
case 4:
b[0] = byte(v >> 24)
b[1] = byte(v >> 16)
b[2] = byte(v >> 8)
b[3] = byte(v)
}
}
// Compare compares one decimal to another, returns -1/0/1.
func (d *MyDecimal) Compare(to *MyDecimal) int {
if d.negative == to.negative {
cmp, err := doSub(d, to, nil)
terror.Log(errors.Trace(err))
return cmp
}
if d.negative {
return -1
}
return 1
}
// None of ToBin, ToFloat64, or ToString can encode MyDecimal without loss.
// So we still need a MarshalJSON/UnmarshalJSON function.
type jsonMyDecimal struct {
DigitsInt int8
DigitsFrac int8
ResultFrac int8
Negative bool
WordBuf [maxWordBufLen]int32
}
// MarshalJSON implements Marshaler.MarshalJSON interface.
func (d *MyDecimal) MarshalJSON() ([]byte, error) {
var r jsonMyDecimal
r.DigitsInt = d.digitsInt
r.DigitsFrac = d.digitsFrac
r.ResultFrac = d.resultFrac
r.Negative = d.negative
r.WordBuf = d.wordBuf
return json.Marshal(r)
}
// UnmarshalJSON implements Unmarshaler.UnmarshalJSON interface.
func (d *MyDecimal) UnmarshalJSON(data []byte) error {
var r jsonMyDecimal
err := json.Unmarshal(data, &r)
if err == nil {
d.digitsInt = r.DigitsInt
d.digitsFrac = r.DigitsFrac
d.resultFrac = r.ResultFrac
d.negative = r.Negative
d.wordBuf = r.WordBuf
}
return err
}
// DecimalNeg reverses decimal's sign.
func DecimalNeg(from *MyDecimal) *MyDecimal {
to := *from
if from.IsZero() {
return &to
}
to.negative = !from.negative
return &to
}
// DecimalAdd adds two decimals, sets the result to 'to'.
// Note: DO NOT use `from1` or `from2` as `to` since the metadata
// of `to` may be changed during evaluating.
func DecimalAdd(from1, from2, to *MyDecimal) error {
from1, from2, to = validateArgs(from1, from2, to)
to.resultFrac = max(from1.resultFrac, from2.resultFrac)
if from1.negative == from2.negative {
return doAdd(from1, from2, to)
}
_, err := doSub(from1, from2, to)
return err
}
// DecimalSub subs one decimal from another, sets the result to 'to'.
func DecimalSub(from1, from2, to *MyDecimal) error {
from1, from2, to = validateArgs(from1, from2, to)
to.resultFrac = max(from1.resultFrac, from2.resultFrac)
if from1.negative == from2.negative {
_, err := doSub(from1, from2, to)
return err
}
return doAdd(from1, from2, to)
}
func validateArgs(f1, f2, to *MyDecimal) (*MyDecimal, *MyDecimal, *MyDecimal) {
if to == nil {
return f1, f2, to
}
if f1 == to {
tmp := *f1
f1 = &tmp
}
if f2 == to {
tmp := *f2
f2 = &tmp
}
to.digitsFrac = 0
to.digitsInt = 0
to.resultFrac = 0
to.negative = false
for i := range to.wordBuf {
to.wordBuf[i] = 0
}
return f1, f2, to
}
func doSub(from1, from2, to *MyDecimal) (cmp int, err error) {
var (
wordsInt1 = digitsToWords(int(from1.digitsInt))
wordsFrac1 = digitsToWords(int(from1.digitsFrac))
wordsInt2 = digitsToWords(int(from2.digitsInt))
wordsFrac2 = digitsToWords(int(from2.digitsFrac))
wordsFracTo = max(wordsFrac1, wordsFrac2)
start1 = 0
stop1 = wordsInt1
idx1 = 0
start2 = 0
stop2 = wordsInt2
idx2 = 0
)
if from1.wordBuf[idx1] == 0 {
for idx1 < stop1 && from1.wordBuf[idx1] == 0 {
idx1++
}
start1 = idx1
wordsInt1 = stop1 - idx1
}
if from2.wordBuf[idx2] == 0 {
for idx2 < stop2 && from2.wordBuf[idx2] == 0 {
idx2++
}
start2 = idx2
wordsInt2 = stop2 - idx2
}
var carry int32
if wordsInt2 > wordsInt1 {
carry = 1
} else if wordsInt2 == wordsInt1 {
end1 := stop1 + wordsFrac1 - 1
end2 := stop2 + wordsFrac2 - 1
for idx1 <= end1 && from1.wordBuf[end1] == 0 {
end1--
}
for idx2 <= end2 && from2.wordBuf[end2] == 0 {
end2--
}
wordsFrac1 = end1 - stop1 + 1
wordsFrac2 = end2 - stop2 + 1
for idx1 <= end1 && idx2 <= end2 && from1.wordBuf[idx1] == from2.wordBuf[idx2] {
idx1++
idx2++
}
if idx1 <= end1 {
if idx2 <= end2 && from2.wordBuf[idx2] > from1.wordBuf[idx1] {
carry = 1
} else {
carry = 0
}
} else {
if idx2 > end2 {
if to == nil {
return 0, nil
}
*to = zeroMyDecimalWithFrac(to.resultFrac)
return 0, nil
}
carry = 1
}
}
if to == nil {
if carry > 0 == from1.negative { // from2 is negative too.
return 1, nil
}
return -1, nil
}
to.negative = from1.negative
/* ensure that always idx1 > idx2 (and wordsInt1 >= wordsInt2) */
if carry > 0 {
from1, from2 = from2, from1
start1, start2 = start2, start1
wordsInt1, wordsInt2 = wordsInt2, wordsInt1
wordsFrac1, wordsFrac2 = wordsFrac2, wordsFrac1
to.negative = !to.negative
}
wordsInt1, wordsFracTo, err = fixWordCntError(wordsInt1, wordsFracTo)
idxTo := wordsInt1 + wordsFracTo
to.digitsFrac = max(from1.digitsFrac, from2.digitsFrac)
to.digitsInt = int8(wordsInt1 * digitsPerWord)
if err != nil {
if to.digitsFrac > int8(wordsFracTo*digitsPerWord) {
to.digitsFrac = int8(wordsFracTo * digitsPerWord)
}
if wordsFrac1 > wordsFracTo {
wordsFrac1 = wordsFracTo
}
if wordsFrac2 > wordsFracTo {
wordsFrac2 = wordsFracTo
}
if wordsInt2 > wordsInt1 {
wordsInt2 = wordsInt1
}
}
carry = 0
/* part 1 - max(frac) ... min (frac) */
if wordsFrac1 > wordsFrac2 {
idx1 = start1 + wordsInt1 + wordsFrac1
stop1 = start1 + wordsInt1 + wordsFrac2
idx2 = start2 + wordsInt2 + wordsFrac2
for wordsFracTo > wordsFrac1 {
wordsFracTo--
idxTo--
to.wordBuf[idxTo] = 0
}
for idx1 > stop1 {
idxTo--
idx1--
to.wordBuf[idxTo] = from1.wordBuf[idx1]
}
} else {
idx1 = start1 + wordsInt1 + wordsFrac1
idx2 = start2 + wordsInt2 + wordsFrac2
stop2 = start2 + wordsInt2 + wordsFrac1
for wordsFracTo > wordsFrac2 {
wordsFracTo--
idxTo--
to.wordBuf[idxTo] = 0
}
for idx2 > stop2 {
idxTo--
idx2--
to.wordBuf[idxTo], carry = sub(0, from2.wordBuf[idx2], carry)
}
}
/* part 2 - min(frac) ... wordsInt2 */
for idx2 > start2 {
idxTo--
idx1--
idx2--
to.wordBuf[idxTo], carry = sub(from1.wordBuf[idx1], from2.wordBuf[idx2], carry)
}
/* part 3 - wordsInt2 ... wordsInt1 */
for carry > 0 && idx1 > start1 {
idxTo--
idx1--
to.wordBuf[idxTo], carry = sub(from1.wordBuf[idx1], 0, carry)
}
for idx1 > start1 {
idxTo--
idx1--
to.wordBuf[idxTo] = from1.wordBuf[idx1]
}
for idxTo > 0 {
idxTo--
to.wordBuf[idxTo] = 0
}
return 0, err
}
func doAdd(from1, from2, to *MyDecimal) error {
var (
err error
wordsInt1 = digitsToWords(int(from1.digitsInt))
wordsFrac1 = digitsToWords(int(from1.digitsFrac))
wordsInt2 = digitsToWords(int(from2.digitsInt))
wordsFrac2 = digitsToWords(int(from2.digitsFrac))
wordsIntTo = max(wordsInt1, wordsInt2)
wordsFracTo = max(wordsFrac1, wordsFrac2)
)
var x int32
if wordsInt1 > wordsInt2 {
x = from1.wordBuf[0]
} else if wordsInt2 > wordsInt1 {
x = from2.wordBuf[0]
} else {
x = from1.wordBuf[0] + from2.wordBuf[0]
}
if x > wordMax-1 { /* yes, there is */
wordsIntTo++
to.wordBuf[0] = 0 /* safety */
}
wordsIntTo, wordsFracTo, err = fixWordCntError(wordsIntTo, wordsFracTo)
if err == ErrOverflow {
maxDecimal(wordBufLen*digitsPerWord, 0, to)
return err
}
idxTo := wordsIntTo + wordsFracTo
to.negative = from1.negative
to.digitsInt = int8(wordsIntTo * digitsPerWord)
to.digitsFrac = max(from1.digitsFrac, from2.digitsFrac)
if err != nil {
if to.digitsFrac > int8(wordsFracTo*digitsPerWord) {
to.digitsFrac = int8(wordsFracTo * digitsPerWord)
}
if wordsFrac1 > wordsFracTo {
wordsFrac1 = wordsFracTo
}
if wordsFrac2 > wordsFracTo {
wordsFrac2 = wordsFracTo
}
if wordsInt1 > wordsIntTo {
wordsInt1 = wordsIntTo
}
if wordsInt2 > wordsIntTo {
wordsInt2 = wordsIntTo
}
}
var dec1, dec2 = from1, from2
var idx1, idx2, stop, stop2 int
/* part 1 - max(frac) ... min (frac) */
if wordsFrac1 > wordsFrac2 {
idx1 = wordsInt1 + wordsFrac1
stop = wordsInt1 + wordsFrac2
idx2 = wordsInt2 + wordsFrac2
if wordsInt1 > wordsInt2 {
stop2 = wordsInt1 - wordsInt2
}
} else {
idx1 = wordsInt2 + wordsFrac2
stop = wordsInt2 + wordsFrac1
idx2 = wordsInt1 + wordsFrac1
if wordsInt2 > wordsInt1 {
stop2 = wordsInt2 - wordsInt1
}
dec1, dec2 = from2, from1
}
for idx1 > stop {
idxTo--
idx1--
to.wordBuf[idxTo] = dec1.wordBuf[idx1]
}
/* part 2 - min(frac) ... min(digitsInt) */
carry := int32(0)
for idx1 > stop2 {
idx1--
idx2--
idxTo--
to.wordBuf[idxTo], carry = add(dec1.wordBuf[idx1], dec2.wordBuf[idx2], carry)
}
/* part 3 - min(digitsInt) ... max(digitsInt) */
stop = 0
if wordsInt1 > wordsInt2 {
idx1 = wordsInt1 - wordsInt2
dec1 = from1
} else {
idx1 = wordsInt2 - wordsInt1
dec1 = from2
}
for idx1 > stop {
idxTo--
idx1--
to.wordBuf[idxTo], carry = add(dec1.wordBuf[idx1], 0, carry)
}
if carry > 0 {
idxTo--
to.wordBuf[idxTo] = 1
}
return err
}
func maxDecimal(precision, frac int, to *MyDecimal) {
digitsInt := precision - frac
to.negative = false
to.digitsInt = int8(digitsInt)
idx := 0
if digitsInt > 0 {
firstWordDigits := digitsInt % digitsPerWord
if firstWordDigits > 0 {
to.wordBuf[idx] = powers10[firstWordDigits] - 1 /* get 9 99 999 ... */
idx++
}
for digitsInt /= digitsPerWord; digitsInt > 0; digitsInt-- {
to.wordBuf[idx] = wordMax
idx++
}
}
to.digitsFrac = int8(frac)
if frac > 0 {
lastDigits := frac % digitsPerWord
for frac /= digitsPerWord; frac > 0; frac-- {
to.wordBuf[idx] = wordMax
idx++
}
if lastDigits > 0 {
to.wordBuf[idx] = fracMax[lastDigits-1]
}
}
}
/*
DecimalMul multiplies two decimals.
from1, from2 - factors
to - product
RETURN VALUE
E_DEC_OK/E_DEC_TRUNCATED/E_DEC_OVERFLOW;
NOTES
in this implementation, with wordSize=4 we have digitsPerWord=9,
and 63-digit number will take only 7 words (basically a 7-digit
"base 999999999" number). Thus there's no need in fast multiplication
algorithms, 7-digit numbers can be multiplied with a naive O(n*n)
method.
XXX if this library is to be used with huge numbers of thousands of
digits, fast multiplication must be implemented.
*/
func DecimalMul(from1, from2, to *MyDecimal) error {
from1, from2, to = validateArgs(from1, from2, to)
var (
err error
wordsInt1 = digitsToWords(int(from1.digitsInt))
wordsFrac1 = digitsToWords(int(from1.digitsFrac))
wordsInt2 = digitsToWords(int(from2.digitsInt))
wordsFrac2 = digitsToWords(int(from2.digitsFrac))
wordsIntTo = digitsToWords(int(from1.digitsInt) + int(from2.digitsInt))
wordsFracTo = wordsFrac1 + wordsFrac2
idx1 = wordsInt1
idx2 = wordsInt2
idxTo int
tmp1 = wordsIntTo
tmp2 = wordsFracTo
)
to.resultFrac = min(from1.resultFrac+from2.resultFrac, mysql.MaxDecimalScale)
wordsIntTo, wordsFracTo, err = fixWordCntError(wordsIntTo, wordsFracTo)
to.negative = from1.negative != from2.negative
to.digitsFrac = min(from1.digitsFrac+from2.digitsFrac, notFixedDec)
to.digitsInt = int8(wordsIntTo * digitsPerWord)
if err == ErrOverflow {
return err
}
if err != nil {
if to.digitsFrac > int8(wordsFracTo*digitsPerWord) {
to.digitsFrac = int8(wordsFracTo * digitsPerWord)
}
if to.digitsInt > int8(wordsIntTo*digitsPerWord) {
to.digitsInt = int8(wordsIntTo * digitsPerWord)
}
if tmp1 > wordsIntTo {
tmp1 -= wordsIntTo
tmp2 = tmp1 >> 1
wordsInt2 -= tmp1 - tmp2
wordsFrac1 = 0
wordsFrac2 = 0
} else {
tmp2 -= wordsFracTo
tmp1 = tmp2 >> 1
if wordsFrac1 <= wordsFrac2 {
wordsFrac1 -= tmp1
wordsFrac2 -= tmp2 - tmp1
} else {
wordsFrac2 -= tmp1
wordsFrac1 -= tmp2 - tmp1
}
}
}
startTo := wordsIntTo + wordsFracTo - 1
start2 := idx2 + wordsFrac2 - 1
stop1 := idx1 - wordsInt1
stop2 := idx2 - wordsInt2
to.wordBuf = zeroMyDecimal.wordBuf
for idx1 += wordsFrac1 - 1; idx1 >= stop1; idx1-- {
carry := int32(0)
idxTo = startTo
idx2 = start2
for idx2 >= stop2 {
var hi, lo int32
p := int64(from1.wordBuf[idx1]) * int64(from2.wordBuf[idx2])
hi = int32(p / wordBase)
lo = int32(p - int64(hi)*wordBase)
to.wordBuf[idxTo], carry = add2(to.wordBuf[idxTo], lo, carry)
carry += hi
idx2--
idxTo--
}
if carry > 0 {
if idxTo < 0 {
return ErrOverflow
}
to.wordBuf[idxTo], carry = add2(to.wordBuf[idxTo], 0, carry)
}
for idxTo--; carry > 0; idxTo-- {
if idxTo < 0 {
return ErrOverflow
}
to.wordBuf[idxTo], carry = add(to.wordBuf[idxTo], 0, carry)
}
startTo--
}
/* Now we have to check for -0.000 case */
if to.negative {
idx := 0
end := wordsIntTo + wordsFracTo
for {
if to.wordBuf[idx] != 0 {
break
}
idx++
/* We got decimal zero */
if idx == end {
*to = zeroMyDecimalWithFrac(to.resultFrac)
break
}
}
}
idxTo = 0
dToMove := wordsIntTo + digitsToWords(int(to.digitsFrac))
for to.wordBuf[idxTo] == 0 && to.digitsInt > digitsPerWord {
idxTo++
to.digitsInt -= digitsPerWord
dToMove--
}
if idxTo > 0 {
curIdx := 0
for dToMove > 0 {
to.wordBuf[curIdx] = to.wordBuf[idxTo]
curIdx++
idxTo++
dToMove--
}
}
return err
}
// DecimalDiv does division of two decimals.
//
// from1 - dividend
// from2 - divisor
// to - quotient
// fracIncr - increment of fraction
func DecimalDiv(from1, from2, to *MyDecimal, fracIncr int) error {
from1, from2, to = validateArgs(from1, from2, to)
to.resultFrac = min(from1.resultFrac+int8(fracIncr), mysql.MaxDecimalScale)
return doDivMod(from1, from2, to, nil, fracIncr)
}
/*
DecimalMod does modulus of two decimals.
from1 - dividend
from2 - divisor
to - modulus
RETURN VALUE
E_DEC_OK/E_DEC_TRUNCATED/E_DEC_OVERFLOW/E_DEC_DIV_ZERO;
NOTES
see do_div_mod()
DESCRIPTION
the modulus R in R = M mod N
is defined as
0 <= |R| < |M|
sign R == sign M
R = M - k*N, where k is integer
thus, there's no requirement for M or N to be integers
*/
func DecimalMod(from1, from2, to *MyDecimal) error {
from1, from2, to = validateArgs(from1, from2, to)
to.resultFrac = max(from1.resultFrac, from2.resultFrac)
return doDivMod(from1, from2, nil, to, 0)
}
func doDivMod(from1, from2, to, mod *MyDecimal, fracIncr int) error {
var (
frac1 = digitsToWords(int(from1.digitsFrac)) * digitsPerWord
prec1 = int(from1.digitsInt) + frac1
frac2 = digitsToWords(int(from2.digitsFrac)) * digitsPerWord
prec2 = int(from2.digitsInt) + frac2
)
if mod != nil {
to = mod
}
/* removing all the leading zeros */
i := ((prec2 - 1) % digitsPerWord) + 1
idx2 := 0
for prec2 > 0 && from2.wordBuf[idx2] == 0 {
prec2 -= i
i = digitsPerWord
idx2++
}
if prec2 <= 0 {
/* short-circuit everything: from2 == 0 */
return ErrDivByZero
}
prec2 -= countLeadingZeroes((prec2-1)%digitsPerWord, from2.wordBuf[idx2])
i = ((prec1 - 1) % digitsPerWord) + 1
idx1 := 0
for prec1 > 0 && from1.wordBuf[idx1] == 0 {
prec1 -= i
i = digitsPerWord
idx1++
}
if prec1 <= 0 {
/* short-circuit everything: from1 == 0 */
*to = zeroMyDecimalWithFrac(to.resultFrac)
return nil
}
prec1 -= countLeadingZeroes((prec1-1)%digitsPerWord, from1.wordBuf[idx1])
/* let's fix fracIncr, taking into account frac1,frac2 increase */
fracIncr -= frac1 - int(from1.digitsFrac) + frac2 - int(from2.digitsFrac)
if fracIncr < 0 {
fracIncr = 0
}
digitsIntTo := (prec1 - frac1) - (prec2 - frac2)
if from1.wordBuf[idx1] >= from2.wordBuf[idx2] {
digitsIntTo++
}
var wordsIntTo int
if digitsIntTo < 0 {
digitsIntTo /= digitsPerWord
wordsIntTo = 0
} else {
wordsIntTo = digitsToWords(digitsIntTo)
}
var wordsFracTo int
var err error
if mod != nil {
// we're calculating N1 % N2.
// The result will have
// digitsFrac=max(frac1, frac2), as for subtraction
// digitsInt=from2.digitsInt
to.negative = from1.negative
to.digitsFrac = max(from1.digitsFrac, from2.digitsFrac)
} else {
wordsFracTo = digitsToWords(frac1 + frac2 + fracIncr)
wordsIntTo, wordsFracTo, err = fixWordCntError(wordsIntTo, wordsFracTo)
to.negative = from1.negative != from2.negative
to.digitsInt = int8(wordsIntTo * digitsPerWord)
to.digitsFrac = int8(wordsFracTo * digitsPerWord)
}
idxTo := 0
stopTo := wordsIntTo + wordsFracTo
if mod == nil {
for digitsIntTo < 0 && idxTo < wordBufLen {
to.wordBuf[idxTo] = 0
idxTo++
digitsIntTo++
}
}
i = digitsToWords(prec1)
len1 := max(i+digitsToWords(2*frac2+fracIncr+1)+1, 3)
tmp1 := make([]int32, len1)
copy(tmp1, from1.wordBuf[idx1:idx1+i])
start1 := 0
var stop1 int
start2 := idx2
stop2 := idx2 + digitsToWords(prec2) - 1
/* removing end zeroes */
for from2.wordBuf[stop2] == 0 && stop2 >= start2 {
stop2--
}
len2 := stop2 - start2
stop2++
/*
calculating norm2 (normalized from2.wordBuf[start2]) - we need from2.wordBuf[start2] to be large
(at least > DIG_BASE/2), but unlike Knuth's Alg. D we don't want to
normalize input numbers (as we don't make a copy of the divisor).
Thus we normalize first dec1 of buf2 only, and we'll normalize tmp1[start1]
on the fly for the purpose of guesstimation only.
It's also faster, as we're saving on normalization of from2.
*/
normFactor := wordBase / int64(from2.wordBuf[start2]+1)
norm2 := int32(normFactor * int64(from2.wordBuf[start2]))
if len2 > 0 {
norm2 += int32(normFactor * int64(from2.wordBuf[start2+1]) / wordBase)
}
dcarry := int32(0)
if tmp1[start1] < from2.wordBuf[start2] {
dcarry = tmp1[start1]
start1++
}
// main loop
var guess int64
for ; idxTo < stopTo; idxTo++ {
/* short-circuit, if possible */
if dcarry == 0 && tmp1[start1] < from2.wordBuf[start2] {
guess = 0
} else {
/* D3: make a guess */
x := int64(tmp1[start1]) + int64(dcarry)*wordBase
y := int64(tmp1[start1+1])
guess = (normFactor*x + normFactor*y/wordBase) / int64(norm2)
if guess >= wordBase {
guess = wordBase - 1
}
if len2 > 0 {
/* remove normalization */
if int64(from2.wordBuf[start2+1])*guess > (x-guess*int64(from2.wordBuf[start2]))*wordBase+y {
guess--
}
if int64(from2.wordBuf[start2+1])*guess > (x-guess*int64(from2.wordBuf[start2]))*wordBase+y {
guess--
}
}
/* D4: multiply and subtract */
idx2 = stop2
idx1 = start1 + len2
var carry int32
for carry = 0; idx2 > start2; idx1-- {
var hi, lo int32
idx2--
x = guess * int64(from2.wordBuf[idx2])
hi = int32(x / wordBase)
lo = int32(x - int64(hi)*wordBase)
tmp1[idx1], carry = sub2(tmp1[idx1], lo, carry)
carry += hi
}
if dcarry < carry {
carry = 1
} else {
carry = 0
}
/* D5: check the remainder */
if carry > 0 {
/* D6: correct the guess */
guess--
idx2 = stop2
idx1 = start1 + len2
for carry = 0; idx2 > start2; idx1-- {
idx2--
tmp1[idx1], carry = add(tmp1[idx1], from2.wordBuf[idx2], carry)
}
}
}
if mod == nil {
to.wordBuf[idxTo] = int32(guess)
}
dcarry = tmp1[start1]
start1++
}
if mod != nil {
/*
now the result is in tmp1, it has
digitsInt=prec1-frac1
digitsFrac=max(frac1, frac2)
*/
if dcarry != 0 {
start1--
tmp1[start1] = dcarry
}
idxTo = 0
digitsIntTo = prec1 - frac1 - start1*digitsPerWord
if digitsIntTo < 0 {
/* If leading zeroes in the fractional part were earlier stripped */
wordsIntTo = digitsIntTo / digitsPerWord
} else {
wordsIntTo = digitsToWords(digitsIntTo)
}
wordsFracTo = digitsToWords(int(to.digitsFrac))
err = nil
if wordsIntTo == 0 && wordsFracTo == 0 {
*to = zeroMyDecimal
return err
}
if wordsIntTo <= 0 {
if -wordsIntTo >= wordBufLen {
*to = zeroMyDecimal
return ErrTruncated
}
stop1 = start1 + wordsIntTo + wordsFracTo
wordsFracTo += wordsIntTo
to.digitsInt = 0
for wordsIntTo < 0 {
to.wordBuf[idxTo] = 0
idxTo++
wordsIntTo++
}
} else {
if wordsIntTo > wordBufLen {
to.digitsInt = int8(digitsPerWord * wordBufLen)
to.digitsFrac = 0
return ErrOverflow
}
stop1 = start1 + wordsIntTo + wordsFracTo
to.digitsInt = int8(min(wordsIntTo*digitsPerWord, int(from2.digitsInt)))
}
if wordsIntTo+wordsFracTo > wordBufLen {
stop1 -= wordsIntTo + wordsFracTo - wordBufLen
wordsFracTo = wordBufLen - wordsIntTo
to.digitsFrac = int8(wordsFracTo * digitsPerWord)
err = ErrTruncated
}
for start1 < stop1 {
to.wordBuf[idxTo] = tmp1[start1]
idxTo++
start1++
}
}
idxTo, digitsIntTo = to.removeLeadingZeros()
to.digitsInt = int8(digitsIntTo)
if idxTo != 0 {
copy(to.wordBuf[:], to.wordBuf[idxTo:])
}
if to.IsZero() {
to.negative = false
}
return err
}
// DecimalPeak returns the length of the encoded decimal.
func DecimalPeak(b []byte) (int, error) {
if len(b) < 3 {
return 0, ErrBadNumber
}
precision := int(b[0])
frac := int(b[1])
binSize, err := DecimalBinSize(precision, frac)
if err != nil {
return 0, err
}
return binSize + 2, nil
}
// NewDecFromInt creates a MyDecimal from int.
func NewDecFromInt(i int64) *MyDecimal {
return new(MyDecimal).FromInt(i)
}
// NewDecFromUint creates a MyDecimal from uint.
func NewDecFromUint(i uint64) *MyDecimal {
return new(MyDecimal).FromUint(i)
}
// NewDecFromFloatForTest creates a MyDecimal from float, as it returns no error, it should only be used in test.
func NewDecFromFloatForTest(f float64) *MyDecimal {
dec := new(MyDecimal)
err := dec.FromFloat64(f)
if err != nil {
log.Panic("encountered error", zap.Error(err), zap.String("DecimalStr", strconv.FormatFloat(f, 'g', -1, 64)))
}
return dec
}
// NewDecFromStringForTest creates a MyDecimal from string, as it returns no error, it should only be used in test.
func NewDecFromStringForTest(s string) *MyDecimal {
dec := new(MyDecimal)
err := dec.FromString([]byte(s))
if err != nil {
log.Panic("encountered error", zap.Error(err), zap.String("DecimalStr", s))
}
return dec
}
// NewMaxOrMinDec returns the max or min value decimal for given precision and fraction.
func NewMaxOrMinDec(negative bool, prec, frac int) *MyDecimal {
str := make([]byte, prec+2)
for i := range str {
str[i] = '9'
}
if negative {
str[0] = '-'
} else {
str[0] = '+'
}
str[1+prec-frac] = '.'
dec := new(MyDecimal)
err := dec.FromString(str)
terror.Log(errors.Trace(err))
return dec
}
// Copyright 2015 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package types
import (
"fmt"
"math"
"time"
"github.com/pingcap/errors"
)
// AddUint64 adds uint64 a and b if no overflow, else returns error.
func AddUint64(a uint64, b uint64) (uint64, error) {
if math.MaxUint64-a < b {
return 0, ErrOverflow.GenWithStackByArgs("BIGINT UNSIGNED", fmt.Sprintf("(%d, %d)", a, b))
}
return a + b, nil
}
// AddInt64 adds int64 a and b if no overflow, otherwise returns error.
func AddInt64(a int64, b int64) (int64, error) {
if (a > 0 && b > 0 && math.MaxInt64-a < b) ||
(a < 0 && b < 0 && math.MinInt64-a > b) {
return 0, ErrOverflow.GenWithStackByArgs("BIGINT", fmt.Sprintf("(%d, %d)", a, b))
}
return a + b, nil
}
// AddDuration adds time.Duration a and b if no overflow, otherwise returns error.
func AddDuration(a time.Duration, b time.Duration) (time.Duration, error) {
if (a > 0 && b > 0 && math.MaxInt64-a < b) ||
(a < 0 && b < 0 && math.MinInt64-a > b) {
return 0, ErrOverflow.GenWithStackByArgs("BIGINT", fmt.Sprintf("(%d, %d)", int64(a), int64(b)))
}
return a + b, nil
}
// SubDuration subtracts time.Duration a with b and returns time.Duration if no overflow error.
func SubDuration(a time.Duration, b time.Duration) (time.Duration, error) {
if (a > 0 && b < 0 && math.MaxInt64-a < -b) ||
(a < 0 && b > 0 && math.MinInt64-a > -b) ||
(a == 0 && b == math.MinInt64) {
return 0, ErrOverflow.GenWithStackByArgs("BIGINT", fmt.Sprintf("(%d, %d)", a, b))
}
return a - b, nil
}
// AddInteger adds uint64 a and int64 b and returns uint64 if no overflow error.
func AddInteger(a uint64, b int64) (uint64, error) {
if b >= 0 {
return AddUint64(a, uint64(b))
}
if uint64(-b) > a {
return 0, ErrOverflow.GenWithStackByArgs("BIGINT UNSIGNED", fmt.Sprintf("(%d, %d)", a, b))
}
return a - uint64(-b), nil
}
// SubUint64 subtracts uint64 a with b and returns uint64 if no overflow error.
func SubUint64(a uint64, b uint64) (uint64, error) {
if a < b {
return 0, ErrOverflow.GenWithStackByArgs("BIGINT UNSIGNED", fmt.Sprintf("(%d, %d)", a, b))
}
return a - b, nil
}
// SubInt64 subtracts int64 a with b and returns int64 if no overflow error.
func SubInt64(a int64, b int64) (int64, error) {
if (a > 0 && b < 0 && math.MaxInt64-a < -b) ||
(a < 0 && b > 0 && math.MinInt64-a > -b) ||
(a == 0 && b == math.MinInt64) {
return 0, ErrOverflow.GenWithStackByArgs("BIGINT", fmt.Sprintf("(%d, %d)", a, b))
}
return a - b, nil
}
// SubUintWithInt subtracts uint64 a with int64 b and returns uint64 if no overflow error.
func SubUintWithInt(a uint64, b int64) (uint64, error) {
if b < 0 {
return AddUint64(a, uint64(-b))
}
return SubUint64(a, uint64(b))
}
// SubIntWithUint subtracts int64 a with uint64 b and returns uint64 if no overflow error.
func SubIntWithUint(a int64, b uint64) (uint64, error) {
if a < 0 || uint64(a) < b {
return 0, ErrOverflow.GenWithStackByArgs("BIGINT UNSIGNED", fmt.Sprintf("(%d, %d)", a, b))
}
return uint64(a) - b, nil
}
// MulUint64 multiplies uint64 a and b and returns uint64 if no overflow error.
func MulUint64(a uint64, b uint64) (uint64, error) {
if b > 0 && a > math.MaxUint64/b {
return 0, ErrOverflow.GenWithStackByArgs("BIGINT UNSIGNED", fmt.Sprintf("(%d, %d)", a, b))
}
return a * b, nil
}
// MulInt64 multiplies int64 a and b and returns int64 if no overflow error.
func MulInt64(a int64, b int64) (int64, error) {
if a == 0 || b == 0 {
return 0, nil
}
var (
res uint64
err error
negative = false
)
if a > 0 && b > 0 {
res, err = MulUint64(uint64(a), uint64(b))
} else if a < 0 && b < 0 {
res, err = MulUint64(uint64(-a), uint64(-b))
} else if a < 0 && b > 0 {
negative = true
res, err = MulUint64(uint64(-a), uint64(b))
} else {
negative = true
res, err = MulUint64(uint64(a), uint64(-b))
}
if err != nil {
return 0, errors.Trace(err)
}
if negative {
// negative result
if res > math.MaxInt64+1 {
return 0, ErrOverflow.GenWithStackByArgs("BIGINT", fmt.Sprintf("(%d, %d)", a, b))
}
return -int64(res), nil
}
// positive result
if res > math.MaxInt64 {
return 0, ErrOverflow.GenWithStackByArgs("BIGINT", fmt.Sprintf("(%d, %d)", a, b))
}
return int64(res), nil
}
// MulInteger multiplies uint64 a and int64 b, and returns uint64 if no overflow error.
func MulInteger(a uint64, b int64) (uint64, error) {
if a == 0 || b == 0 {
return 0, nil
}
if b < 0 {
return 0, ErrOverflow.GenWithStackByArgs("BIGINT UNSIGNED", fmt.Sprintf("(%d, %d)", a, b))
}
return MulUint64(a, uint64(b))
}
// DivInt64 divides int64 a with b, returns int64 if no overflow error.
// It just checks overflow, if b is zero, a "divide by zero" panic throws.
func DivInt64(a int64, b int64) (int64, error) {
if a == math.MinInt64 && b == -1 {
return 0, ErrOverflow.GenWithStackByArgs("BIGINT", fmt.Sprintf("(%d, %d)", a, b))
}
return a / b, nil
}
// DivUintWithInt divides uint64 a with int64 b, returns uint64 if no overflow error.
// It just checks overflow, if b is zero, a "divide by zero" panic throws.
func DivUintWithInt(a uint64, b int64) (uint64, error) {
if b < 0 {
if a != 0 && uint64(-b) <= a {
return 0, ErrOverflow.GenWithStackByArgs("BIGINT UNSIGNED", fmt.Sprintf("(%d, %d)", a, b))
}
return 0, nil
}
return a / uint64(b), nil
}
// DivIntWithUint divides int64 a with uint64 b, returns uint64 if no overflow error.
// It just checks overflow, if b is zero, a "divide by zero" panic throws.
func DivIntWithUint(a int64, b uint64) (uint64, error) {
if a < 0 {
if uint64(-a) >= b {
return 0, ErrOverflow.GenWithStackByArgs("BIGINT UNSIGNED", fmt.Sprintf("(%d, %d)", a, b))
}
return 0, nil
}
return uint64(a) / b, nil
}
// Copyright 2015 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package types
import (
"strconv"
"strings"
"github.com/pingcap/errors"
"github.com/pingcap/tidb/pkg/util/collate"
"github.com/pingcap/tidb/pkg/util/stringutil"
)
var zeroSet = Set{Name: "", Value: 0}
// Set is for MySQL Set type.
type Set struct {
Name string
Value uint64
}
// String implements fmt.Stringer interface.
func (e Set) String() string {
return e.Name
}
// ToNumber changes Set to float64 for numeric operation.
func (e Set) ToNumber() float64 {
return float64(e.Value)
}
// Copy deep copy a Set.
func (e Set) Copy() Set {
return Set{
Name: stringutil.Copy(e.Name),
Value: e.Value,
}
}
// ParseSet creates a Set with name or value.
func ParseSet(elems []string, name string, collation string) (Set, error) {
if setName, err := ParseSetName(elems, name, collation); err == nil {
return setName, nil
}
// name doesn't exist, maybe an integer?
if num, err := strconv.ParseUint(name, 0, 64); err == nil {
return ParseSetValue(elems, num)
}
return Set{}, errors.Errorf("item %s is not in Set %v", name, elems)
}
// ParseSetName creates a Set with name.
func ParseSetName(elems []string, name string, collation string) (Set, error) {
if len(name) == 0 {
return zeroSet, nil
}
ctor := collate.GetCollator(collation)
seps := strings.Split(name, ",")
marked := make(map[string]struct{}, len(seps))
for _, s := range seps {
marked[string(ctor.Key(s))] = struct{}{}
}
items := make([]string, 0, len(seps))
value := uint64(0)
for i, n := range elems {
key := string(ctor.Key(n))
if _, ok := marked[key]; ok {
value |= 1 << uint64(i)
delete(marked, key)
items = append(items, n)
}
}
if len(marked) == 0 {
return Set{Name: strings.Join(items, ","), Value: value}, nil
}
return Set{}, errors.Errorf("item %s is not in Set %v", name, elems)
}
var (
setIndexValue []uint64
setIndexInvertValue []uint64
)
func init() {
setIndexValue = make([]uint64, 64)
setIndexInvertValue = make([]uint64, 64)
for i := range 64 {
setIndexValue[i] = 1 << uint64(i)
setIndexInvertValue[i] = ^setIndexValue[i]
}
}
// ParseSetValue creates a Set with special number.
func ParseSetValue(elems []string, number uint64) (Set, error) {
if number == 0 {
return zeroSet, nil
}
value := number
var items []string
for i := range elems {
if number&setIndexValue[i] > 0 {
items = append(items, elems[i])
number &= setIndexInvertValue[i]
}
}
if number != 0 {
return Set{}, errors.Errorf("invalid number %d for Set %v", number, elems)
}
return Set{Name: strings.Join(items, ","), Value: value}, nil
}
// Copyright 2015 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package types
import (
"bytes"
"encoding/json"
"fmt"
"io"
"math"
"regexp"
"strconv"
"strings"
gotime "time"
"unicode"
"github.com/pingcap/errors"
"github.com/pingcap/tidb/pkg/errno"
"github.com/pingcap/tidb/pkg/parser/mysql"
"github.com/pingcap/tidb/pkg/parser/terror"
"github.com/pingcap/tidb/pkg/util/dbterror"
"github.com/pingcap/tidb/pkg/util/logutil"
"github.com/pingcap/tidb/pkg/util/mathutil"
"github.com/pingcap/tidb/pkg/util/parser"
"go.uber.org/zap"
)
// Time format without fractional seconds precision.
const (
DateFormat = gotime.DateOnly
TimeFormat = gotime.DateTime
// TimeFSPFormat is time format with fractional seconds precision.
TimeFSPFormat = "2006-01-02 15:04:05.000000"
// UTCTimeFormat is used to parse and format gotime.
UTCTimeFormat = "2006-01-02 15:04:05 UTC"
)
const (
// MinYear is the minimum for mysql year type.
MinYear int16 = 1901
// MaxYear is the maximum for mysql year type.
MaxYear int16 = 2155
// MaxDuration is the maximum for duration.
MaxDuration int64 = 838*10000 + 59*100 + 59
// MinTime is the minimum for mysql time type.
MinTime = -(838*gotime.Hour + 59*gotime.Minute + 59*gotime.Second)
// MaxTime is the maximum for mysql time type.
MaxTime = 838*gotime.Hour + 59*gotime.Minute + 59*gotime.Second
// ZeroDatetimeStr is the string representation of a zero datetime.
ZeroDatetimeStr = "0000-00-00 00:00:00"
// ZeroDateStr is the string representation of a zero date.
ZeroDateStr = "0000-00-00"
// TimeMaxHour is the max hour for mysql time type.
TimeMaxHour = 838
// TimeMaxMinute is the max minute for mysql time type.
TimeMaxMinute = 59
// TimeMaxSecond is the max second for mysql time type.
TimeMaxSecond = 59
// TimeMaxValue is the maximum value for mysql time type.
TimeMaxValue = TimeMaxHour*10000 + TimeMaxMinute*100 + TimeMaxSecond
// TimeMaxValueSeconds is the maximum second value for mysql time type.
TimeMaxValueSeconds = TimeMaxHour*3600 + TimeMaxMinute*60 + TimeMaxSecond
)
const (
// YearIndex is index of 'YEARS-MONTHS DAYS HOURS:MINUTES:SECONDS.MICROSECONDS' expr Format
YearIndex = 0 + iota
// MonthIndex is index of 'YEARS-MONTHS DAYS HOURS:MINUTES:SECONDS.MICROSECONDS' expr Format
MonthIndex
// DayIndex is index of 'YEARS-MONTHS DAYS HOURS:MINUTES:SECONDS.MICROSECONDS' expr Format
DayIndex
// HourIndex is index of 'YEARS-MONTHS DAYS HOURS:MINUTES:SECONDS.MICROSECONDS' expr Format
HourIndex
// MinuteIndex is index of 'YEARS-MONTHS DAYS HOURS:MINUTES:SECONDS.MICROSECONDS' expr Format
MinuteIndex
// SecondIndex is index of 'YEARS-MONTHS DAYS HOURS:MINUTES:SECONDS.MICROSECONDS' expr Format
SecondIndex
// MicrosecondIndex is index of 'YEARS-MONTHS DAYS HOURS:MINUTES:SECONDS.MICROSECONDS' expr Format
MicrosecondIndex
)
const (
// YearMonthMaxCnt is max parameters count 'YEARS-MONTHS' expr Format allowed
YearMonthMaxCnt = 2
// DayHourMaxCnt is max parameters count 'DAYS HOURS' expr Format allowed
DayHourMaxCnt = 2
// DayMinuteMaxCnt is max parameters count 'DAYS HOURS:MINUTES' expr Format allowed
DayMinuteMaxCnt = 3
// DaySecondMaxCnt is max parameters count 'DAYS HOURS:MINUTES:SECONDS' expr Format allowed
DaySecondMaxCnt = 4
// DayMicrosecondMaxCnt is max parameters count 'DAYS HOURS:MINUTES:SECONDS.MICROSECONDS' expr Format allowed
DayMicrosecondMaxCnt = 5
// HourMinuteMaxCnt is max parameters count 'HOURS:MINUTES' expr Format allowed
HourMinuteMaxCnt = 2
// HourSecondMaxCnt is max parameters count 'HOURS:MINUTES:SECONDS' expr Format allowed
HourSecondMaxCnt = 3
// HourMicrosecondMaxCnt is max parameters count 'HOURS:MINUTES:SECONDS.MICROSECONDS' expr Format allowed
HourMicrosecondMaxCnt = 4
// MinuteSecondMaxCnt is max parameters count 'MINUTES:SECONDS' expr Format allowed
MinuteSecondMaxCnt = 2
// MinuteMicrosecondMaxCnt is max parameters count 'MINUTES:SECONDS.MICROSECONDS' expr Format allowed
MinuteMicrosecondMaxCnt = 3
// SecondMicrosecondMaxCnt is max parameters count 'SECONDS.MICROSECONDS' expr Format allowed
SecondMicrosecondMaxCnt = 2
// TimeValueCnt is parameters count 'YEARS-MONTHS DAYS HOURS:MINUTES:SECONDS.MICROSECONDS' expr Format
TimeValueCnt = 7
)
// Zero values for different types.
var (
// ZeroDuration is the zero value for Duration type.
ZeroDuration = Duration{Duration: gotime.Duration(0), Fsp: DefaultFsp}
// ZeroCoreTime is the zero value for Time type.
ZeroTime = Time{}
// ZeroDatetime is the zero value for datetime Time.
ZeroDatetime = NewTime(ZeroCoreTime, mysql.TypeDatetime, DefaultFsp)
// ZeroTimestamp is the zero value for timestamp Time.
ZeroTimestamp = NewTime(ZeroCoreTime, mysql.TypeTimestamp, DefaultFsp)
// ZeroDate is the zero value for date Time.
ZeroDate = NewTime(ZeroCoreTime, mysql.TypeDate, DefaultFsp)
)
var (
// MinDatetime is the minimum for Golang Time type.
MinDatetime = FromDate(1, 1, 1, 0, 0, 0, 0)
// MaxDatetime is the maximum for mysql datetime type.
MaxDatetime = FromDate(9999, 12, 31, 23, 59, 59, 999999)
// BoundTimezone is the timezone for min and max timestamp.
BoundTimezone = gotime.UTC
// MinTimestamp is the minimum for mysql timestamp type.
MinTimestamp = NewTime(FromDate(1970, 1, 1, 0, 0, 1, 0), mysql.TypeTimestamp, DefaultFsp)
// MaxTimestamp is the maximum for mysql timestamp type.
MaxTimestamp = NewTime(FromDate(2038, 1, 19, 3, 14, 7, 999999), mysql.TypeTimestamp, DefaultFsp)
// WeekdayNames lists names of weekdays, which are used in builtin time function `dayname`.
WeekdayNames = []string{
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday",
"Sunday",
}
// MonthNames lists names of months, which are used in builtin time function `monthname`.
MonthNames = []string{
"January", "February",
"March", "April",
"May", "June",
"July", "August",
"September", "October",
"November", "December",
}
)
const (
// GoDurationDay is the gotime.Duration which equals to a Day.
GoDurationDay = gotime.Hour * 24
// GoDurationWeek is the gotime.Duration which equals to a Week.
GoDurationWeek = GoDurationDay * 7
)
// FromGoTime translates time.Time to mysql time internal representation.
func FromGoTime(t gotime.Time) CoreTime {
// Plus 500 nanosecond for rounding of the millisecond part.
t = t.Add(500 * gotime.Nanosecond)
year, month, day := t.Date()
hour, minute, second := t.Clock()
microsecond := t.Nanosecond() / 1000
return FromDate(year, int(month), day, hour, minute, second, microsecond)
}
// FromDate makes a internal time representation from the given date.
func FromDate(year int, month int, day int, hour int, minute int, second int, microsecond int) CoreTime {
v := uint64(ZeroCoreTime)
v |= (uint64(microsecond) << microsecondBitFieldOffset) & microsecondBitFieldMask
v |= (uint64(second) << secondBitFieldOffset) & secondBitFieldMask
v |= (uint64(minute) << minuteBitFieldOffset) & minuteBitFieldMask
v |= (uint64(hour) << hourBitFieldOffset) & hourBitFieldMask
v |= (uint64(day) << dayBitFieldOffset) & dayBitFieldMask
v |= (uint64(month) << monthBitFieldOffset) & monthBitFieldMask
v |= (uint64(year) << yearBitFieldOffset) & yearBitFieldMask
return CoreTime(v)
}
// FromDateChecked makes a internal time representation from the given date with field overflow check.
func FromDateChecked(year, month, day, hour, minute, second, microsecond int) (CoreTime, bool) {
if uint64(year) >= (1<<yearBitFieldWidth) ||
uint64(month) >= (1<<monthBitFieldWidth) ||
uint64(day) >= (1<<dayBitFieldWidth) ||
uint64(hour) >= (1<<hourBitFieldWidth) ||
uint64(minute) >= (1<<minuteBitFieldWidth) ||
uint64(second) >= (1<<secondBitFieldWidth) ||
uint64(microsecond) >= (1<<microsecondBitFieldWidth) {
return ZeroCoreTime, false
}
return FromDate(year, month, day, hour, minute, second, microsecond), true
}
// coreTime is an alias to CoreTime, embedd in Time.
type coreTime = CoreTime
// Time is the struct for handling datetime, timestamp and date.
type Time struct {
coreTime
}
// Clock returns the hour, minute, and second within the day specified by t.
func (t Time) Clock() (hour int, minute int, second int) {
return t.Hour(), t.Minute(), t.Second()
}
const (
// Core time bit fields.
yearBitFieldOffset, yearBitFieldWidth uint64 = 50, 14
monthBitFieldOffset, monthBitFieldWidth uint64 = 46, 4
dayBitFieldOffset, dayBitFieldWidth uint64 = 41, 5
hourBitFieldOffset, hourBitFieldWidth uint64 = 36, 5
minuteBitFieldOffset, minuteBitFieldWidth uint64 = 30, 6
secondBitFieldOffset, secondBitFieldWidth uint64 = 24, 6
microsecondBitFieldOffset, microsecondBitFieldWidth uint64 = 4, 20
// fspTt bit field.
// `fspTt` format:
// | fsp: 3 bits | type: 1 bit |
// When `fsp` is valid (in range [0, 6]):
// 1. `type` bit 0 represent `DateTime`
// 2. `type` bit 1 represent `Timestamp`
//
// Since s`Date` does not require `fsp`, we could use `fspTt` == 0b1110 to represent it.
fspTtBitFieldOffset, fspTtBitFieldWidth uint64 = 0, 4
yearBitFieldMask uint64 = ((1 << yearBitFieldWidth) - 1) << yearBitFieldOffset
monthBitFieldMask uint64 = ((1 << monthBitFieldWidth) - 1) << monthBitFieldOffset
dayBitFieldMask uint64 = ((1 << dayBitFieldWidth) - 1) << dayBitFieldOffset
hourBitFieldMask uint64 = ((1 << hourBitFieldWidth) - 1) << hourBitFieldOffset
minuteBitFieldMask uint64 = ((1 << minuteBitFieldWidth) - 1) << minuteBitFieldOffset
secondBitFieldMask uint64 = ((1 << secondBitFieldWidth) - 1) << secondBitFieldOffset
microsecondBitFieldMask uint64 = ((1 << microsecondBitFieldWidth) - 1) << microsecondBitFieldOffset
fspTtBitFieldMask uint64 = ((1 << fspTtBitFieldWidth) - 1) << fspTtBitFieldOffset
fspTtForDate uint = 0b1110
fspBitFieldMask uint64 = 0b1110
coreTimeBitFieldMask = ^fspTtBitFieldMask
)
// NewTime constructs time from core time, type and fsp.
func NewTime(coreTime CoreTime, tp uint8, fsp int) Time {
t := ZeroTime
p := (*uint64)(&t.coreTime)
*p |= uint64(coreTime) & coreTimeBitFieldMask
if tp == mysql.TypeDate {
*p |= uint64(fspTtForDate)
return t
}
if fsp == UnspecifiedFsp {
fsp = DefaultFsp
}
*p |= uint64(fsp) << 1
if tp == mysql.TypeTimestamp {
*p |= 1
}
return t
}
func (t Time) getFspTt() uint {
return uint(uint64(t.coreTime) & fspTtBitFieldMask)
}
func (t *Time) setFspTt(fspTt uint) {
*(*uint64)(&t.coreTime) &= ^(fspTtBitFieldMask)
*(*uint64)(&t.coreTime) |= uint64(fspTt)
}
// Type returns type value.
func (t Time) Type() uint8 {
if t.getFspTt() == fspTtForDate {
return mysql.TypeDate
}
if uint64(t.coreTime)&1 == 1 {
return mysql.TypeTimestamp
}
return mysql.TypeDatetime
}
// Fsp returns fsp value.
func (t Time) Fsp() int {
fspTt := t.getFspTt()
if fspTt == fspTtForDate {
return 0
}
return int(fspTt >> 1)
}
// SetType updates the type in Time.
// Only DateTime/Date/Timestamp is valid.
func (t *Time) SetType(tp uint8) {
fspTt := t.getFspTt()
if fspTt == fspTtForDate && tp != mysql.TypeDate {
fspTt = 0
}
switch tp {
case mysql.TypeDate:
fspTt = fspTtForDate
case mysql.TypeTimestamp:
fspTt |= 1
case mysql.TypeDatetime:
fspTt &= ^(uint(1))
}
t.setFspTt(fspTt)
}
// SetFsp updates the fsp in Time.
func (t *Time) SetFsp(fsp int) {
if t.getFspTt() == fspTtForDate {
return
}
if fsp == UnspecifiedFsp {
fsp = DefaultFsp
}
*(*uint64)(&t.coreTime) &= ^(fspBitFieldMask)
*(*uint64)(&t.coreTime) |= uint64(fsp) << 1
}
// CoreTime returns core time.
func (t Time) CoreTime() CoreTime {
return CoreTime(uint64(t.coreTime) & coreTimeBitFieldMask)
}
// SetCoreTime updates core time.
func (t *Time) SetCoreTime(ct CoreTime) {
*(*uint64)(&t.coreTime) &= ^coreTimeBitFieldMask
*(*uint64)(&t.coreTime) |= uint64(ct) & coreTimeBitFieldMask
}
// CurrentTime returns current time with type tp.
func CurrentTime(tp uint8) Time {
return NewTime(FromGoTime(gotime.Now()), tp, 0)
}
// ConvertTimeZone converts the time value from one timezone to another.
// The input time should be a valid timestamp.
func (t *Time) ConvertTimeZone(from, to *gotime.Location) error {
if !t.IsZero() {
raw, err := t.GoTime(from)
if err != nil {
return errors.Trace(err)
}
converted := raw.In(to)
t.SetCoreTime(FromGoTime(converted))
}
return nil
}
func (t Time) String() string {
if t.Type() == mysql.TypeDate {
// We control the format, so no error would occur.
str, err := t.DateFormat("%Y-%m-%d")
terror.Log(errors.Trace(err))
return str
}
str, err := t.DateFormat("%Y-%m-%d %H:%i:%s")
terror.Log(errors.Trace(err))
fsp := t.Fsp()
if fsp > 0 {
tmp := fmt.Sprintf(".%06d", t.Microsecond())
str = str + tmp[:1+fsp]
}
return str
}
// IsZero returns a boolean indicating whether the time is equal to ZeroCoreTime.
func (t Time) IsZero() bool {
return compareTime(t.coreTime, ZeroCoreTime) == 0
}
// InvalidZero returns a boolean indicating whether the month or day is zero.
// Several functions are strict when passed a DATE() function value as their argument and reject incomplete dates with a day part of zero:
// CONVERT_TZ(), DATE_ADD(), DATE_SUB(), DAYOFYEAR(), TIMESTAMPDIFF(),
// TO_DAYS(), TO_SECONDS(), WEEK(), WEEKDAY(), WEEKOFYEAR(), YEARWEEK().
// Mysql Doc: https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html
func (t Time) InvalidZero() bool {
return t.Month() == 0 || t.Day() == 0
}
const numberFormat = "%Y%m%d%H%i%s"
const dateFormat = "%Y%m%d"
// ToNumber returns a formatted number.
// e.g,
// 2012-12-12 -> 20121212
// 2012-12-12T10:10:10 -> 20121212101010
// 2012-12-12T10:10:10.123456 -> 20121212101010.123456
func (t Time) ToNumber() *MyDecimal {
dec := new(MyDecimal)
t.FillNumber(dec)
return dec
}
// FillNumber is the same as ToNumber,
// but reuses input decimal instead of allocating one.
func (t Time) FillNumber(dec *MyDecimal) {
if t.IsZero() {
dec.FromInt(0)
return
}
// Fix issue #1046
// Prevents from converting 2012-12-12 to 20121212000000
var tfStr string
if t.Type() == mysql.TypeDate {
tfStr = dateFormat
} else {
tfStr = numberFormat
}
s, err := t.DateFormat(tfStr)
if err != nil {
logutil.BgLogger().Error("never happen because we've control the format!", zap.String("category", "fatal"))
}
fsp := t.Fsp()
if fsp > 0 {
s1 := fmt.Sprintf("%s.%06d", s, t.Microsecond())
s = s1[:len(s)+fsp+1]
}
// We skip checking error here because time formatted string can be parsed certainly.
err = dec.FromString([]byte(s))
terror.Log(errors.Trace(err))
}
// Convert converts t with type tp.
func (t Time) Convert(ctx Context, tp uint8) (Time, error) {
t1 := t
if t.Type() == tp || t.IsZero() {
t1.SetType(tp)
return t1, nil
}
t1.SetType(tp)
err := t1.Check(ctx)
if tp == mysql.TypeTimestamp && ErrTimestampInDSTTransition.Equal(err) {
tAdj, adjErr := t1.AdjustedGoTime(ctx.Location())
if adjErr == nil {
ctx.AppendWarning(err)
return Time{FromGoTime(tAdj)}, nil
}
}
return t1, errors.Trace(err)
}
// ConvertToDuration converts mysql datetime, timestamp and date to mysql time type.
// e.g,
// 2012-12-12T10:10:10 -> 10:10:10
// 2012-12-12 -> 0
func (t Time) ConvertToDuration() (Duration, error) {
if t.IsZero() {
return ZeroDuration, nil
}
hour, minute, second := t.Clock()
frac := t.Microsecond() * 1000
d := gotime.Duration(hour*3600+minute*60+second)*gotime.Second + gotime.Duration(frac) //nolint:durationcheck
// TODO: check convert validation
return Duration{Duration: d, Fsp: t.Fsp()}, nil
}
// Compare returns an integer comparing the time instant t to o.
// If t is after o, returns 1, equal o, returns 0, before o, returns -1.
func (t Time) Compare(o Time) int {
return compareTime(t.coreTime, o.coreTime)
}
// CompareString is like Compare,
// but parses string to Time then compares.
func (t Time) CompareString(ctx Context, str string) (int, error) {
// use MaxFsp to parse the string
o, err := ParseTime(ctx, str, t.Type(), MaxFsp)
if err != nil {
return 0, errors.Trace(err)
}
return t.Compare(o), nil
}
// roundTime rounds the time value according to digits count specified by fsp.
func roundTime(t gotime.Time, fsp int) gotime.Time {
d := gotime.Duration(math.Pow10(9 - fsp))
return t.Round(d)
}
// RoundFrac rounds the fraction part of a time-type value according to `fsp`.
func (t Time) RoundFrac(ctx Context, fsp int) (Time, error) {
if t.Type() == mysql.TypeDate || t.IsZero() {
// date type has no fsp
return t, nil
}
fsp, err := CheckFsp(fsp)
if err != nil {
return t, errors.Trace(err)
}
if fsp == t.Fsp() {
// have same fsp
return t, nil
}
var nt CoreTime
if t1, err := t.GoTime(ctx.Location()); err == nil {
t1 = roundTime(t1, fsp)
nt = FromGoTime(t1)
} else {
// Take the hh:mm:ss part out to avoid handle month or day = 0.
hour, minute, second, microsecond := t.Hour(), t.Minute(), t.Second(), t.Microsecond()
t1 := gotime.Date(1, 1, 1, hour, minute, second, microsecond*1000, ctx.Location())
t2 := roundTime(t1, fsp)
hour, minute, second = t2.Clock()
microsecond = t2.Nanosecond() / 1000
// TODO: when hh:mm:ss overflow one day after rounding, it should be add to yy:mm:dd part,
// but mm:dd may contain 0, it makes the code complex, so we ignore it here.
if t2.Day()-1 > 0 {
return t, errors.Trace(ErrWrongValue.GenWithStackByArgs(TimeStr, t.String()))
}
var ok bool
nt, ok = FromDateChecked(t.Year(), t.Month(), t.Day(), hour, minute, second, microsecond)
if !ok {
return t, errors.Trace(ErrWrongValue.GenWithStackByArgs(TimeStr, t.String()))
}
}
return NewTime(nt, t.Type(), fsp), nil
}
// MarshalJSON implements Marshaler.MarshalJSON interface.
func (t Time) MarshalJSON() ([]byte, error) {
return json.Marshal(t.coreTime)
}
// UnmarshalJSON implements Unmarshaler.UnmarshalJSON interface.
func (t *Time) UnmarshalJSON(data []byte) error {
return json.Unmarshal(data, &t.coreTime)
}
// GetFsp gets the fsp of a string.
func GetFsp(s string) int {
index := GetFracIndex(s)
var fsp int
if index < 0 {
fsp = 0
} else {
fsp = len(s) - index - 1
}
if fsp > 6 {
fsp = 6
}
return fsp
}
// GetFracIndex finds the last '.' for get fracStr, index = -1 means fracStr not found.
// but for format like '2019.01.01 00:00:00', the index should be -1.
//
// It will not be affected by the time zone suffix.
// For format like '2020-01-01 12:00:00.123456+05:00' and `2020-01-01 12:00:00.123456-05:00`, the index should be 19.
// related issue https://github.com/pingcap/tidb/issues/35291 and https://github.com/pingcap/tidb/issues/49555
func GetFracIndex(s string) (index int) {
tzIndex, _, _, _, _ := GetTimezone(s)
var end int
if tzIndex != -1 {
end = tzIndex - 1
} else {
end = len(s) - 1
}
index = -1
for i := end; i >= 0; i-- {
if s[i] != '+' && s[i] != '-' && isPunctuation(s[i]) {
if s[i] == '.' {
index = i
}
break
}
}
return index
}
// RoundFrac rounds fractional seconds precision with new fsp and returns a new one.
// We will use the “round half up” rule, e.g, >= 0.5 -> 1, < 0.5 -> 0,
// so 2011:11:11 10:10:10.888888 round 0 -> 2011:11:11 10:10:11
// and 2011:11:11 10:10:10.111111 round 0 -> 2011:11:11 10:10:10
func RoundFrac(t gotime.Time, fsp int) (gotime.Time, error) {
_, err := CheckFsp(fsp)
if err != nil {
return t, errors.Trace(err)
}
return t.Round(gotime.Duration(math.Pow10(9-fsp)) * gotime.Nanosecond), nil //nolint:durationcheck
}
// TruncateFrac truncates fractional seconds precision with new fsp and returns a new one.
// 2011:11:11 10:10:10.888888 round 0 -> 2011:11:11 10:10:10
// 2011:11:11 10:10:10.111111 round 0 -> 2011:11:11 10:10:10
func TruncateFrac(t gotime.Time, fsp int) (gotime.Time, error) {
if _, err := CheckFsp(fsp); err != nil {
return t, err
}
return t.Truncate(gotime.Duration(math.Pow10(9-fsp)) * gotime.Nanosecond), nil //nolint:durationcheck
}
// ToPackedUint encodes Time to a packed uint64 value.
//
// 1 bit 0
// 17 bits year*13+month (year 0-9999, month 0-12)
// 5 bits day (0-31)
// 5 bits hour (0-23)
// 6 bits minute (0-59)
// 6 bits second (0-59)
// 24 bits microseconds (0-999999)
//
// Total: 64 bits = 8 bytes
//
// 0YYYYYYY.YYYYYYYY.YYdddddh.hhhhmmmm.mmssssss.ffffffff.ffffffff.ffffffff
func (t Time) ToPackedUint() (uint64, error) {
tm := t
if t.IsZero() {
return 0, nil
}
year, month, day := tm.Year(), tm.Month(), tm.Day()
hour, minute, sec := tm.Hour(), tm.Minute(), tm.Second()
ymd := uint64(((year*13 + month) << 5) | day)
hms := uint64(hour<<12 | minute<<6 | sec)
micro := uint64(tm.Microsecond())
return ((ymd<<17 | hms) << 24) | micro, nil
}
// FromPackedUint decodes Time from a packed uint64 value.
func (t *Time) FromPackedUint(packed uint64) error {
if packed == 0 {
t.SetCoreTime(ZeroCoreTime)
return nil
}
ymdhms := packed >> 24
ymd := ymdhms >> 17
day := int(ymd & (1<<5 - 1))
ym := ymd >> 5
month := int(ym % 13)
year := int(ym / 13)
hms := ymdhms & (1<<17 - 1)
second := int(hms & (1<<6 - 1))
minute := int((hms >> 6) & (1<<6 - 1))
hour := int(hms >> 12)
microsec := int(packed % (1 << 24))
t.SetCoreTime(FromDate(year, month, day, hour, minute, second, microsec))
return nil
}
// Check function checks whether t matches valid Time format.
// If allowZeroInDate is false, it returns ErrZeroDate when month or day is zero.
// FIXME: See https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_no_zero_in_date
func (t Time) Check(ctx Context) error {
allowZeroInDate := ctx.Flags().IgnoreZeroInDate()
allowInvalidDate := ctx.Flags().IgnoreInvalidDateErr()
var err error
switch t.Type() {
case mysql.TypeTimestamp:
err = checkTimestampType(t.coreTime, ctx.Location())
case mysql.TypeDatetime, mysql.TypeDate:
err = checkDatetimeType(t.coreTime, allowZeroInDate, allowInvalidDate)
}
return errors.Trace(err)
}
// Sub subtracts t1 from t, returns a duration value.
// Note that sub should not be done on different time types.
func (t *Time) Sub(ctx Context, t1 *Time) Duration {
var duration gotime.Duration
if t.Type() == mysql.TypeTimestamp && t1.Type() == mysql.TypeTimestamp {
a, err := t.GoTime(ctx.Location())
terror.Log(errors.Trace(err))
b, err := t1.GoTime(ctx.Location())
terror.Log(errors.Trace(err))
duration = a.Sub(b)
} else {
seconds, microseconds, neg := calcTimeTimeDiff(t.coreTime, t1.coreTime, 1)
duration = gotime.Duration(seconds*1e9 + microseconds*1e3)
if neg {
duration = -duration
}
}
fsp := t.Fsp()
fsp1 := t1.Fsp()
if fsp < fsp1 {
fsp = fsp1
}
return Duration{
Duration: duration,
Fsp: fsp,
}
}
// Add adds d to t, returns the result time value.
func (t *Time) Add(ctx Context, d Duration) (Time, error) {
seconds, microseconds, _ := calcTimeDurationDiff(t.coreTime, d)
days := seconds / secondsIn24Hour
year, month, day := getDateFromDaynr(uint(days))
var tm Time
tm.setYear(uint16(year))
tm.setMonth(uint8(month))
tm.setDay(uint8(day))
calcTimeFromSec(&tm.coreTime, seconds%secondsIn24Hour, microseconds)
if t.Type() == mysql.TypeDate {
tm.setHour(0)
tm.setMinute(0)
tm.setSecond(0)
tm.setMicrosecond(0)
}
fsp := max(d.Fsp, t.Fsp())
ret := NewTime(tm.coreTime, t.Type(), fsp)
return ret, ret.Check(ctx)
}
// TimestampDiff returns t2 - t1 where t1 and t2 are date or datetime expressions.
// The unit for the result (an integer) is given by the unit argument.
// The legal values for unit are "YEAR" "QUARTER" "MONTH" "DAY" "HOUR" "SECOND" and so on.
func TimestampDiff(unit string, t1 Time, t2 Time) int64 {
return timestampDiff(unit, t1.coreTime, t2.coreTime)
}
// ParseDateFormat parses a formatted date string and returns separated components.
func ParseDateFormat(format string) []string {
format = strings.TrimSpace(format)
if len(format) == 0 {
return nil
}
// Date format must start with number.
if !isDigit(format[0]) {
return nil
}
start := 0
// Initialize `seps` with capacity of 6. The input `format` is typically
// a date time of the form time.DateTime, which has 6 numeric parts
// (the fractional second part is usually removed by `splitDateTime`).
// Setting `seps`'s capacity to 6 avoids reallocation in this common case.
seps := make([]string, 0, 6)
for i := 1; i < len(format)-1; i++ {
if isValidSeparator(format[i], len(seps)) {
prevParts := len(seps)
seps = append(seps, format[start:i])
start = i + 1
// consume further consecutive separators
for j := i + 1; j < len(format); j++ {
if !isValidSeparator(format[j], prevParts) {
break
}
start++
i++
}
continue
}
if !isDigit(format[i]) {
return nil
}
}
seps = append(seps, format[start:])
return seps
}
// helper for date part splitting, punctuation characters are valid separators anywhere,
// while space and 'T' are valid separators only between date and time.
func isValidSeparator(c byte, prevParts int) bool {
if isPunctuation(c) {
return true
}
// for https://github.com/pingcap/tidb/issues/32232
if prevParts == 2 && (c == 'T' || c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r') {
return true
}
if prevParts > 4 && !isDigit(c) {
return true
}
return false
}
var validIdxCombinations = map[int]struct {
h int
m int
}{
100: {0, 0}, // 23:59:59Z
30: {2, 0}, // 23:59:59+08
50: {4, 2}, // 23:59:59+0800
63: {5, 2}, // 23:59:59+08:00
// postgres supports the following additional syntax that deviates from ISO8601, although we won't support it
// currently, it will be fairly easy to add in the current parsing framework
// 23:59:59Z+08
// 23:59:59Z+08:00
}
// GetTimezone parses the trailing timezone information of a given time string literal. If idx = -1 is returned, it
// means timezone information not found, otherwise it indicates the index of the starting index of the timezone
// information. If the timezone contains sign, hour part and/or minute part, it will be returned as is, otherwise an
// empty string will be returned.
//
// Supported syntax:
//
// MySQL compatible: ((?P<tz_sign>[-+])(?P<tz_hour>[0-9]{2}):(?P<tz_minute>[0-9]{2})){0,1}$, see
// https://dev.mysql.com/doc/refman/8.0/en/time-zone-support.html and https://dev.mysql.com/doc/refman/8.0/en/datetime.html
// the first link specified that timezone information should be in "[H]H:MM, prefixed with a + or -" while the
// second link specified that for string literal, "hour values less than than 10, a leading zero is required.".
// ISO-8601: Z|((((?P<tz_sign>[-+])(?P<tz_hour>[0-9]{2})(:(?P<tz_minute>[0-9]{2}){0,1}){0,1})|((?P<tz_minute>[0-9]{2}){0,1}){0,1}))$
// see https://www.cl.cam.ac.uk/~mgk25/iso-time.html
func GetTimezone(lit string) (idx int, tzSign, tzHour, tzSep, tzMinute string) {
idx, zidx, sidx, spidx := -1, -1, -1, -1
// idx is for the position of the starting of the timezone information
// zidx is for the z symbol
// sidx is for the sign
// spidx is for the separator
l := len(lit)
// the following loop finds the first index of Z, sign, and separator from backwards.
for i := l - 1; 0 <= i; i-- {
if lit[i] == 'Z' {
zidx = i
break
}
if sidx == -1 && (lit[i] == '-' || lit[i] == '+') {
sidx = i
}
if spidx == -1 && lit[i] == ':' {
spidx = i
}
}
// we could enumerate all valid combinations of these values and look it up in a table, see validIdxCombinations
// zidx can be -1 (23:59:59+08:00), l-1 (23:59:59Z)
// sidx can be -1, l-3, l-5, l-6
// spidx can be -1, l-3
k := 0
if l-zidx == 1 {
k += 100
}
if t := l - sidx; t == 3 || t == 5 || t == 6 {
k += t * 10
}
if l-spidx == 3 {
k += 3
}
if v, ok := validIdxCombinations[k]; ok {
hidx, midx := l-v.h, l-v.m
valid := func(v string) bool {
return '0' <= v[0] && v[0] <= '9' && '0' <= v[1] && v[1] <= '9'
}
if sidx != -1 {
tzSign = lit[sidx : sidx+1]
idx = sidx
}
if zidx != -1 {
idx = zidx
}
if (l - spidx) == 3 {
tzSep = lit[spidx : spidx+1]
}
if v.h != 0 {
tzHour = lit[hidx : hidx+2]
if !valid(tzHour) {
return -1, "", "", "", ""
}
}
if v.m != 0 {
tzMinute = lit[midx : midx+2]
if !valid(tzMinute) {
return -1, "", "", "", ""
}
}
return
}
return -1, "", "", "", ""
}
// See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-literals.html.
// splitDateTime splits the string literal into 3 parts, date & time, FSP(Fractional Seconds Precision) and time zone.
// For FSP, The only delimiter recognized between a date & time part and a fractional seconds part is the decimal point,
// therefore we could look from backwards at the literal to find the index of the decimal point.
// For time zone, the possible delimiter could be +/- (w.r.t. MySQL 8.0, see
// https://dev.mysql.com/doc/refman/8.0/en/datetime.html) and Z/z (w.r.t. ISO 8601, see section Time zone in
// https://www.cl.cam.ac.uk/~mgk25/iso-time.html). We also look from backwards for the delimiter, see GetTimezone.
func splitDateTime(format string) (seps []string, fracStr string, hasTZ bool, tzSign, tzHour, tzSep, tzMinute string, truncated bool) {
tzIndex, tzSign, tzHour, tzSep, tzMinute := GetTimezone(format)
if tzIndex > 0 {
hasTZ = true
for ; tzIndex > 0 && isPunctuation(format[tzIndex-1]); tzIndex-- {
// In case of multiple separators, e.g. 2020-10--10
continue
}
format = format[:tzIndex]
}
fracIndex := GetFracIndex(format)
if fracIndex > 0 {
// Only contain digits
fracEnd := fracIndex + 1
for fracEnd < len(format) && isDigit(format[fracEnd]) {
fracEnd++
}
truncated = (fracEnd != len(format))
fracStr = format[fracIndex+1 : fracEnd]
for ; fracIndex > 0 && isPunctuation(format[fracIndex-1]); fracIndex-- {
// In case of multiple separators, e.g. 2020-10..10
continue
}
format = format[:fracIndex]
}
seps = ParseDateFormat(format)
return
}
// See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-literals.html.
func parseDatetime(ctx Context, str string, fsp int, isFloat bool) (Time, error) {
var (
year, month, day, hour, minute, second, deltaHour, deltaMinute int
fracStr string
tzSign, tzHour, tzSep, tzMinute string
hasTZ, hhmmss bool
err error
)
seps, fracStr, hasTZ, tzSign, tzHour, tzSep, tzMinute, truncatedOrIncorrect := splitDateTime(str)
if truncatedOrIncorrect {
ctx.AppendWarning(ErrTruncatedWrongVal.FastGenByArgs("datetime", str))
}
/*
if we have timezone parsed, there are the following cases to be considered, however some of them are wrongly parsed, and we should consider absorb them back to seps.
1. Z, then it must be time zone information, and we should not tamper with it
2. -HH, it might be from
1. no fracStr
1. YYYY-MM-DD
2. YYYY-MM-DD-HH
3. YYYY-MM-DD HH-MM
4. YYYY-MM-DD HH:MM-SS
5. YYYY-MM-DD HH:MM:SS-HH (correct, no need absorb)
2. with fracStr
1. YYYY.MM-DD
2. YYYY-MM.DD-HH
3. YYYY-MM-DD.HH-MM
4. YYYY-MM-DD HH.MM-SS
5. YYYY-MM-DD HH:MM.SS-HH (correct, no need absorb)
3. -HH:MM, similarly it might be from
1. no fracStr
1. YYYY-MM:DD
2. YYYY-MM-DD:HH
3. YYYY-MM-DD-HH:MM
4. YYYY-MM-DD HH-MM:SS
5. YYYY-MM-DD HH:MM-SS:HH (invalid)
6. YYYY-MM-DD HH:MM:SS-HH:MM (correct, no need absorb)
2. with fracStr
1. YYYY.MM-DD:HH
2. YYYY-MM.DD-HH:MM
3. YYYY-MM-DD.HH-MM:SS
4. YYYY-MM-DD HH.MM-SS:HH (invalid)
5. YYYY-MM-DD HH:MM.SS-HH:MM (correct, no need absorb)
4. -HHMM, there should only be one case, that is both the date and time part have existed, only then could we have fracStr or time zone
1. YYYY-MM-DD HH:MM:SS.FSP-HHMM (correct, no need absorb)
to summarize, FSP and timezone is only valid if we have date and time presented, otherwise we should consider absorbing
FSP or timezone into seps. additionally, if we want to absorb timezone, we either absorb them all, or not, meaning
we won't only absorb tzHour but not tzMinute.
additional case to consider is that when the time literal is presented in float string (e.g. `YYYYMMDD.HHMMSS`), in
this case, FSP should not be absorbed and only `+HH:MM` would be allowed (i.e. Z, +HHMM, +HH that comes from ISO8601
should be banned), because it only conforms to MySQL's timezone parsing logic, but it is not valid in ISO8601.
However, I think it is generally acceptable to allow a wider spectrum of timezone format in string literal.
*/
// noAbsorb tests if can absorb FSP or TZ
noAbsorb := func(seps []string) bool {
// if we have more than 5 parts (i.e. 6), the tailing part can't be absorbed
// or if we only have 1 part, but its length is longer than 4, then it is at least YYMMD, in this case, FSP can
// not be absorbed, and it will be handled later, and the leading sign prevents TZ from being absorbed, because
// if date part has no separators, we can't use -/+ as separators between date & time.
return len(seps) > 5 || (len(seps) == 1 && len(seps[0]) > 4)
}
if len(fracStr) != 0 && !isFloat {
if !noAbsorb(seps) {
seps = append(seps, fracStr)
fracStr = ""
}
}
if hasTZ && tzSign != "" {
// if tzSign is empty, we can be sure that the string literal contains timezone (such as 2010-10-10T10:10:10Z),
// therefore we could safely skip this branch.
if !noAbsorb(seps) && !(tzMinute != "" && tzSep == "") {
// we can't absorb timezone if there is no separate between tzHour and tzMinute
if len(tzHour) != 0 {
seps = append(seps, tzHour)
}
if len(tzMinute) != 0 {
seps = append(seps, tzMinute)
}
hasTZ = false
}
}
switch len(seps) {
case 0:
return ZeroDatetime, errors.Trace(ErrWrongValue.GenWithStackByArgs(DateTimeStr, str))
case 1:
l := len(seps[0])
// Values specified as numbers
if isFloat {
numOfTime, err := StrToInt(ctx, seps[0], false)
if err != nil {
return ZeroDatetime, errors.Trace(ErrWrongValue.GenWithStackByArgs(DateTimeStr, str))
}
dateTime, err := ParseDatetimeFromNum(ctx, numOfTime)
if err != nil {
return ZeroDatetime, errors.Trace(ErrWrongValue.GenWithStackByArgs(DateTimeStr, str))
}
year, month, day, hour, minute, second =
dateTime.Year(), dateTime.Month(), dateTime.Day(), dateTime.Hour(), dateTime.Minute(), dateTime.Second()
// case: 0.XXX or like "20170118.999"
if seps[0] == "0" || (l >= 9 && l <= 14) {
hhmmss = true
}
break
}
// Values specified as strings
switch l {
case 14: // No delimiter.
// YYYYMMDDHHMMSS
_, err = fmt.Sscanf(seps[0], "%4d%2d%2d%2d%2d%2d", &year, &month, &day, &hour, &minute, &second)
hhmmss = true
case 12: // YYMMDDHHMMSS
_, err = fmt.Sscanf(seps[0], "%2d%2d%2d%2d%2d%2d", &year, &month, &day, &hour, &minute, &second)
year = adjustYear(year)
hhmmss = true
case 11: // YYMMDDHHMMS
_, err = fmt.Sscanf(seps[0], "%2d%2d%2d%2d%2d%1d", &year, &month, &day, &hour, &minute, &second)
year = adjustYear(year)
hhmmss = true
case 10: // YYMMDDHHMM
_, err = fmt.Sscanf(seps[0], "%2d%2d%2d%2d%2d", &year, &month, &day, &hour, &minute)
year = adjustYear(year)
case 9: // YYMMDDHHM
_, err = fmt.Sscanf(seps[0], "%2d%2d%2d%2d%1d", &year, &month, &day, &hour, &minute)
year = adjustYear(year)
case 8: // YYYYMMDD
_, err = fmt.Sscanf(seps[0], "%4d%2d%2d", &year, &month, &day)
case 7: // YYMMDDH
_, err = fmt.Sscanf(seps[0], "%2d%2d%2d%1d", &year, &month, &day, &hour)
year = adjustYear(year)
case 6, 5:
// YYMMDD && YYMMD
_, err = fmt.Sscanf(seps[0], "%2d%2d%2d", &year, &month, &day)
year = adjustYear(year)
default:
return ZeroDatetime, errors.Trace(ErrWrongValue.GenWithStackByArgs(TimeStr, str))
}
if l == 5 || l == 6 || l == 8 {
// YYMMDD or YYYYMMDD
// We must handle float => string => datetime, the difference is that fractional
// part of float type is discarded directly, while fractional part of string type
// is parsed to HH:MM:SS.
if !isFloat {
// '20170118.123423' => 2017-01-18 12:34:23.234
switch len(fracStr) {
case 0:
case 1, 2:
_, err = fmt.Sscanf(fracStr, "%2d ", &hour)
case 3, 4:
_, err = fmt.Sscanf(fracStr, "%2d%2d ", &hour, &minute)
default:
_, err = fmt.Sscanf(fracStr, "%2d%2d%2d ", &hour, &minute, &second)
}
truncatedOrIncorrect = err != nil
}
// 20170118.123423 => 2017-01-18 00:00:00
}
if l == 9 || l == 10 {
if len(fracStr) == 0 {
second = 0
} else {
_, err = fmt.Sscanf(fracStr, "%2d ", &second)
}
truncatedOrIncorrect = err != nil
}
if truncatedOrIncorrect {
ctx.AppendWarning(ErrTruncatedWrongVal.FastGenByArgs("datetime", str))
err = nil
}
case 2:
return ZeroDatetime, errors.Trace(ErrWrongValue.FastGenByArgs(DateTimeStr, str))
case 3:
// YYYY-MM-DD
err = scanTimeArgs(seps, &year, &month, &day)
case 4:
// YYYY-MM-DD HH
err = scanTimeArgs(seps, &year, &month, &day, &hour)
case 5:
// YYYY-MM-DD HH-MM
err = scanTimeArgs(seps, &year, &month, &day, &hour, &minute)
case 6:
// We don't have fractional seconds part.
// YYYY-MM-DD HH-MM-SS
err = scanTimeArgs(seps, &year, &month, &day, &hour, &minute, &second)
hhmmss = true
default:
// For case like `2020-05-28 23:59:59 00:00:00`, the seps should be > 6, the reluctant parts should be truncated.
seps = seps[:6]
// YYYY-MM-DD HH-MM-SS
ctx.AppendWarning(ErrTruncatedWrongVal.FastGenByArgs("datetime", str))
err = scanTimeArgs(seps, &year, &month, &day, &hour, &minute, &second)
hhmmss = true
}
if err != nil {
if err == io.EOF {
return ZeroDatetime, errors.Trace(ErrWrongValue.GenWithStackByArgs(DateTimeStr, str))
}
return ZeroDatetime, errors.Trace(err)
}
// If str is sepereated by delimiters, the first one is year, and if the year is 1/2 digit,
// we should adjust it.
// TODO: adjust year is very complex, now we only consider the simplest way.
if len(seps[0]) <= 2 && !isFloat {
if !(year == 0 && month == 0 && day == 0 && hour == 0 && minute == 0 && second == 0 && fracStr == "") {
year = adjustYear(year)
}
// Skip a special case "00-00-00".
}
var microsecond int
var overflow bool
if hhmmss {
// If input string is "20170118.999", without hhmmss, fsp is meaningless.
// TODO: this case is not only meaningless, but erroneous, please confirm.
microsecond, overflow, err = ParseFrac(fracStr, fsp)
if err != nil {
return ZeroDatetime, errors.Trace(err)
}
}
tmp, ok := FromDateChecked(year, month, day, hour, minute, second, microsecond)
if !ok {
return ZeroDatetime, errors.Trace(ErrWrongValue.GenWithStackByArgs(DateTimeStr, str))
}
if overflow {
// Convert to Go time and add 1 second, to handle input like 2017-01-05 08:40:59.575601
var t1 gotime.Time
if t1, err = tmp.GoTime(ctx.Location()); err != nil {
return ZeroDatetime, errors.Trace(err)
}
tmp = FromGoTime(t1.Add(gotime.Second))
}
if hasTZ {
// without hhmmss, timezone is also meaningless
if !hhmmss {
return ZeroDatetime, errors.Trace(ErrWrongValue.GenWithStack(DateTimeStr, str))
}
if len(tzHour) != 0 {
deltaHour = int((tzHour[0]-'0')*10 + (tzHour[1] - '0'))
}
if len(tzMinute) != 0 {
deltaMinute = int((tzMinute[0]-'0')*10 + (tzMinute[1] - '0'))
}
// allowed delta range is [-14:00, 14:00], and we will intentionally reject -00:00
if deltaHour > 14 || deltaMinute > 59 || (deltaHour == 14 && deltaMinute != 0) || (tzSign == "-" && deltaHour == 0 && deltaMinute == 0) {
return ZeroDatetime, errors.Trace(ErrWrongValue.GenWithStackByArgs(DateTimeStr, str))
}
// by default, if the temporal string literal does not contain timezone information, it will be in the timezone
// specified by the time_zone system variable. However, if the timezone is specified in the string literal, we
// will use the specified timezone to interpret the string literal and convert it into the system timezone.
offset := deltaHour*60*60 + deltaMinute*60
if tzSign == "-" {
offset = -offset
}
loc := gotime.FixedZone(fmt.Sprintf("UTC%s%s:%s", tzSign, tzHour, tzMinute), offset)
t1, err := tmp.GoTime(loc)
if err != nil {
return ZeroDatetime, errors.Trace(err)
}
t1 = t1.In(ctx.Location())
tmp = FromGoTime(t1)
}
nt := NewTime(tmp, mysql.TypeDatetime, fsp)
return nt, nil
}
func scanTimeArgs(seps []string, args ...*int) error {
if len(seps) != len(args) {
return errors.Trace(ErrWrongValue.GenWithStackByArgs(TimeStr, seps))
}
var err error
for i, s := range seps {
*args[i], err = strconv.Atoi(s)
if err != nil {
return errors.Trace(err)
}
}
return nil
}
// ParseYear parses a formatted string and returns a year number.
func ParseYear(str string) (int16, error) {
v, err := strconv.ParseInt(str, 10, 16)
if err != nil {
return 0, errors.Trace(err)
}
y := int16(v)
if len(str) == 2 || len(str) == 1 {
y = int16(adjustYear(int(y)))
} else if len(str) != 4 {
return 0, errors.Trace(ErrInvalidYearFormat)
}
if y < MinYear || y > MaxYear {
return 0, errors.Trace(ErrInvalidYearFormat)
}
return y, nil
}
// adjustYear adjusts year according to y.
// See https://dev.mysql.com/doc/refman/5.7/en/two-digit-years.html
func adjustYear(y int) int {
if y >= 0 && y <= 69 {
y = 2000 + y
} else if y >= 70 && y <= 99 {
y = 1900 + y
}
return y
}
// AdjustYear is used for adjusting year and checking its validation.
func AdjustYear(y int64, adjustZero bool) (int64, error) {
if y == 0 && !adjustZero {
return y, nil
}
y = int64(adjustYear(int(y)))
if y < 0 {
return 0, errors.Trace(ErrWarnDataOutOfRange)
}
if y < int64(MinYear) {
return int64(MinYear), errors.Trace(ErrWarnDataOutOfRange)
}
if y > int64(MaxYear) {
return int64(MaxYear), errors.Trace(ErrWarnDataOutOfRange)
}
return y, nil
}
// NewDuration construct duration with time.
func NewDuration(hour, minute, second, microsecond int, fsp int) Duration {
return Duration{
Duration: gotime.Duration(hour)*gotime.Hour + gotime.Duration(minute)*gotime.Minute + gotime.Duration(second)*gotime.Second + gotime.Duration(microsecond)*gotime.Microsecond, //nolint:durationcheck
Fsp: fsp,
}
}
// Duration is the type for MySQL TIME type.
type Duration struct {
gotime.Duration
// Fsp is short for Fractional Seconds Precision.
// See http://dev.mysql.com/doc/refman/5.7/en/fractional-seconds.html
Fsp int
}
// MaxMySQLDuration returns Duration with maximum mysql time.
func MaxMySQLDuration(fsp int) Duration {
return NewDuration(TimeMaxHour, TimeMaxMinute, TimeMaxSecond, 0, fsp)
}
// Neg negative d, returns a duration value.
func (d Duration) Neg() Duration {
return Duration{
Duration: -d.Duration,
Fsp: d.Fsp,
}
}
// Add adds d to d, returns a duration value.
func (d Duration) Add(v Duration) (Duration, error) {
if v == (Duration{}) {
return d, nil
}
dsum, err := AddInt64(int64(d.Duration), int64(v.Duration))
if err != nil {
return Duration{}, errors.Trace(err)
}
if d.Fsp >= v.Fsp {
return Duration{Duration: gotime.Duration(dsum), Fsp: d.Fsp}, nil
}
return Duration{Duration: gotime.Duration(dsum), Fsp: v.Fsp}, nil
}
// Sub subtracts d to d, returns a duration value.
func (d Duration) Sub(v Duration) (Duration, error) {
if v == (Duration{}) {
return d, nil
}
dsum, err := SubInt64(int64(d.Duration), int64(v.Duration))
if err != nil {
return Duration{}, errors.Trace(err)
}
if d.Fsp >= v.Fsp {
return Duration{Duration: gotime.Duration(dsum), Fsp: d.Fsp}, nil
}
return Duration{Duration: gotime.Duration(dsum), Fsp: v.Fsp}, nil
}
// DurationFormat returns a textual representation of the duration value formatted
// according to layout.
// See http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_date-format
func (d Duration) DurationFormat(layout string) (string, error) {
var buf bytes.Buffer
inPatternMatch := false
for _, b := range layout {
if inPatternMatch {
if err := d.convertDateFormat(b, &buf); err != nil {
return "", errors.Trace(err)
}
inPatternMatch = false
continue
}
// It's not in pattern match now.
if b == '%' {
inPatternMatch = true
} else {
buf.WriteRune(b)
}
}
return buf.String(), nil
}
func (d Duration) convertDateFormat(b rune, buf *bytes.Buffer) error {
switch b {
case 'H':
buf.WriteString(FormatIntWidthN(d.Hour(), 2))
case 'k':
buf.WriteString(strconv.FormatInt(int64(d.Hour()), 10))
case 'h', 'I':
t := d.Hour()
if t%12 == 0 {
buf.WriteString("12")
} else {
buf.WriteString(FormatIntWidthN(t%12, 2))
}
case 'l':
t := d.Hour()
if t%12 == 0 {
buf.WriteString("12")
} else {
buf.WriteString(strconv.FormatInt(int64(t%12), 10))
}
case 'i':
buf.WriteString(FormatIntWidthN(d.Minute(), 2))
case 'p':
hour := d.Hour()
if hour/12%2 == 0 {
buf.WriteString("AM")
} else {
buf.WriteString("PM")
}
case 'r':
h := d.Hour()
h %= 24
switch {
case h == 0:
fmt.Fprintf(buf, "%02d:%02d:%02d AM", 12, d.Minute(), d.Second())
case h == 12:
fmt.Fprintf(buf, "%02d:%02d:%02d PM", 12, d.Minute(), d.Second())
case h < 12:
fmt.Fprintf(buf, "%02d:%02d:%02d AM", h, d.Minute(), d.Second())
default:
fmt.Fprintf(buf, "%02d:%02d:%02d PM", h-12, d.Minute(), d.Second())
}
case 'T':
fmt.Fprintf(buf, "%02d:%02d:%02d", d.Hour(), d.Minute(), d.Second())
case 'S', 's':
buf.WriteString(FormatIntWidthN(d.Second(), 2))
case 'f':
fmt.Fprintf(buf, "%06d", d.MicroSecond())
default:
buf.WriteRune(b)
}
return nil
}
// String returns the time formatted using default TimeFormat and fsp.
func (d Duration) String() string {
var buf bytes.Buffer
sign, hours, minutes, seconds, fraction := splitDuration(d.Duration)
if sign < 0 {
buf.WriteByte('-')
}
fmt.Fprintf(&buf, "%02d:%02d:%02d", hours, minutes, seconds)
if d.Fsp > 0 {
buf.WriteString(".")
buf.WriteString(d.formatFrac(fraction))
}
p := buf.String()
return p
}
func (d Duration) formatFrac(frac int) string {
s := fmt.Sprintf("%06d", frac)
return s[0:d.Fsp]
}
// ToNumber changes duration to number format.
// e.g,
// 10:10:10 -> 101010
func (d Duration) ToNumber() *MyDecimal {
sign, hours, minutes, seconds, fraction := splitDuration(d.Duration)
var (
s string
signStr string
)
if sign < 0 {
signStr = "-"
}
if d.Fsp == 0 {
s = fmt.Sprintf("%s%02d%02d%02d", signStr, hours, minutes, seconds)
} else {
s = fmt.Sprintf("%s%02d%02d%02d.%s", signStr, hours, minutes, seconds, d.formatFrac(fraction))
}
// We skip checking error here because time formatted string can be parsed certainly.
dec := new(MyDecimal)
err := dec.FromString([]byte(s))
terror.Log(errors.Trace(err))
return dec
}
// ConvertToTime converts duration to Time.
// Tp is TypeDatetime, TypeTimestamp and TypeDate.
func (d Duration) ConvertToTime(ctx Context, tp uint8) (Time, error) {
year, month, day := gotime.Now().In(ctx.Location()).Date()
datePart := FromDate(year, int(month), day, 0, 0, 0, 0)
mixDateAndDuration(&datePart, d)
t := NewTime(datePart, mysql.TypeDatetime, d.Fsp)
return t.Convert(ctx, tp)
}
// ConvertToTimeWithTimestamp converts duration to Time by system timestamp.
// Tp is TypeDatetime, TypeTimestamp and TypeDate.
func (d Duration) ConvertToTimeWithTimestamp(ctx Context, tp uint8, ts gotime.Time) (Time, error) {
year, month, day := ts.In(ctx.Location()).Date()
datePart := FromDate(year, int(month), day, 0, 0, 0, 0)
mixDateAndDuration(&datePart, d)
t := NewTime(datePart, mysql.TypeDatetime, d.Fsp)
return t.Convert(ctx, tp)
}
// ConvertToYear converts duration to Year.
func (d Duration) ConvertToYear(ctx Context) (int64, error) {
return d.ConvertToYearFromNow(ctx, gotime.Now())
}
// ConvertToYearFromNow converts duration to Year, with the `now` specified by the argument.
func (d Duration) ConvertToYearFromNow(ctx Context, now gotime.Time) (int64, error) {
if ctx.Flags().CastTimeToYearThroughConcat() {
// this error will never happen, because we always give a valid FSP
dur, _ := d.RoundFrac(DefaultFsp, ctx.Location())
// the range of a duration will never exceed the range of `mysql.TypeLonglong`
ival, _ := dur.ToNumber().ToInt()
return AdjustYear(ival, false)
}
year, month, day := now.In(ctx.Location()).Date()
datePart := FromDate(year, int(month), day, 0, 0, 0, 0)
mixDateAndDuration(&datePart, d)
return AdjustYear(int64(datePart.Year()), false)
}
// RoundFrac rounds fractional seconds precision with new fsp and returns a new one.
// We will use the “round half up” rule, e.g, >= 0.5 -> 1, < 0.5 -> 0,
// so 10:10:10.999999 round 0 -> 10:10:11
// and 10:10:10.000000 round 0 -> 10:10:10
func (d Duration) RoundFrac(fsp int, loc *gotime.Location) (Duration, error) {
tz := loc
if tz == nil {
logutil.BgLogger().Warn("use gotime.local because sc.timezone is nil")
tz = gotime.Local
}
fsp, err := CheckFsp(fsp)
if err != nil {
return d, errors.Trace(err)
}
if fsp == d.Fsp {
return d, nil
}
n := gotime.Date(0, 0, 0, 0, 0, 0, 0, tz)
nd := n.Add(d.Duration).Round(gotime.Duration(math.Pow10(9-fsp)) * gotime.Nanosecond).Sub(n) //nolint:durationcheck
return Duration{Duration: nd, Fsp: fsp}, nil
}
// Compare returns an integer comparing the Duration instant t to o.
// If d is after o, returns 1, equal o, returns 0, before o, returns -1.
func (d Duration) Compare(o Duration) int {
if d.Duration > o.Duration {
return 1
} else if d.Duration == o.Duration {
return 0
}
return -1
}
// CompareString is like Compare,
// but parses str to Duration then compares.
func (d Duration) CompareString(ctx Context, str string) (int, error) {
// use MaxFsp to parse the string
o, _, err := ParseDuration(ctx, str, MaxFsp)
if err != nil {
return 0, err
}
return d.Compare(o), nil
}
// Hour returns current hour.
// e.g, hour("11:11:11") -> 11
func (d Duration) Hour() int {
_, hour, _, _, _ := splitDuration(d.Duration)
return hour
}
// Minute returns current minute.
// e.g, hour("11:11:11") -> 11
func (d Duration) Minute() int {
_, _, minute, _, _ := splitDuration(d.Duration)
return minute
}
// Second returns current second.
// e.g, hour("11:11:11") -> 11
func (d Duration) Second() int {
_, _, _, second, _ := splitDuration(d.Duration)
return second
}
// MicroSecond returns current microsecond.
// e.g, hour("11:11:11.11") -> 110000
func (d Duration) MicroSecond() int {
_, _, _, _, frac := splitDuration(d.Duration)
return frac
}
func isNegativeDuration(str string) (bool, string) {
rest, err := parser.Char(str, '-')
if err != nil {
return false, str
}
return true, rest
}
func matchColon(str string) (string, error) {
rest := parser.Space0(str)
rest, err := parser.Char(rest, ':')
if err != nil {
return str, err
}
rest = parser.Space0(rest)
return rest, nil
}
func matchDayHHMMSS(str string) (int, [3]int, string, error) {
day, rest, err := parser.Number(str)
if err != nil {
return 0, [3]int{}, str, err
}
rest, err = parser.Space(rest, 1)
if err != nil {
return 0, [3]int{}, str, err
}
hhmmss, rest, err := matchHHMMSSDelimited(rest, false)
if err != nil {
return 0, [3]int{}, str, err
}
return day, hhmmss, rest, nil
}
func matchHHMMSSDelimited(str string, requireColon bool) ([3]int, string, error) {
hhmmss := [3]int{}
hour, rest, err := parser.Number(str)
if err != nil {
return [3]int{}, str, err
}
hhmmss[0] = hour
for i := 1; i < 3; i++ {
remain, err := matchColon(rest)
if err != nil {
if i == 1 && requireColon {
return [3]int{}, str, err
}
break
}
num, remain, err := parser.Number(remain)
if err != nil {
return [3]int{}, str, err
}
hhmmss[i] = num
rest = remain
}
return hhmmss, rest, nil
}
func matchHHMMSSCompact(str string) ([3]int, string, error) {
num, rest, err := parser.Number(str)
if err != nil {
return [3]int{}, str, err
}
hhmmss := [3]int{num / 10000, (num / 100) % 100, num % 100}
return hhmmss, rest, nil
}
func hhmmssAddOverflow(hms []int, overflow bool) {
mod := []int{-1, 60, 60}
for i := 2; i >= 0 && overflow; i-- {
hms[i]++
if hms[i] == mod[i] {
overflow = true
hms[i] = 0
} else {
overflow = false
}
}
}
func checkHHMMSS(hms [3]int) bool {
m, s := hms[1], hms[2]
return m < 60 && s < 60
}
// matchFrac returns overflow, fraction, rest, error
func matchFrac(str string, fsp int) (bool, int, string, error) {
rest, err := parser.Char(str, '.')
if err != nil {
return false, 0, str, nil
}
digits, rest, err := parser.Digit(rest, 0)
if err != nil {
return false, 0, str, err
}
frac, overflow, err := ParseFrac(digits, fsp)
if err != nil {
return false, 0, str, err
}
return overflow, frac, rest, nil
}
func matchDuration(str string, fsp int) (Duration, bool, error) {
fsp, err := CheckFsp(fsp)
if err != nil {
return ZeroDuration, true, errors.Trace(err)
}
if len(str) == 0 {
return ZeroDuration, true, ErrTruncatedWrongVal.GenWithStackByArgs("time", str)
}
negative, rest := isNegativeDuration(str)
rest = parser.Space0(rest)
charsLen := len(rest)
hhmmss := [3]int{}
if day, hms, remain, err := matchDayHHMMSS(rest); err == nil {
hms[0] += 24 * day
rest, hhmmss = remain, hms
} else if hms, remain, err := matchHHMMSSDelimited(rest, true); err == nil {
rest, hhmmss = remain, hms
} else if hms, remain, err := matchHHMMSSCompact(rest); err == nil {
rest, hhmmss = remain, hms
} else {
return ZeroDuration, true, ErrTruncatedWrongVal.GenWithStackByArgs("time", str)
}
rest = parser.Space0(rest)
overflow, frac, rest, err := matchFrac(rest, fsp)
if err != nil || (len(rest) > 0 && charsLen >= 12) {
return ZeroDuration, true, ErrTruncatedWrongVal.GenWithStackByArgs("time", str)
}
if overflow {
hhmmssAddOverflow(hhmmss[:], overflow)
frac = 0
}
if !checkHHMMSS(hhmmss) {
return ZeroDuration, true, ErrTruncatedWrongVal.GenWithStackByArgs("time", str)
}
if hhmmss[0] > TimeMaxHour {
var t gotime.Duration
if negative {
t = MinTime
} else {
t = MaxTime
}
return Duration{t, fsp}, false, ErrTruncatedWrongVal.GenWithStackByArgs("time", str)
}
d := gotime.Duration(hhmmss[0]*3600+hhmmss[1]*60+hhmmss[2])*gotime.Second + gotime.Duration(frac)*gotime.Microsecond //nolint:durationcheck
if negative {
d = -d
}
d, err = TruncateOverflowMySQLTime(d)
if err == nil && len(rest) > 0 {
return Duration{d, fsp}, false, ErrTruncatedWrongVal.GenWithStackByArgs("time", str)
}
return Duration{d, fsp}, false, errors.Trace(err)
}
// canFallbackToDateTime return true
// 1. the string is failed to be parsed by `matchDuration`
// 2. the string is start with a series of digits whose length match the full format of DateTime literal (12, 14)
// or the string start with a date literal.
func canFallbackToDateTime(str string) bool {
digits, rest, err := parser.Digit(str, 1)
if err != nil {
return false
}
if len(digits) == 12 || len(digits) == 14 {
return true
}
rest, err = parser.AnyPunct(rest)
if err != nil {
return false
}
_, rest, err = parser.Digit(rest, 1)
if err != nil {
return false
}
rest, err = parser.AnyPunct(rest)
if err != nil {
return false
}
_, rest, err = parser.Digit(rest, 1)
if err != nil {
return false
}
return len(rest) > 0 && (rest[0] == ' ' || rest[0] == 'T')
}
// ParseDuration parses the time form a formatted string with a fractional seconds part,
// returns the duration type Time value and bool to indicate whether the result is null.
// See http://dev.mysql.com/doc/refman/5.7/en/fractional-seconds.html
func ParseDuration(ctx Context, str string, fsp int) (Duration, bool, error) {
rest := strings.TrimSpace(str)
d, isNull, err := matchDuration(rest, fsp)
if err == nil {
return d, isNull, nil
}
if !canFallbackToDateTime(rest) {
return d, isNull, ErrTruncatedWrongVal.GenWithStackByArgs("time", str)
}
datetime, err := ParseDatetime(ctx, rest)
if err != nil {
return ZeroDuration, true, ErrTruncatedWrongVal.GenWithStackByArgs("time", str)
}
d, err = datetime.ConvertToDuration()
if err != nil {
return ZeroDuration, true, ErrTruncatedWrongVal.GenWithStackByArgs("time", str)
}
d, err = d.RoundFrac(fsp, ctx.Location())
return d, false, err
}
// TruncateOverflowMySQLTime truncates d when it overflows, and returns ErrTruncatedWrongVal.
func TruncateOverflowMySQLTime(d gotime.Duration) (gotime.Duration, error) {
if d > MaxTime {
return MaxTime, ErrTruncatedWrongVal.GenWithStackByArgs("time", d)
} else if d < MinTime {
return MinTime, ErrTruncatedWrongVal.GenWithStackByArgs("time", d)
}
return d, nil
}
func splitDuration(t gotime.Duration) (sign int, hours int, minutes int, seconds int, fraction int) {
sign = 1
if t < 0 {
t = -t
sign = -1
}
hoursDuration := t / gotime.Hour
t -= hoursDuration * gotime.Hour //nolint:durationcheck
minutesDuration := t / gotime.Minute
t -= minutesDuration * gotime.Minute //nolint:durationcheck
secondsDuration := t / gotime.Second
t -= secondsDuration * gotime.Second //nolint:durationcheck
fractionDuration := t / gotime.Microsecond
return sign, int(hoursDuration), int(minutesDuration), int(secondsDuration), int(fractionDuration)
}
var maxDaysInMonth = []int{31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
func getTime(ctx Context, num, originNum int64, tp byte) (Time, error) {
s1 := num / 1000000
s2 := num - s1*1000000
year := int(s1 / 10000)
s1 %= 10000
month := int(s1 / 100)
day := int(s1 % 100)
hour := int(s2 / 10000)
s2 %= 10000
minute := int(s2 / 100)
second := int(s2 % 100)
ct, ok := FromDateChecked(year, month, day, hour, minute, second, 0)
if !ok {
numStr := strconv.FormatInt(originNum, 10)
return ZeroDatetime, errors.Trace(ErrWrongValue.GenWithStackByArgs(TimeStr, numStr))
}
t := NewTime(ct, tp, DefaultFsp)
err := t.Check(ctx)
return t, errors.Trace(err)
}
// parseDateTimeFromNum parses date time from num.
// See number_to_datetime function.
// https://github.com/mysql/mysql-server/blob/5.7/sql-common/my_time.c
func parseDateTimeFromNum(ctx Context, num int64) (Time, error) {
t := ZeroDate
// Check zero.
if num == 0 {
return t, nil
}
originNum := num
// Check datetime type.
if num >= 10000101000000 {
t.SetType(mysql.TypeDatetime)
return getTime(ctx, num, originNum, t.Type())
}
// Check MMDD.
if num < 101 {
return t, errors.Trace(ErrWrongValue.GenWithStackByArgs(TimeStr, strconv.FormatInt(num, 10)))
}
// Adjust year
// YYMMDD, year: 2000-2069
if num <= (70-1)*10000+1231 {
num = (num + 20000000) * 1000000
return getTime(ctx, num, originNum, t.Type())
}
// Check YYMMDD.
if num < 70*10000+101 {
return t, errors.Trace(ErrWrongValue.GenWithStackByArgs(TimeStr, strconv.FormatInt(num, 10)))
}
// Adjust year
// YYMMDD, year: 1970-1999
if num <= 991231 {
num = (num + 19000000) * 1000000
return getTime(ctx, num, originNum, t.Type())
}
// Adjust hour/min/second.
if num <= 99991231 {
num = num * 1000000
return getTime(ctx, num, originNum, t.Type())
}
// Check MMDDHHMMSS.
if num < 101000000 {
return t, errors.Trace(ErrWrongValue.GenWithStackByArgs(TimeStr, strconv.FormatInt(num, 10)))
}
// Set TypeDatetime type.
t.SetType(mysql.TypeDatetime)
// Adjust year
// YYMMDDHHMMSS, 2000-2069
if num <= 69*10000000000+1231235959 {
num = num + 20000000000000
return getTime(ctx, num, originNum, t.Type())
}
// Check YYYYMMDDHHMMSS.
if num < 70*10000000000+101000000 {
return t, errors.Trace(ErrWrongValue.GenWithStackByArgs(TimeStr, strconv.FormatInt(num, 10)))
}
// Adjust year
// YYMMDDHHMMSS, 1970-1999
if num <= 991231235959 {
num = num + 19000000000000
return getTime(ctx, num, originNum, t.Type())
}
return getTime(ctx, num, originNum, t.Type())
}
// ParseTime parses a formatted string with type tp and specific fsp.
// Type is TypeDatetime, TypeTimestamp and TypeDate.
// Fsp is in range [0, 6].
// MySQL supports many valid datetime format, but still has some limitation.
// If delimiter exists, the date part and time part is separated by a space or T,
// other punctuation character can be used as the delimiter between date parts or time parts.
// If no delimiter, the format must be YYYYMMDDHHMMSS or YYMMDDHHMMSS
// If we have fractional seconds part, we must use decimal points as the delimiter.
// The valid datetime range is from '1000-01-01 00:00:00.000000' to '9999-12-31 23:59:59.999999'.
// The valid timestamp range is from '1970-01-01 00:00:01.000000' to '2038-01-19 03:14:07.999999'.
// The valid date range is from '1000-01-01' to '9999-12-31'
// explicitTz is used to handle a data race of timeZone, refer to https://github.com/pingcap/tidb/issues/40710. It only works for timestamp now, be careful to use it!
func ParseTime(ctx Context, str string, tp byte, fsp int) (Time, error) {
return parseTime(ctx, str, tp, fsp, false)
}
// ParseTimeFromFloatString is similar to ParseTime, except that it's used to parse a float converted string.
func ParseTimeFromFloatString(ctx Context, str string, tp byte, fsp int) (Time, error) {
// MySQL compatibility: 0.0 should not be converted to null, see #11203
if len(str) >= 3 && str[:3] == "0.0" {
return NewTime(ZeroCoreTime, tp, DefaultFsp), nil
}
return parseTime(ctx, str, tp, fsp, true)
}
func parseTime(ctx Context, str string, tp byte, fsp int, isFloat bool) (Time, error) {
fsp, err := CheckFsp(fsp)
if err != nil {
return NewTime(ZeroCoreTime, tp, DefaultFsp), errors.Trace(err)
}
t, err := parseDatetime(ctx, str, fsp, isFloat)
if err != nil {
return NewTime(ZeroCoreTime, tp, DefaultFsp), errors.Trace(err)
}
t.SetType(tp)
if err = t.Check(ctx); err != nil {
if tp == mysql.TypeTimestamp && !t.IsZero() {
tAdjusted, errAdjusted := adjustTimestampErrForDST(ctx.Location(), str, tp, t, err)
if ErrTimestampInDSTTransition.Equal(errAdjusted) {
return tAdjusted, errors.Trace(errAdjusted)
}
}
return NewTime(ZeroCoreTime, tp, DefaultFsp), errors.Trace(err)
}
return t, nil
}
func adjustTimestampErrForDST(loc *gotime.Location, str string, tp byte, t Time, err error) (Time, error) {
if tp != mysql.TypeTimestamp || t.IsZero() {
return t, err
}
minTS, maxTS := MinTimestamp, MaxTimestamp
minErr := minTS.ConvertTimeZone(gotime.UTC, loc)
maxErr := maxTS.ConvertTimeZone(gotime.UTC, loc)
if minErr == nil && maxErr == nil &&
t.Compare(minTS) > 0 && t.Compare(maxTS) < 0 {
// Handle the case when the timestamp given is in the DST transition
if tAdjusted, err2 := t.AdjustedGoTime(loc); err2 == nil {
t.SetCoreTime(FromGoTime(tAdjusted))
return t, errors.Trace(ErrTimestampInDSTTransition.GenWithStackByArgs(str, loc.String()))
}
}
return t, err
}
// ParseDatetime is a helper function wrapping ParseTime with datetime type and default fsp.
func ParseDatetime(ctx Context, str string) (Time, error) {
return ParseTime(ctx, str, mysql.TypeDatetime, GetFsp(str))
}
// ParseTimestamp is a helper function wrapping ParseTime with timestamp type and default fsp.
func ParseTimestamp(ctx Context, str string) (Time, error) {
return ParseTime(ctx, str, mysql.TypeTimestamp, GetFsp(str))
}
// ParseDate is a helper function wrapping ParseTime with date type.
func ParseDate(ctx Context, str string) (Time, error) {
// date has no fractional seconds precision
return ParseTime(ctx, str, mysql.TypeDate, MinFsp)
}
// ParseTimeFromYear parse a `YYYY` formed year to corresponded Datetime type.
// Note: the invoker must promise the `year` is in the range [MinYear, MaxYear].
func ParseTimeFromYear(year int64) (Time, error) {
if year == 0 {
return NewTime(ZeroCoreTime, mysql.TypeDate, DefaultFsp), nil
}
dt := FromDate(int(year), 0, 0, 0, 0, 0, 0)
return NewTime(dt, mysql.TypeDatetime, DefaultFsp), nil
}
// ParseTimeFromNum parses a formatted int64,
// returns the value which type is tp.
func ParseTimeFromNum(ctx Context, num int64, tp byte, fsp int) (Time, error) {
// MySQL compatibility: 0 should not be converted to null, see #11203
if num == 0 {
zt := NewTime(ZeroCoreTime, tp, DefaultFsp)
if !ctx.Flags().IgnoreZeroDateErr() {
switch tp {
case mysql.TypeTimestamp:
return zt, ErrTruncatedWrongVal.GenWithStackByArgs(TimestampStr, "0")
case mysql.TypeDate:
return zt, ErrTruncatedWrongVal.GenWithStackByArgs(DateStr, "0")
case mysql.TypeDatetime:
return zt, ErrTruncatedWrongVal.GenWithStackByArgs(DateTimeStr, "0")
}
}
return zt, nil
}
fsp, err := CheckFsp(fsp)
if err != nil {
return NewTime(ZeroCoreTime, tp, DefaultFsp), errors.Trace(err)
}
t, err := parseDateTimeFromNum(ctx, num)
if err != nil {
return NewTime(ZeroCoreTime, tp, DefaultFsp), errors.Trace(err)
}
t.SetType(tp)
t.SetFsp(fsp)
if err := t.Check(ctx); err != nil {
return NewTime(ZeroCoreTime, tp, DefaultFsp), errors.Trace(err)
}
return t, nil
}
// ParseDatetimeFromNum is a helper function wrapping ParseTimeFromNum with datetime type and default fsp.
func ParseDatetimeFromNum(ctx Context, num int64) (Time, error) {
return ParseTimeFromNum(ctx, num, mysql.TypeDatetime, DefaultFsp)
}
// ParseTimestampFromNum is a helper function wrapping ParseTimeFromNum with timestamp type and default fsp.
func ParseTimestampFromNum(ctx Context, num int64) (Time, error) {
return ParseTimeFromNum(ctx, num, mysql.TypeTimestamp, DefaultFsp)
}
// ParseDateFromNum is a helper function wrapping ParseTimeFromNum with date type.
func ParseDateFromNum(ctx Context, num int64) (Time, error) {
// date has no fractional seconds precision
return ParseTimeFromNum(ctx, num, mysql.TypeDate, MinFsp)
}
// TimeFromDays Converts a day number to a date.
func TimeFromDays(num int64) Time {
if num < 0 {
return NewTime(FromDate(0, 0, 0, 0, 0, 0, 0), mysql.TypeDate, 0)
}
year, month, day := getDateFromDaynr(uint(num))
ct, ok := FromDateChecked(int(year), int(month), int(day), 0, 0, 0, 0)
if !ok {
return NewTime(FromDate(0, 0, 0, 0, 0, 0, 0), mysql.TypeDate, 0)
}
return NewTime(ct, mysql.TypeDate, 0)
}
func checkDateType(t CoreTime, allowZeroInDate, allowInvalidDate bool) error {
year, month, day := t.Year(), t.Month(), t.Day()
if year == 0 && month == 0 && day == 0 {
return nil
}
if !allowZeroInDate && (month == 0 || day == 0) {
return ErrWrongValue.GenWithStackByArgs(DateTimeStr, fmt.Sprintf("%04d-%02d-%02d", year, month, day))
}
if err := checkDateRange(t); err != nil {
return errors.Trace(err)
}
if err := checkMonthDay(year, month, day, allowInvalidDate); err != nil {
return errors.Trace(err)
}
return nil
}
func checkDateRange(t CoreTime) error {
// Oddly enough, MySQL document says date range should larger than '1000-01-01',
// but we can insert '0001-01-01' actually.
if t.Year() < 0 || t.Month() < 0 || t.Day() < 0 {
return errors.Trace(ErrWrongValue.GenWithStackByArgs(TimeStr, t))
}
if compareTime(t, MaxDatetime) > 0 {
return errors.Trace(ErrWrongValue.GenWithStackByArgs(TimeStr, t))
}
return nil
}
func checkMonthDay(year, month, day int, allowInvalidDate bool) error {
if month < 0 || month > 12 {
return errors.Trace(ErrWrongValue.GenWithStackByArgs(DateTimeStr, fmt.Sprintf("%d-%d-%d", year, month, day)))
}
maxDay := 31
if !allowInvalidDate {
if month > 0 {
maxDay = maxDaysInMonth[month-1]
}
if month == 2 && !isLeapYear(uint16(year)) {
maxDay = 28
}
}
if day < 0 || day > maxDay {
return errors.Trace(ErrWrongValue.GenWithStackByArgs(DateTimeStr, fmt.Sprintf("%d-%d-%d", year, month, day)))
}
return nil
}
func checkTimestampType(t CoreTime, tz *gotime.Location) error {
if compareTime(t, ZeroCoreTime) == 0 {
return nil
}
var checkTime CoreTime
if tz != BoundTimezone {
convertTime := NewTime(t, mysql.TypeTimestamp, DefaultFsp)
err := convertTime.ConvertTimeZone(tz, BoundTimezone)
if err != nil {
_, err2 := adjustTimestampErrForDST(tz, t.String(), mysql.TypeTimestamp, Time{t}, err)
return err2
}
checkTime = convertTime.coreTime
} else {
checkTime = t
}
if compareTime(checkTime, MaxTimestamp.coreTime) > 0 || compareTime(checkTime, MinTimestamp.coreTime) < 0 {
return errors.Trace(ErrWrongValue.GenWithStackByArgs(TimeStr, t))
}
if _, err := t.GoTime(tz); err != nil {
return errors.Trace(err)
}
return nil
}
func checkDatetimeType(t CoreTime, allowZeroInDate, allowInvalidDate bool) error {
if err := checkDateType(t, allowZeroInDate, allowInvalidDate); err != nil {
return errors.Trace(err)
}
hour, minute, second := t.Hour(), t.Minute(), t.Second()
if hour < 0 || hour >= 24 {
return errors.Trace(ErrWrongValue.GenWithStackByArgs(TimeStr, strconv.Itoa(hour)))
}
if minute < 0 || minute >= 60 {
return errors.Trace(ErrWrongValue.GenWithStackByArgs(TimeStr, strconv.Itoa(minute)))
}
if second < 0 || second >= 60 {
return errors.Trace(ErrWrongValue.GenWithStackByArgs(TimeStr, strconv.Itoa(second)))
}
return nil
}
// ExtractDatetimeNum extracts time value number from datetime unit and format.
func ExtractDatetimeNum(t *Time, unit string) (int64, error) {
// TODO: Consider time_zone variable.
switch strings.ToUpper(unit) {
case "DAY":
return int64(t.Day()), nil
case "WEEK":
week := t.Week(0)
return int64(week), nil
case "MONTH":
return int64(t.Month()), nil
case "QUARTER":
m := int64(t.Month())
// 1 - 3 -> 1
// 4 - 6 -> 2
// 7 - 9 -> 3
// 10 - 12 -> 4
return (m + 2) / 3, nil
case "YEAR":
return int64(t.Year()), nil
case "DAY_MICROSECOND":
h, m, s := t.Clock()
d := t.Day()
return int64(d*1000000+h*10000+m*100+s)*1000000 + int64(t.Microsecond()), nil
case "DAY_SECOND":
h, m, s := t.Clock()
d := t.Day()
return int64(d)*1000000 + int64(h)*10000 + int64(m)*100 + int64(s), nil
case "DAY_MINUTE":
h, m, _ := t.Clock()
d := t.Day()
return int64(d)*10000 + int64(h)*100 + int64(m), nil
case "DAY_HOUR":
h, _, _ := t.Clock()
d := t.Day()
return int64(d)*100 + int64(h), nil
case "YEAR_MONTH":
y, m := t.Year(), t.Month()
return int64(y)*100 + int64(m), nil
default:
return 0, errors.Errorf("invalid unit %s", unit)
}
}
// ExtractDurationNum extracts duration value number from duration unit and format.
func ExtractDurationNum(d *Duration, unit string) (res int64, err error) {
switch strings.ToUpper(unit) {
case "MICROSECOND":
res = int64(d.MicroSecond())
case "SECOND":
res = int64(d.Second())
case "MINUTE":
res = int64(d.Minute())
case "HOUR":
res = int64(d.Hour())
case "SECOND_MICROSECOND":
res = int64(d.Second())*1000000 + int64(d.MicroSecond())
case "MINUTE_MICROSECOND":
res = int64(d.Minute())*100000000 + int64(d.Second())*1000000 + int64(d.MicroSecond())
case "MINUTE_SECOND":
res = int64(d.Minute()*100 + d.Second())
case "HOUR_MICROSECOND":
res = int64(d.Hour())*10000000000 + int64(d.Minute())*100000000 + int64(d.Second())*1000000 + int64(d.MicroSecond())
case "HOUR_SECOND":
res = int64(d.Hour())*10000 + int64(d.Minute())*100 + int64(d.Second())
case "HOUR_MINUTE":
res = int64(d.Hour())*100 + int64(d.Minute())
case "DAY_MICROSECOND":
res = int64(d.Hour()*10000+d.Minute()*100+d.Second())*1000000 + int64(d.MicroSecond())
case "DAY_SECOND":
res = int64(d.Hour())*10000 + int64(d.Minute())*100 + int64(d.Second())
case "DAY_MINUTE":
res = int64(d.Hour())*100 + int64(d.Minute())
case "DAY_HOUR":
res = int64(d.Hour())
default:
return 0, errors.Errorf("invalid unit %s", unit)
}
if d.Duration < 0 {
res = -res
}
return res, nil
}
// parseSingleTimeValue parse the format according the given unit. If we set strictCheck true, we'll check whether
// the converted value not exceed the range of MySQL's TIME type.
// The returned values are year, month, day, nanosecond and fsp.
func parseSingleTimeValue(unit string, format string, strictCheck bool) (year int64, month int64, day int64, nanosecond int64, fsp int, err error) {
// Format is a preformatted number, it format should be A[.[B]].
decimalPointPos := strings.IndexRune(format, '.')
if decimalPointPos == -1 {
decimalPointPos = len(format)
}
sign := int64(1)
if len(format) > 0 && format[0] == '-' {
sign = int64(-1)
}
// We should also continue even if an error occurs here
// because the called may ignore the error and use the return value.
iv, err := strconv.ParseInt(format[0:decimalPointPos], 10, 64)
if err != nil {
err = ErrWrongValue.GenWithStackByArgs(DateTimeStr, format)
}
riv := iv // Rounded integer value
decimalLen := 0
dv := int64(0)
lf := len(format) - 1
// Has fraction part
if decimalPointPos < lf {
var tmpErr error
dvPre := oneToSixDigitRegex.FindString(format[decimalPointPos+1:]) // the numberical prefix of the fraction part
decimalLen = len(dvPre)
if decimalLen >= 6 {
// MySQL rounds down to 1e-6.
if dv, tmpErr = strconv.ParseInt(dvPre[0:6], 10, 64); tmpErr != nil && err == nil {
err = ErrWrongValue.GenWithStackByArgs(DateTimeStr, format)
}
} else {
if dv, tmpErr = strconv.ParseInt(dvPre+"000000"[:6-decimalLen], 10, 64); tmpErr != nil && err == nil {
err = ErrWrongValue.GenWithStackByArgs(DateTimeStr, format)
}
}
if dv >= 500000 { // Round up, and we should keep 6 digits for microsecond, so dv should in [000000, 999999].
riv += sign
}
if unit != "SECOND" && err == nil {
err = ErrTruncatedWrongVal.GenWithStackByArgs(format)
}
dv *= sign
}
switch strings.ToUpper(unit) {
case "MICROSECOND":
if strictCheck && mathutil.Abs(riv) > TimeMaxValueSeconds*1000 {
return 0, 0, 0, 0, 0, ErrDatetimeFunctionOverflow.GenWithStackByArgs("time")
}
dayCount := riv / int64(GoDurationDay/gotime.Microsecond)
riv %= int64(GoDurationDay / gotime.Microsecond)
return 0, 0, dayCount, riv * int64(gotime.Microsecond), MaxFsp, err
case "SECOND":
if strictCheck && mathutil.Abs(iv) > TimeMaxValueSeconds {
return 0, 0, 0, 0, 0, ErrDatetimeFunctionOverflow.GenWithStackByArgs("time")
}
dayCount := iv / int64(GoDurationDay/gotime.Second)
iv %= int64(GoDurationDay / gotime.Second)
return 0, 0, dayCount, iv*int64(gotime.Second) + dv*int64(gotime.Microsecond), decimalLen, err
case "MINUTE":
if strictCheck && mathutil.Abs(riv) > TimeMaxHour*60+TimeMaxMinute {
return 0, 0, 0, 0, 0, ErrDatetimeFunctionOverflow.GenWithStackByArgs("time")
}
dayCount := riv / int64(GoDurationDay/gotime.Minute)
riv %= int64(GoDurationDay / gotime.Minute)
return 0, 0, dayCount, riv * int64(gotime.Minute), 0, err
case "HOUR":
if strictCheck && mathutil.Abs(riv) > TimeMaxHour {
return 0, 0, 0, 0, 0, ErrDatetimeFunctionOverflow.GenWithStackByArgs("time")
}
dayCount := riv / 24
riv %= 24
return 0, 0, dayCount, riv * int64(gotime.Hour), 0, err
case "DAY":
if strictCheck && mathutil.Abs(riv) > TimeMaxHour/24 {
return 0, 0, 0, 0, 0, ErrDatetimeFunctionOverflow.GenWithStackByArgs("time")
}
return 0, 0, riv, 0, 0, err
case "WEEK":
if strictCheck && 7*mathutil.Abs(riv) > TimeMaxHour/24 {
return 0, 0, 0, 0, 0, ErrDatetimeFunctionOverflow.GenWithStackByArgs("time")
}
return 0, 0, 7 * riv, 0, 0, err
case "MONTH":
if strictCheck && mathutil.Abs(riv) > 1 {
return 0, 0, 0, 0, 0, ErrDatetimeFunctionOverflow.GenWithStackByArgs("time")
}
return 0, riv, 0, 0, 0, err
case "QUARTER":
if strictCheck {
return 0, 0, 0, 0, 0, ErrDatetimeFunctionOverflow.GenWithStackByArgs("time")
}
return 0, 3 * riv, 0, 0, 0, err
case "YEAR":
if strictCheck {
return 0, 0, 0, 0, 0, ErrDatetimeFunctionOverflow.GenWithStackByArgs("time")
}
return riv, 0, 0, 0, 0, err
}
return 0, 0, 0, 0, 0, errors.Errorf("invalid singel timeunit - %s", unit)
}
// parseTimeValue gets years, months, days, nanoseconds and fsp from a string
// nanosecond will not exceed length of single day
// MySQL permits any punctuation delimiter in the expr format.
// See https://dev.mysql.com/doc/refman/8.0/en/expressions.html#temporal-intervals
func parseTimeValue(format string, index, cnt int) (years int64, months int64, days int64, nanoseconds int64, fsp int, err error) {
neg := false
originalFmt := format
fsp = map[bool]int{true: MaxFsp, false: MinFsp}[index == MicrosecondIndex]
format = strings.TrimSpace(format)
if len(format) > 0 && format[0] == '-' {
neg = true
format = format[1:]
}
fields := make([]string, TimeValueCnt)
for i := range fields {
fields[i] = "0"
}
matches := numericRegex.FindAllString(format, -1)
if len(matches) > cnt {
return 0, 0, 0, 0, 0, ErrWrongValue.GenWithStackByArgs(DateTimeStr, originalFmt)
}
for i := range matches {
if neg {
fields[index] = "-" + matches[len(matches)-1-i]
} else {
fields[index] = matches[len(matches)-1-i]
}
index--
}
// ParseInt may return an error when overflowed, but we should continue to parse the rest of the string because
// the caller may ignore the error and use the return value.
// In this case, we should return a big value to make sure the result date after adding this interval
// is also overflowed and NULL is returned to the user.
years, err = strconv.ParseInt(fields[YearIndex], 10, 64)
if err != nil {
err = ErrWrongValue.GenWithStackByArgs(DateTimeStr, originalFmt)
}
var tmpErr error
months, tmpErr = strconv.ParseInt(fields[MonthIndex], 10, 64)
if err == nil && tmpErr != nil {
err = ErrWrongValue.GenWithStackByArgs(DateTimeStr, originalFmt)
}
days, tmpErr = strconv.ParseInt(fields[DayIndex], 10, 64)
if err == nil && tmpErr != nil {
err = ErrWrongValue.GenWithStackByArgs(DateTimeStr, originalFmt)
}
hours, tmpErr := strconv.ParseInt(fields[HourIndex], 10, 64)
if tmpErr != nil && err == nil {
err = ErrWrongValue.GenWithStackByArgs(DateTimeStr, originalFmt)
}
minutes, tmpErr := strconv.ParseInt(fields[MinuteIndex], 10, 64)
if tmpErr != nil && err == nil {
err = ErrWrongValue.GenWithStackByArgs(DateTimeStr, originalFmt)
}
seconds, tmpErr := strconv.ParseInt(fields[SecondIndex], 10, 64)
if tmpErr != nil && err == nil {
err = ErrWrongValue.GenWithStackByArgs(DateTimeStr, originalFmt)
}
microseconds, tmpErr := strconv.ParseInt(alignFrac(fields[MicrosecondIndex], MaxFsp), 10, 64)
if tmpErr != nil && err == nil {
err = ErrWrongValue.GenWithStackByArgs(DateTimeStr, originalFmt)
}
seconds = hours*3600 + minutes*60 + seconds
days += seconds / (3600 * 24)
seconds %= 3600 * 24
return years, months, days, seconds*int64(gotime.Second) + microseconds*int64(gotime.Microsecond), fsp, err
}
func parseAndValidateDurationValue(format string, index, cnt int) (int64, int, error) {
year, month, day, nano, fsp, err := parseTimeValue(format, index, cnt)
if err != nil {
return 0, 0, err
}
if year != 0 || month != 0 || mathutil.Abs(day) > TimeMaxHour/24 {
return 0, 0, ErrDatetimeFunctionOverflow.GenWithStackByArgs("time")
}
dur := day*int64(GoDurationDay) + nano
if mathutil.Abs(dur) > int64(MaxTime) {
return 0, 0, ErrDatetimeFunctionOverflow.GenWithStackByArgs("time")
}
return dur, fsp, nil
}
// ParseDurationValue parses time value from time unit and format.
// Returns y years m months d days + n nanoseconds
// Nanoseconds will no longer than one day.
func ParseDurationValue(unit string, format string) (y int64, m int64, d int64, n int64, fsp int, _ error) {
switch strings.ToUpper(unit) {
case "MICROSECOND", "SECOND", "MINUTE", "HOUR", "DAY", "WEEK", "MONTH", "QUARTER", "YEAR":
return parseSingleTimeValue(unit, format, false)
case "SECOND_MICROSECOND":
return parseTimeValue(format, MicrosecondIndex, SecondMicrosecondMaxCnt)
case "MINUTE_MICROSECOND":
return parseTimeValue(format, MicrosecondIndex, MinuteMicrosecondMaxCnt)
case "MINUTE_SECOND":
return parseTimeValue(format, SecondIndex, MinuteSecondMaxCnt)
case "HOUR_MICROSECOND":
return parseTimeValue(format, MicrosecondIndex, HourMicrosecondMaxCnt)
case "HOUR_SECOND":
return parseTimeValue(format, SecondIndex, HourSecondMaxCnt)
case "HOUR_MINUTE":
return parseTimeValue(format, MinuteIndex, HourMinuteMaxCnt)
case "DAY_MICROSECOND":
return parseTimeValue(format, MicrosecondIndex, DayMicrosecondMaxCnt)
case "DAY_SECOND":
return parseTimeValue(format, SecondIndex, DaySecondMaxCnt)
case "DAY_MINUTE":
return parseTimeValue(format, MinuteIndex, DayMinuteMaxCnt)
case "DAY_HOUR":
return parseTimeValue(format, HourIndex, DayHourMaxCnt)
case "YEAR_MONTH":
return parseTimeValue(format, MonthIndex, YearMonthMaxCnt)
default:
return 0, 0, 0, 0, 0, errors.Errorf("invalid single timeunit - %s", unit)
}
}
// ExtractDurationValue extract the value from format to Duration.
func ExtractDurationValue(unit string, format string) (Duration, error) {
unit = strings.ToUpper(unit)
switch unit {
case "MICROSECOND", "SECOND", "MINUTE", "HOUR", "DAY", "WEEK", "MONTH", "QUARTER", "YEAR":
_, month, day, nano, fsp, err := parseSingleTimeValue(unit, format, true)
if err != nil {
return ZeroDuration, err
}
dur := Duration{Duration: gotime.Duration((month*30+day)*int64(GoDurationDay) + nano), Fsp: fsp}
return dur, err
case "SECOND_MICROSECOND":
d, fsp, err := parseAndValidateDurationValue(format, MicrosecondIndex, SecondMicrosecondMaxCnt)
if err != nil {
return ZeroDuration, err
}
return Duration{Duration: gotime.Duration(d), Fsp: fsp}, nil
case "MINUTE_MICROSECOND":
d, fsp, err := parseAndValidateDurationValue(format, MicrosecondIndex, MinuteMicrosecondMaxCnt)
if err != nil {
return ZeroDuration, err
}
return Duration{Duration: gotime.Duration(d), Fsp: fsp}, nil
case "MINUTE_SECOND":
d, fsp, err := parseAndValidateDurationValue(format, SecondIndex, MinuteSecondMaxCnt)
if err != nil {
return ZeroDuration, err
}
return Duration{Duration: gotime.Duration(d), Fsp: fsp}, nil
case "HOUR_MICROSECOND":
d, fsp, err := parseAndValidateDurationValue(format, MicrosecondIndex, HourMicrosecondMaxCnt)
if err != nil {
return ZeroDuration, err
}
return Duration{Duration: gotime.Duration(d), Fsp: fsp}, nil
case "HOUR_SECOND":
d, fsp, err := parseAndValidateDurationValue(format, SecondIndex, HourSecondMaxCnt)
if err != nil {
return ZeroDuration, err
}
return Duration{Duration: gotime.Duration(d), Fsp: fsp}, nil
case "HOUR_MINUTE":
d, fsp, err := parseAndValidateDurationValue(format, MinuteIndex, HourMinuteMaxCnt)
if err != nil {
return ZeroDuration, err
}
return Duration{Duration: gotime.Duration(d), Fsp: fsp}, nil
case "DAY_MICROSECOND":
d, fsp, err := parseAndValidateDurationValue(format, MicrosecondIndex, DayMicrosecondMaxCnt)
if err != nil {
return ZeroDuration, err
}
return Duration{Duration: gotime.Duration(d), Fsp: fsp}, nil
case "DAY_SECOND":
d, fsp, err := parseAndValidateDurationValue(format, SecondIndex, DaySecondMaxCnt)
if err != nil {
return ZeroDuration, err
}
return Duration{Duration: gotime.Duration(d), Fsp: fsp}, nil
case "DAY_MINUTE":
d, fsp, err := parseAndValidateDurationValue(format, MinuteIndex, DayMinuteMaxCnt)
if err != nil {
return ZeroDuration, err
}
return Duration{Duration: gotime.Duration(d), Fsp: fsp}, nil
case "DAY_HOUR":
d, fsp, err := parseAndValidateDurationValue(format, HourIndex, DayHourMaxCnt)
if err != nil {
return ZeroDuration, err
}
return Duration{Duration: gotime.Duration(d), Fsp: fsp}, nil
case "YEAR_MONTH":
_, _, err := parseAndValidateDurationValue(format, MonthIndex, YearMonthMaxCnt)
if err != nil {
return ZeroDuration, err
}
// MONTH must exceed the limit of mysql's duration. So just returns overflow error.
return ZeroDuration, ErrDatetimeFunctionOverflow.GenWithStackByArgs("time")
default:
return ZeroDuration, errors.Errorf("invalid single timeunit - %s", unit)
}
}
// IsClockUnit returns true when unit is interval unit with hour, minute, second or microsecond.
func IsClockUnit(unit string) bool {
switch strings.ToUpper(unit) {
case "MICROSECOND", "SECOND", "MINUTE", "HOUR",
"SECOND_MICROSECOND", "MINUTE_MICROSECOND", "HOUR_MICROSECOND", "DAY_MICROSECOND",
"MINUTE_SECOND", "HOUR_SECOND", "DAY_SECOND",
"HOUR_MINUTE", "DAY_MINUTE",
"DAY_HOUR":
return true
default:
return false
}
}
// IsDateUnit returns true when unit is interval unit with year, quarter, month, week or day.
func IsDateUnit(unit string) bool {
switch strings.ToUpper(unit) {
case "DAY", "WEEK", "MONTH", "QUARTER", "YEAR",
"DAY_MICROSECOND", "DAY_SECOND", "DAY_MINUTE", "DAY_HOUR",
"YEAR_MONTH":
return true
default:
return false
}
}
// IsMicrosecondUnit returns true when unit is interval unit with microsecond.
func IsMicrosecondUnit(unit string) bool {
switch strings.ToUpper(unit) {
case "MICROSECOND", "SECOND_MICROSECOND", "MINUTE_MICROSECOND", "HOUR_MICROSECOND", "DAY_MICROSECOND":
return true
default:
return false
}
}
// IsDateFormat returns true when the specified time format could contain only date.
func IsDateFormat(format string) bool {
format = strings.TrimSpace(format)
seps := ParseDateFormat(format)
length := len(format)
switch len(seps) {
case 1:
// "20129" will be parsed to 2020-12-09, which is date format.
if (length == 8) || (length == 6) || (length == 5) {
return true
}
case 3:
return true
}
return false
}
// ParseTimeFromInt64 parses mysql time value from int64.
func ParseTimeFromInt64(ctx Context, num int64) (Time, error) {
return parseDateTimeFromNum(ctx, num)
}
// ParseTimeFromFloat64 parses mysql time value from float64.
// It is used in scenarios that distinguish date and datetime, e.g., date_add/sub() with first argument being real.
// For example, 20010203 parses to date (no HMS) and 20010203040506 parses to datetime (with HMS).
func ParseTimeFromFloat64(ctx Context, f float64) (Time, error) {
intPart := int64(f)
t, err := parseDateTimeFromNum(ctx, intPart)
if err != nil {
return ZeroTime, err
}
if t.Type() == mysql.TypeDatetime {
// US part is only kept when the integral part is recognized as datetime.
fracPart := uint32(math.Round((f - float64(intPart)) * 1000000.0))
ct := t.CoreTime()
ct.setMicrosecond(fracPart)
t.SetCoreTime(ct)
}
return t, err
}
// ParseTimeFromDecimal parses mysql time value from decimal.
// It is used in scenarios that distinguish date and datetime, e.g., date_add/sub() with first argument being decimal.
// For example, 20010203 parses to date (no HMS) and 20010203040506 parses to datetime (with HMS).
func ParseTimeFromDecimal(ctx Context, dec *MyDecimal) (t Time, err error) {
intPart, err := dec.ToInt()
if err != nil && !terror.ErrorEqual(err, ErrTruncated) {
return ZeroTime, err
}
fsp := min(MaxFsp, int(dec.GetDigitsFrac()))
t, err = parseDateTimeFromNum(ctx, intPart)
if err != nil {
return ZeroTime, err
}
t.SetFsp(fsp)
if fsp == 0 || t.Type() == mysql.TypeDate {
// Shortcut for integer value or date value (fractional part omitted).
return t, err
}
intPartDec := new(MyDecimal).FromInt(intPart)
fracPartDec := new(MyDecimal)
err = DecimalSub(dec, intPartDec, fracPartDec)
if err != nil {
return ZeroTime, errors.Trace(dbterror.ClassTypes.NewStd(errno.ErrIncorrectDatetimeValue).GenWithStackByArgs(dec.ToString()))
}
million := new(MyDecimal).FromInt(1000000)
msPartDec := new(MyDecimal)
err = DecimalMul(fracPartDec, million, msPartDec)
if err != nil && !terror.ErrorEqual(err, ErrTruncated) {
return ZeroTime, errors.Trace(dbterror.ClassTypes.NewStd(errno.ErrIncorrectDatetimeValue).GenWithStackByArgs(dec.ToString()))
}
msPart, err := msPartDec.ToInt()
if err != nil && !terror.ErrorEqual(err, ErrTruncated) {
return ZeroTime, errors.Trace(dbterror.ClassTypes.NewStd(errno.ErrIncorrectDatetimeValue).GenWithStackByArgs(dec.ToString()))
}
ct := t.CoreTime()
ct.setMicrosecond(uint32(msPart))
t.SetCoreTime(ct)
return t, nil
}
// DateFormat returns a textual representation of the time value formatted
// according to layout.
// See http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_date-format
func (t Time) DateFormat(layout string) (string, error) {
var buf bytes.Buffer
inPatternMatch := false
for _, b := range layout {
if inPatternMatch {
if err := t.convertDateFormat(b, &buf); err != nil {
return "", errors.Trace(err)
}
inPatternMatch = false
continue
}
// It's not in pattern match now.
if b == '%' {
inPatternMatch = true
} else {
buf.WriteRune(b)
}
}
return buf.String(), nil
}
var abbrevWeekdayName = []string{
"Sun", "Mon", "Tue",
"Wed", "Thu", "Fri", "Sat",
}
func (t Time) convertDateFormat(b rune, buf *bytes.Buffer) error {
switch b {
case 'b':
m := t.Month()
if m == 0 || m > 12 {
return errors.Trace(ErrWrongValue.GenWithStackByArgs(TimeStr, strconv.Itoa(m)))
}
buf.WriteString(MonthNames[m-1][:3])
case 'M':
m := t.Month()
if m == 0 || m > 12 {
return errors.Trace(ErrWrongValue.GenWithStackByArgs(TimeStr, strconv.Itoa(m)))
}
buf.WriteString(MonthNames[m-1])
case 'm':
buf.WriteString(FormatIntWidthN(t.Month(), 2))
case 'c':
buf.WriteString(strconv.FormatInt(int64(t.Month()), 10))
case 'D':
buf.WriteString(strconv.FormatInt(int64(t.Day()), 10))
buf.WriteString(abbrDayOfMonth(t.Day()))
case 'd':
buf.WriteString(FormatIntWidthN(t.Day(), 2))
case 'e':
buf.WriteString(strconv.FormatInt(int64(t.Day()), 10))
case 'j':
fmt.Fprintf(buf, "%03d", t.YearDay())
case 'H':
buf.WriteString(FormatIntWidthN(t.Hour(), 2))
case 'k':
buf.WriteString(strconv.FormatInt(int64(t.Hour()), 10))
case 'h', 'I':
tt := t.Hour()
if tt%12 == 0 {
buf.WriteString("12")
} else {
buf.WriteString(FormatIntWidthN(tt%12, 2))
}
case 'l':
tt := t.Hour()
if tt%12 == 0 {
buf.WriteString("12")
} else {
buf.WriteString(strconv.FormatInt(int64(tt%12), 10))
}
case 'i':
buf.WriteString(FormatIntWidthN(t.Minute(), 2))
case 'p':
hour := t.Hour()
if hour/12%2 == 0 {
buf.WriteString("AM")
} else {
buf.WriteString("PM")
}
case 'r':
h := t.Hour()
h %= 24
switch {
case h == 0:
fmt.Fprintf(buf, "%02d:%02d:%02d AM", 12, t.Minute(), t.Second())
case h == 12:
fmt.Fprintf(buf, "%02d:%02d:%02d PM", 12, t.Minute(), t.Second())
case h < 12:
fmt.Fprintf(buf, "%02d:%02d:%02d AM", h, t.Minute(), t.Second())
default:
fmt.Fprintf(buf, "%02d:%02d:%02d PM", h-12, t.Minute(), t.Second())
}
case 'T':
fmt.Fprintf(buf, "%02d:%02d:%02d", t.Hour(), t.Minute(), t.Second())
case 'S', 's':
buf.WriteString(FormatIntWidthN(t.Second(), 2))
case 'f':
fmt.Fprintf(buf, "%06d", t.Microsecond())
case 'U':
w := t.Week(0)
buf.WriteString(FormatIntWidthN(w, 2))
case 'u':
w := t.Week(1)
buf.WriteString(FormatIntWidthN(w, 2))
case 'V':
w := t.Week(2)
buf.WriteString(FormatIntWidthN(w, 2))
case 'v':
_, w := t.YearWeek(3)
buf.WriteString(FormatIntWidthN(w, 2))
case 'a':
weekday := t.Weekday()
buf.WriteString(abbrevWeekdayName[weekday])
case 'W':
buf.WriteString(t.Weekday().String())
case 'w':
buf.WriteString(strconv.FormatInt(int64(t.Weekday()), 10))
case 'X':
year, _ := t.YearWeek(2)
if year < 0 {
buf.WriteString(strconv.FormatUint(uint64(math.MaxUint32), 10))
} else {
buf.WriteString(FormatIntWidthN(year, 4))
}
case 'x':
year, _ := t.YearWeek(3)
if year < 0 {
buf.WriteString(strconv.FormatUint(uint64(math.MaxUint32), 10))
} else {
buf.WriteString(FormatIntWidthN(year, 4))
}
case 'Y':
buf.WriteString(FormatIntWidthN(t.Year(), 4))
case 'y':
str := FormatIntWidthN(t.Year(), 4)
buf.WriteString(str[2:])
default:
buf.WriteRune(b)
}
return nil
}
// FormatIntWidthN uses to format int with width. Insufficient digits are filled by 0.
func FormatIntWidthN(num, n int) string {
numString := strconv.FormatInt(int64(num), 10)
if len(numString) >= n {
return numString
}
padBytes := make([]byte, n-len(numString))
for i := range padBytes {
padBytes[i] = '0'
}
return string(padBytes) + numString
}
func abbrDayOfMonth(day int) string {
var str string
switch day {
case 1, 21, 31:
str = "st"
case 2, 22:
str = "nd"
case 3, 23:
str = "rd"
default:
str = "th"
}
return str
}
// StrToDate converts date string according to format.
// See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_date-format
func (t *Time) StrToDate(typeCtx Context, date, format string) bool {
ctx := make(map[string]int)
var tm CoreTime
success, warning := strToDate(&tm, date, format, ctx)
if !success {
t.SetCoreTime(ZeroCoreTime)
t.SetType(mysql.TypeDatetime)
t.SetFsp(0)
return false
}
if err := mysqlTimeFix(&tm, ctx); err != nil {
return false
}
t.SetCoreTime(tm)
t.SetType(mysql.TypeDatetime)
if t.Check(typeCtx) != nil {
return false
}
if warning {
// Only append this warning when success but still need warning.
// Currently this only happens when `date` has extra characters at the end.
typeCtx.AppendWarning(ErrTruncatedWrongVal.FastGenByArgs(DateTimeStr, date))
}
return true
}
// mysqlTimeFix fixes the Time use the values in the context.
func mysqlTimeFix(t *CoreTime, ctx map[string]int) error {
// Key of the ctx is the format char, such as `%j` `%p` and so on.
if yearOfDay, ok := ctx["%j"]; ok {
// TODO: Implement the function that converts day of year to yy:mm:dd.
_ = yearOfDay
}
if valueAMorPm, ok := ctx["%p"]; ok {
if _, ok := ctx["%H"]; ok {
return ErrWrongValue.GenWithStackByArgs(TimeStr, t)
}
if t.Hour() == 0 {
return ErrWrongValue.GenWithStackByArgs(TimeStr, t)
}
if t.Hour() == 12 {
// 12 is a special hour.
switch valueAMorPm {
case constForAM:
t.setHour(0)
case constForPM:
t.setHour(12)
}
return nil
}
if valueAMorPm == constForPM {
t.setHour(t.getHour() + 12)
}
} else {
if _, ok := ctx["%h"]; ok && t.Hour() == 12 {
t.setHour(0)
}
}
return nil
}
// strToDate converts date string according to format,
// the value will be stored in argument t or ctx.
// The second return value is true when success but still need to append a warning.
func strToDate(t *CoreTime, date string, format string, ctx map[string]int) (success bool, warning bool) {
date = skipWhiteSpace(date)
format = skipWhiteSpace(format)
token, formatRemain, succ := getFormatToken(format)
if !succ {
return false, false
}
if token == "" {
if len(date) != 0 {
// Extra characters at the end of date are ignored, but a warning should be reported at this case.
return true, true
}
// Normal case. Both token and date are empty now.
return true, false
}
if len(date) == 0 {
ctx[token] = 0
return true, false
}
dateRemain, succ := matchDateWithToken(t, date, token, ctx)
if !succ {
return false, false
}
return strToDate(t, dateRemain, formatRemain, ctx)
}
// getFormatToken takes one format control token from the string.
// format "%d %H %m" will get token "%d" and the remain is " %H %m".
func getFormatToken(format string) (token string, remain string, succ bool) {
if len(format) == 0 {
return "", "", true
}
// Just one character.
if len(format) == 1 {
if format[0] == '%' {
return "", "", false
}
return format, "", true
}
// More than one character.
if format[0] == '%' {
return format[:2], format[2:], true
}
return format[:1], format[1:], true
}
func skipWhiteSpace(input string) string {
for i, c := range input {
if !unicode.IsSpace(c) {
return input[i:]
}
}
return ""
}
var monthAbbrev = map[string]gotime.Month{
"jan": gotime.January,
"feb": gotime.February,
"mar": gotime.March,
"apr": gotime.April,
"may": gotime.May,
"jun": gotime.June,
"jul": gotime.July,
"aug": gotime.August,
"sep": gotime.September,
"oct": gotime.October,
"nov": gotime.November,
"dec": gotime.December,
}
type dateFormatParser func(t *CoreTime, date string, ctx map[string]int) (remain string, succ bool)
var dateFormatParserTable = map[string]dateFormatParser{
"%b": abbreviatedMonth, // Abbreviated month name (Jan..Dec)
"%c": monthNumeric, // Month, numeric (0..12)
"%d": dayOfMonthNumeric, // Day of the month, numeric (0..31)
"%e": dayOfMonthNumeric, // Day of the month, numeric (0..31)
"%f": microSeconds, // Microseconds (000000..999999)
"%h": hour12Numeric, // Hour (01..12)
"%H": hour24Numeric, // Hour (00..23)
"%I": hour12Numeric, // Hour (01..12)
"%i": minutesNumeric, // Minutes, numeric (00..59)
"%j": dayOfYearNumeric, // Day of year (001..366)
"%k": hour24Numeric, // Hour (0..23)
"%l": hour12Numeric, // Hour (1..12)
"%M": fullNameMonth, // Month name (January..December)
"%m": monthNumeric, // Month, numeric (00..12)
"%p": isAMOrPM, // AM or PM
"%r": time12Hour, // Time, 12-hour (hh:mm:ss followed by AM or PM)
"%s": secondsNumeric, // Seconds (00..59)
"%S": secondsNumeric, // Seconds (00..59)
"%T": time24Hour, // Time, 24-hour (hh:mm:ss)
"%Y": yearNumericFourDigits, // Year, numeric, four digits
"%#": skipAllNums, // Skip all numbers
"%.": skipAllPunct, // Skip all punctation characters
"%@": skipAllAlpha, // Skip all alpha characters
// Deprecated since MySQL 5.7.5
"%y": yearNumericTwoDigits, // Year, numeric (two digits)
// TODO: Add the following...
// "%a": abbreviatedWeekday, // Abbreviated weekday name (Sun..Sat)
// "%D": dayOfMonthWithSuffix, // Day of the month with English suffix (0th, 1st, 2nd, 3rd)
// "%U": weekMode0, // Week (00..53), where Sunday is the first day of the week; WEEK() mode 0
// "%u": weekMode1, // Week (00..53), where Monday is the first day of the week; WEEK() mode 1
// "%V": weekMode2, // Week (01..53), where Sunday is the first day of the week; WEEK() mode 2; used with %X
// "%v": weekMode3, // Week (01..53), where Monday is the first day of the week; WEEK() mode 3; used with %x
// "%W": weekdayName, // Weekday name (Sunday..Saturday)
// "%w": dayOfWeek, // Day of the week (0=Sunday..6=Saturday)
// "%X": yearOfWeek, // Year for the week where Sunday is the first day of the week, numeric, four digits; used with %V
// "%x": yearOfWeek, // Year for the week, where Monday is the first day of the week, numeric, four digits; used with %v
}
// GetFormatType checks the type(Duration, Date or Datetime) of a format string.
func GetFormatType(format string) (isDuration, isDate bool) {
format = skipWhiteSpace(format)
var token string
var succ bool
for {
token, format, succ = getFormatToken(format)
if len(token) == 0 {
break
}
if !succ {
isDuration, isDate = false, false
break
}
if len(token) >= 2 && token[0] == '%' {
switch token[1] {
case 'h', 'H', 'i', 'I', 's', 'S', 'k', 'l', 'f', 'r', 'T':
isDuration = true
case 'y', 'Y', 'm', 'M', 'c', 'b', 'D', 'd', 'e':
isDate = true
}
}
if isDuration && isDate {
break
}
}
return
}
func matchDateWithToken(t *CoreTime, date string, token string, ctx map[string]int) (remain string, succ bool) {
if parse, ok := dateFormatParserTable[token]; ok {
return parse(t, date, ctx)
}
if strings.HasPrefix(date, token) {
return date[len(token):], true
}
return date, false
}
// Try to parse digits with number of `limit` starting from `input`
// Return <number, n chars to step forward> if success.
// Return <_, 0> if fail.
func parseNDigits(input string, limit int) (number int, step int) {
if limit <= 0 {
return 0, 0
}
var num uint64 = 0
step = 0
for ; step < len(input) && step < limit && '0' <= input[step] && input[step] <= '9'; step++ {
num = num*10 + uint64(input[step]-'0')
}
return int(num), step
}
func secondsNumeric(t *CoreTime, input string, _ map[string]int) (string, bool) {
v, step := parseNDigits(input, 2)
if step <= 0 || v >= 60 {
return input, false
}
t.setSecond(uint8(v))
return input[step:], true
}
func minutesNumeric(t *CoreTime, input string, _ map[string]int) (string, bool) {
v, step := parseNDigits(input, 2)
if step <= 0 || v >= 60 {
return input, false
}
t.setMinute(uint8(v))
return input[step:], true
}
type parseState int32
const (
parseStateNormal parseState = 1
parseStateFail parseState = 2
parseStateEndOfLine parseState = 3
)
func parseSep(input string) (string, parseState) {
input = skipWhiteSpace(input)
if len(input) == 0 {
return input, parseStateEndOfLine
}
if input[0] != ':' {
return input, parseStateFail
}
if input = skipWhiteSpace(input[1:]); len(input) == 0 {
return input, parseStateEndOfLine
}
return input, parseStateNormal
}
func time12Hour(t *CoreTime, input string, _ map[string]int) (string, bool) {
tryParse := func(input string) (string, parseState) {
// hh:mm:ss AM
/// Note that we should update `t` as soon as possible, or we
/// can not get correct result for incomplete input like "12:13"
/// that is shorter than "hh:mm:ss"
hour, step := parseNDigits(input, 2) // 1..12
if step <= 0 || hour > 12 || hour == 0 {
return input, parseStateFail
}
// Handle special case: 12:34:56 AM -> 00:34:56
// For PM, we will add 12 it later
if hour == 12 {
hour = 0
}
t.setHour(uint8(hour))
// ':'
var state parseState
if input, state = parseSep(input[step:]); state != parseStateNormal {
return input, state
}
minute, step := parseNDigits(input, 2) // 0..59
if step <= 0 || minute > 59 {
return input, parseStateFail
}
t.setMinute(uint8(minute))
// ':'
if input, state = parseSep(input[step:]); state != parseStateNormal {
return input, state
}
second, step := parseNDigits(input, 2) // 0..59
if step <= 0 || second > 59 {
return input, parseStateFail
}
t.setSecond(uint8(second))
input = skipWhiteSpace(input[step:])
if len(input) == 0 {
// No "AM"/"PM" suffix, it is ok
return input, parseStateEndOfLine
} else if len(input) < 2 {
// some broken char, fail
return input, parseStateFail
}
switch {
case hasCaseInsensitivePrefix(input, "AM"):
t.setHour(uint8(hour))
case hasCaseInsensitivePrefix(input, "PM"):
t.setHour(uint8(hour + 12))
default:
return input, parseStateFail
}
return input[2:], parseStateNormal
}
remain, state := tryParse(input)
if state == parseStateFail {
return input, false
}
return remain, true
}
func time24Hour(t *CoreTime, input string, _ map[string]int) (string, bool) {
tryParse := func(input string) (string, parseState) {
// hh:mm:ss
/// Note that we should update `t` as soon as possible, or we
/// can not get correct result for incomplete input like "12:13"
/// that is shorter than "hh:mm:ss"
hour, step := parseNDigits(input, 2) // 0..23
if step <= 0 || hour > 23 {
return input, parseStateFail
}
t.setHour(uint8(hour))
// ':'
var state parseState
if input, state = parseSep(input[step:]); state != parseStateNormal {
return input, state
}
minute, step := parseNDigits(input, 2) // 0..59
if step <= 0 || minute > 59 {
return input, parseStateFail
}
t.setMinute(uint8(minute))
// ':'
if input, state = parseSep(input[step:]); state != parseStateNormal {
return input, state
}
second, step := parseNDigits(input, 2) // 0..59
if step <= 0 || second > 59 {
return input, parseStateFail
}
t.setSecond(uint8(second))
return input[step:], parseStateNormal
}
remain, state := tryParse(input)
if state == parseStateFail {
return input, false
}
return remain, true
}
const (
constForAM = 1 + iota
constForPM
)
func isAMOrPM(_ *CoreTime, input string, ctx map[string]int) (string, bool) {
if len(input) < 2 {
return input, false
}
s := strings.ToLower(input[:2])
switch s {
case "am":
ctx["%p"] = constForAM
case "pm":
ctx["%p"] = constForPM
default:
return input, false
}
return input[2:], true
}
// oneToSixDigitRegex: it was just for [0, 999999]
var oneToSixDigitRegex = regexp.MustCompile("^[0-9]{0,6}")
// numericRegex: it was for any numeric characters
var numericRegex = regexp.MustCompile("[0-9]+")
func dayOfMonthNumeric(t *CoreTime, input string, _ map[string]int) (string, bool) {
v, step := parseNDigits(input, 2) // 0..31
if step <= 0 || v > 31 {
return input, false
}
t.setDay(uint8(v))
return input[step:], true
}
func hour24Numeric(t *CoreTime, input string, ctx map[string]int) (string, bool) {
v, step := parseNDigits(input, 2) // 0..23
if step <= 0 || v > 23 {
return input, false
}
t.setHour(uint8(v))
ctx["%H"] = v
return input[step:], true
}
func hour12Numeric(t *CoreTime, input string, ctx map[string]int) (string, bool) {
v, step := parseNDigits(input, 2) // 1..12
if step <= 0 || v > 12 || v == 0 {
return input, false
}
t.setHour(uint8(v))
ctx["%h"] = v
return input[step:], true
}
func microSeconds(t *CoreTime, input string, _ map[string]int) (string, bool) {
v, step := parseNDigits(input, 6)
if step <= 0 {
t.setMicrosecond(0)
return input, true
}
for i := step; i < 6; i++ {
v *= 10
}
t.setMicrosecond(uint32(v))
return input[step:], true
}
func yearNumericFourDigits(t *CoreTime, input string, ctx map[string]int) (string, bool) {
return yearNumericNDigits(t, input, ctx, 4)
}
func yearNumericTwoDigits(t *CoreTime, input string, ctx map[string]int) (string, bool) {
return yearNumericNDigits(t, input, ctx, 2)
}
func yearNumericNDigits(t *CoreTime, input string, _ map[string]int, n int) (string, bool) {
year, step := parseNDigits(input, n)
if step <= 0 {
return input, false
} else if step <= 2 {
year = adjustYear(year)
}
t.setYear(uint16(year))
return input[step:], true
}
func dayOfYearNumeric(_ *CoreTime, input string, ctx map[string]int) (string, bool) {
// MySQL declares that "%j" should be "Day of year (001..366)". But actually,
// it accepts a number that is up to three digits, which range is [1, 999].
v, step := parseNDigits(input, 3)
if step <= 0 || v == 0 {
return input, false
}
ctx["%j"] = v
return input[step:], true
}
func abbreviatedMonth(t *CoreTime, input string, _ map[string]int) (string, bool) {
if len(input) >= 3 {
monthName := strings.ToLower(input[:3])
if month, ok := monthAbbrev[monthName]; ok {
t.setMonth(uint8(month))
return input[len(monthName):], true
}
}
return input, false
}
func hasCaseInsensitivePrefix(input, prefix string) bool {
if len(input) < len(prefix) {
return false
}
return strings.EqualFold(input[:len(prefix)], prefix)
}
func fullNameMonth(t *CoreTime, input string, _ map[string]int) (string, bool) {
for i, month := range MonthNames {
if hasCaseInsensitivePrefix(input, month) {
t.setMonth(uint8(i + 1))
return input[len(month):], true
}
}
return input, false
}
func monthNumeric(t *CoreTime, input string, _ map[string]int) (string, bool) {
v, step := parseNDigits(input, 2) // 1..12
if step <= 0 || v > 12 {
return input, false
}
t.setMonth(uint8(v))
return input[step:], true
}
// DateFSP gets fsp from date string.
func DateFSP(date string) (fsp int) {
i := strings.LastIndex(date, ".")
if i != -1 {
fsp = len(date) - i - 1
}
return
}
// DateTimeIsOverflow returns if this date is overflow.
// See: https://dev.mysql.com/doc/refman/8.0/en/datetime.html
func DateTimeIsOverflow(ctx Context, date Time) (bool, error) {
tz := ctx.Location()
if tz == nil {
logutil.BgLogger().Warn("use gotime.local because sc.timezone is nil")
tz = gotime.Local
}
var err error
var b, e, t gotime.Time
switch date.Type() {
case mysql.TypeDate, mysql.TypeDatetime:
if b, err = MinDatetime.GoTime(tz); err != nil {
return false, err
}
if e, err = MaxDatetime.GoTime(tz); err != nil {
return false, err
}
case mysql.TypeTimestamp:
minTS, maxTS := MinTimestamp, MaxTimestamp
if tz != gotime.UTC {
if err = minTS.ConvertTimeZone(gotime.UTC, tz); err != nil {
return false, err
}
if err = maxTS.ConvertTimeZone(gotime.UTC, tz); err != nil {
return false, err
}
}
if b, err = minTS.GoTime(tz); err != nil {
return false, err
}
if e, err = maxTS.GoTime(tz); err != nil {
return false, err
}
default:
return false, nil
}
if t, err = date.AdjustedGoTime(tz); err != nil {
return false, err
}
inRange := (t.After(b) || t.Equal(b)) && (t.Before(e) || t.Equal(e))
return !inRange, nil
}
func skipAllNums(_ *CoreTime, input string, _ map[string]int) (string, bool) {
retIdx := 0
for i, ch := range input {
if !unicode.IsNumber(ch) {
break
}
retIdx = i + 1
}
return input[retIdx:], true
}
func skipAllPunct(_ *CoreTime, input string, _ map[string]int) (string, bool) {
retIdx := 0
for i, ch := range input {
if !unicode.IsPunct(ch) {
break
}
retIdx = i + 1
}
return input[retIdx:], true
}
func skipAllAlpha(_ *CoreTime, input string, _ map[string]int) (string, bool) {
retIdx := 0
for i, ch := range input {
if !unicode.IsLetter(ch) {
break
}
retIdx = i + 1
}
return input[retIdx:], true
}
// Copyright 2023 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package types
import (
"github.com/pingcap/errors"
"github.com/pingcap/tidb/pkg/errno"
)
// HandleTruncate ignores or returns the error based on the Context state.
func (c *Context) HandleTruncate(err error) error {
// TODO: At present we have not checked whether the error can be ignored or treated as warning.
// We will do that later, and then append WarnDataTruncated instead of the error itself.
if err == nil {
return nil
}
err = errors.Cause(err)
if e, ok := err.(*errors.Error); !ok ||
(e.Code() != errno.ErrTruncatedWrongValue &&
e.Code() != errno.ErrDataTooLong &&
e.Code() != errno.ErrTruncatedWrongValueForField &&
e.Code() != errno.ErrWarnDataOutOfRange &&
e.Code() != errno.ErrDataOutOfRange &&
e.Code() != errno.ErrBadNumber &&
e.Code() != errno.ErrWrongValueForType &&
e.Code() != errno.ErrDatetimeFunctionOverflow &&
e.Code() != errno.WarnDataTruncated &&
e.Code() != errno.ErrIncorrectDatetimeValue) {
return err
}
if c.Flags().IgnoreTruncateErr() {
return nil
}
if c.Flags().TruncateAsWarning() {
c.AppendWarning(err)
return nil
}
return err
}
// Copyright 2024 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package types
import (
"encoding/binary"
"fmt"
"math"
"slices"
"strconv"
"strings"
"unsafe"
jsoniter "github.com/json-iterator/go"
"github.com/pingcap/errors"
"github.com/pingcap/tidb/pkg/parser/types"
)
func init() {
var buf [4]byte
binary.NativeEndian.PutUint32(buf[:], 0x2)
if buf[0] == 0x02 && buf[1] == 0x00 && buf[2] == 0x00 && buf[3] == 0x00 {
return
}
panic("VectorFloat32 only supports little endian")
}
// CreateVectorFloat32 creates a VectorFloat32. Returns error if there are invalid values like NaN and Inf.
func CreateVectorFloat32(vector []float32) (VectorFloat32, error) {
for _, v := range vector {
if math.IsNaN(float64(v)) {
valueError := errors.Errorf("NaN not allowed in vector")
return ZeroVectorFloat32, valueError
}
if math.IsInf(float64(v), 0) {
valueError := errors.Errorf("infinite value not allowed in vector")
return ZeroVectorFloat32, valueError
}
}
vec := InitVectorFloat32(len(vector))
copy(vec.Elements(), vector)
return vec, nil
}
// MustCreateVectorFloat32 creates a VectorFloat32. Panics if there are invalid values like NaN and Inf.
func MustCreateVectorFloat32(v []float32) VectorFloat32 {
r, err := CreateVectorFloat32(v)
if err != nil {
panic(err)
}
return r
}
// VectorFloat32 represents a vector of float32.
//
// Memory Format:
// 4 byte - Length
// 4 byte * N - Data in Float32
//
// Normally, the data layout in storage (i.e. after serialization) is identical
// to the memory layout. However, in BigEndian machines, we have BigEndian in
// memory and always have LittleEndian in storage or during data exchange.
type VectorFloat32 struct {
data []byte // Note: data must be a well-formatted byte slice (len >= 4)
}
// ZeroVectorFloat32 is a zero value of VectorFloat32.
var ZeroVectorFloat32 = InitVectorFloat32( /* dims= */ 0)
// InitVectorFloat32 initializes a vector with the given dimension. The values are initialized to zero.
func InitVectorFloat32(dims int) VectorFloat32 {
data := make([]byte, 4+dims*4)
binary.LittleEndian.PutUint32(data, uint32(dims))
return VectorFloat32{data: data}
}
// CheckVectorDimValid checks if the vector's dimension is valid.
func CheckVectorDimValid(dim int) error {
const (
maxVectorDimension = 16383
)
if dim < 0 {
return errors.Errorf("dimensions for type vector must be at least 0")
}
if dim > maxVectorDimension {
return errors.Errorf("vector cannot have more than %d dimensions", maxVectorDimension)
}
return nil
}
// CheckDimsFitColumn checks if the vector has the expected dimension, which is defined by the column type or cast type.
func (v VectorFloat32) CheckDimsFitColumn(expectedFlen int) error {
if expectedFlen != types.UnspecifiedLength && v.Len() != expectedFlen {
return errors.Errorf("vector has %d dimensions, does not fit VECTOR(%d)", v.Len(), expectedFlen)
}
return nil
}
// Len returns the length (dimension) of the vector.
func (v VectorFloat32) Len() int {
return int(binary.LittleEndian.Uint32(v.data))
}
// Elements returns a mutable typed slice of the elements.
func (v VectorFloat32) Elements() []float32 {
l := v.Len()
if l == 0 {
return nil
}
return unsafe.Slice((*float32)(unsafe.Pointer(&v.data[4])), l)
}
// TruncatedString prints the vector in a truncated form, which is useful for
// outputting in logs or EXPLAIN statements.
func (v VectorFloat32) TruncatedString() string {
const (
maxDisplayElements = 5
)
truncatedElements := 0
elements := v.Elements()
if len(elements) > maxDisplayElements {
truncatedElements = len(elements) - maxDisplayElements
elements = elements[:maxDisplayElements]
}
buf := make([]byte, 0, 2+v.Len()*2)
buf = append(buf, '[')
for i, v := range elements {
if i > 0 {
buf = append(buf, ","...)
}
buf = strconv.AppendFloat(buf, float64(v), 'g', 2, 32)
}
if truncatedElements > 0 {
buf = append(buf, fmt.Sprintf(",(%d more)...", truncatedElements)...)
}
buf = append(buf, ']')
// buf is not used elsewhere, so it's safe to just cast to String
return unsafe.String(unsafe.SliceData(buf), len(buf))
}
// String returns a string representation of the vector, which can be parsed later.
func (v VectorFloat32) String() string {
elements := v.Elements()
buf := make([]byte, 0, 2+v.Len()*2)
buf = append(buf, '[')
for i, v := range elements {
if i > 0 {
buf = append(buf, ',')
}
buf = strconv.AppendFloat(buf, float64(v), 'f', -1, 32)
}
buf = append(buf, ']')
// buf is not used elsewhere, so it's safe to just cast to String
return unsafe.String(unsafe.SliceData(buf), len(buf))
}
// ZeroCopySerialize serializes the vector into a new byte slice, without memory copy.
func (v VectorFloat32) ZeroCopySerialize() []byte {
return v.data
}
// SerializeTo serializes the vector into the byte slice.
func (v VectorFloat32) SerializeTo(b []byte) []byte {
return append(b, v.data...)
}
// SerializedSize returns the size of the serialized data.
func (v VectorFloat32) SerializedSize() int {
return len(v.data)
}
// EstimatedMemUsage returns the estimated memory usage.
func (v VectorFloat32) EstimatedMemUsage() int {
return int(unsafe.Sizeof(v)) + len(v.data)
}
// PeekBytesAsVectorFloat32 trys to peek some bytes from b, until
// we can deserialize a VectorFloat32 from those bytes.
func PeekBytesAsVectorFloat32(b []byte) (n int, err error) {
if len(b) < 4 {
err = errors.Errorf("bad VectorFloat32 value header (len=%d)", len(b))
return
}
elements := binary.LittleEndian.Uint32(b)
totalDataSize := elements*4 + 4
if len(b) < int(totalDataSize) {
err = errors.Errorf("bad VectorFloat32 value (len=%d, expected=%d)", len(b), totalDataSize)
return
}
return int(totalDataSize), nil
}
// ZeroCopyDeserializeVectorFloat32 deserializes the byte slice into a vector, without memory copy.
// Note: b must not be mutated, because this function does zero copy.
func ZeroCopyDeserializeVectorFloat32(b []byte) (VectorFloat32, []byte, error) {
length, err := PeekBytesAsVectorFloat32(b)
if err != nil {
return ZeroVectorFloat32, b, err
}
return VectorFloat32{data: b[:length]}, b[length:], nil
}
// ParseVectorFloat32 parses a string into a vector.
func ParseVectorFloat32(s string) (VectorFloat32, error) {
// issue #57143 jsoniter parse null will return as []
// Trim whitespace and check for null string and reject it
if strings.TrimSpace(s) == "null" {
return ZeroVectorFloat32, errors.Errorf("Invalid vector text: %s", s)
}
var values []float32
var valueError error
// We explicitly use a JSON float parser to reject other JSON types.
parser := jsoniter.ParseString(jsoniter.ConfigDefault, s)
parser.ReadArrayCB(func(parser *jsoniter.Iterator) bool {
v := parser.ReadFloat64()
if math.IsNaN(v) {
valueError = errors.Errorf("NaN not allowed in vector")
return false
}
if math.IsInf(v, 0) {
valueError = errors.Errorf("infinite value not allowed in vector")
return false
}
// Check if the value can be safely converted to float32
if v < -math.MaxFloat32 || v > math.MaxFloat32 {
valueError = errors.Errorf("value %v out of range for float32", v)
return false
}
values = append(values, float32(v))
return true
})
if parser.Error != nil {
return ZeroVectorFloat32, errors.Errorf("Invalid vector text: %s", s)
}
if valueError != nil {
return ZeroVectorFloat32, valueError
}
// Check if there are any remaining characters after the JSON array
// This ensures we reject strings like "[1,2,3]extra"
remaining := parser.SkipAndReturnBytes()
if len(remaining) > 0 {
// Check if the remaining bytes are only whitespace
trimmed := strings.TrimSpace(string(remaining))
if len(trimmed) > 0 {
return ZeroVectorFloat32, errors.Errorf("Invalid vector text: %s", s)
}
}
dim := len(values)
if err := CheckVectorDimValid(dim); err != nil {
return ZeroVectorFloat32, err
}
vec := InitVectorFloat32(dim)
copy(vec.Elements(), values)
return vec, nil
}
// Clone returns a deep copy of the vector.
func (v VectorFloat32) Clone() VectorFloat32 {
return VectorFloat32{data: slices.Clone(v.data)}
}
// IsZeroValue returns true if the vector is a zero value (which length is zero).
func (v VectorFloat32) IsZeroValue() bool {
return v.Len() == 0
}
// Copyright 2024 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package types
import (
"math"
"github.com/pingcap/errors"
)
func (a VectorFloat32) checkIdenticalDims(b VectorFloat32) error {
if a.Len() != b.Len() {
return errors.Errorf("vectors have different dimensions: %d and %d", a.Len(), b.Len())
}
return nil
}
// L2SquaredDistance returns the squared L2 distance between two vectors.
// This saves a sqrt calculation.
func (a VectorFloat32) L2SquaredDistance(b VectorFloat32) (float64, error) {
if err := a.checkIdenticalDims(b); err != nil {
return 0, errors.Trace(err)
}
var distance float32 = 0.0
va := a.Elements()
vb := b.Elements()
for i, iMax := 0, a.Len(); i < iMax; i++ {
// Hope this can be vectorized.
diff := va[i] - vb[i]
distance += diff * diff
}
return float64(distance), nil
}
// L2Distance returns the L2 distance between two vectors.
func (a VectorFloat32) L2Distance(b VectorFloat32) (float64, error) {
d, err := a.L2SquaredDistance(b)
if err != nil {
return 0, errors.Trace(err)
}
return math.Sqrt(d), nil
}
// InnerProduct returns the inner product of two vectors.
func (a VectorFloat32) InnerProduct(b VectorFloat32) (float64, error) {
if err := a.checkIdenticalDims(b); err != nil {
return 0, errors.Trace(err)
}
var distance float32 = 0.0
va := a.Elements()
vb := b.Elements()
for i, iMax := 0, a.Len(); i < iMax; i++ {
// Hope this can be vectorized.
distance += va[i] * vb[i]
}
return float64(distance), nil
}
// NegativeInnerProduct returns the negative inner product of two vectors.
func (a VectorFloat32) NegativeInnerProduct(b VectorFloat32) (float64, error) {
d, err := a.InnerProduct(b)
if err != nil {
return 0, errors.Trace(err)
}
return d * -1, nil
}
// CosineDistance returns the cosine distance between two vectors.
func (a VectorFloat32) CosineDistance(b VectorFloat32) (float64, error) {
if err := a.checkIdenticalDims(b); err != nil {
return 0, errors.Trace(err)
}
var distance float32 = 0.0
var norma float32 = 0.0
var normb float32 = 0.0
va := a.Elements()
vb := b.Elements()
for i, iMax := 0, a.Len(); i < iMax; i++ {
// Hope this can be vectorized.
distance += va[i] * vb[i]
norma += va[i] * va[i]
normb += vb[i] * vb[i]
}
similarity := float64(distance) / math.Sqrt(float64(norma)*float64(normb))
if math.IsNaN(similarity) {
// Divide by zero
return math.NaN(), nil
}
if similarity > 1.0 {
similarity = 1.0
} else if similarity < -1.0 {
similarity = -1.0
}
return 1.0 - similarity, nil
}
// L1Distance returns the L1 distance between two vectors.
func (a VectorFloat32) L1Distance(b VectorFloat32) (float64, error) {
if err := a.checkIdenticalDims(b); err != nil {
return 0, errors.Trace(err)
}
var distance float32 = 0.0
va := a.Elements()
vb := b.Elements()
for i, iMax := 0, a.Len(); i < iMax; i++ {
// Hope this can be vectorized.
diff := va[i] - vb[i]
if diff < 0 {
diff = -diff
}
distance += diff
}
return float64(distance), nil
}
// L2Norm returns the L2 norm of the vector.
func (a VectorFloat32) L2Norm() float64 {
// Note: We align the impl with pgvector: Only l2_norm use double
// precision during calculation.
var norm float64 = 0.0
va := a.Elements()
for i, iMax := 0, a.Len(); i < iMax; i++ {
// Hope this can be vectorized.
norm += float64(va[i]) * float64(va[i])
}
return math.Sqrt(norm)
}
// Add adds two vectors. The vectors must have the same dimension.
func (a VectorFloat32) Add(b VectorFloat32) (VectorFloat32, error) {
if err := a.checkIdenticalDims(b); err != nil {
return ZeroVectorFloat32, errors.Trace(err)
}
result := InitVectorFloat32(a.Len())
va := a.Elements()
vb := b.Elements()
vr := result.Elements()
for i, iMax := 0, a.Len(); i < iMax; i++ {
// Hope this can be vectorized.
vr[i] = va[i] + vb[i]
}
for i, iMax := 0, a.Len(); i < iMax; i++ {
if math.IsInf(float64(vr[i]), 0) {
return ZeroVectorFloat32, errors.Errorf("value out of range: overflow")
}
if math.IsNaN(float64(vr[i])) {
return ZeroVectorFloat32, errors.Errorf("value out of range: NaN")
}
}
return result, nil
}
// Sub subtracts two vectors. The vectors must have the same dimension.
func (a VectorFloat32) Sub(b VectorFloat32) (VectorFloat32, error) {
if err := a.checkIdenticalDims(b); err != nil {
return ZeroVectorFloat32, errors.Trace(err)
}
result := InitVectorFloat32(a.Len())
va := a.Elements()
vb := b.Elements()
vr := result.Elements()
for i, iMax := 0, a.Len(); i < iMax; i++ {
// Hope this can be vectorized.
vr[i] = va[i] - vb[i]
}
for i, iMax := 0, a.Len(); i < iMax; i++ {
if math.IsInf(float64(vr[i]), 0) {
return ZeroVectorFloat32, errors.Errorf("value out of range: overflow")
}
if math.IsNaN(float64(vr[i])) {
return ZeroVectorFloat32, errors.Errorf("value out of range: NaN")
}
}
return result, nil
}
// Mul multiplies two vectors. The vectors must have the same dimension.
func (a VectorFloat32) Mul(b VectorFloat32) (VectorFloat32, error) {
if err := a.checkIdenticalDims(b); err != nil {
return ZeroVectorFloat32, errors.Trace(err)
}
result := InitVectorFloat32(a.Len())
va := a.Elements()
vb := b.Elements()
vr := result.Elements()
for i, iMax := 0, a.Len(); i < iMax; i++ {
// Hope this can be vectorized.
vr[i] = va[i] * vb[i]
}
for i, iMax := 0, a.Len(); i < iMax; i++ {
if math.IsInf(float64(vr[i]), 0) {
return ZeroVectorFloat32, errors.Errorf("value out of range: overflow")
}
if math.IsNaN(float64(vr[i])) {
return ZeroVectorFloat32, errors.Errorf("value out of range: NaN")
}
// TODO: Check for underflow.
// See https://github.com/pgvector/pgvector/blob/81d13bd40f03890bb5b6360259628cd473c2e467/src/vector.c#L873
}
return result, nil
}
// Compare returns an integer comparing two vectors. The result will be 0 if a==b, -1 if a < b, and +1 if a > b.
func (a VectorFloat32) Compare(b VectorFloat32) int {
la := a.Len()
lb := b.Len()
commonLen := min(lb, la)
va := a.Elements()
vb := b.Elements()
for i := range commonLen {
if va[i] < vb[i] {
return -1
} else if va[i] > vb[i] {
return 1
}
}
if la < lb {
return -1
} else if la > lb {
return 1
}
return 0
}
// Copyright 2022 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package cgroup
import (
"bufio"
"bytes"
"fmt"
"io"
"math"
"os"
"path/filepath"
"runtime"
"strconv"
"strings"
"github.com/pingcap/errors"
"github.com/pingcap/log"
"go.uber.org/zap"
)
// CPUQuotaStatus presents the status of how CPU quota is used
type CPUQuotaStatus int
const (
// CPUQuotaUndefined is returned when CPU quota is undefined
CPUQuotaUndefined CPUQuotaStatus = iota
// CPUQuotaUsed is returned when a valid CPU quota can be used
CPUQuotaUsed
// CPUQuotaMinUsed is return when CPU quota is smaller than the min value
CPUQuotaMinUsed
)
const (
_maxProcsKey = "GOMAXPROCS"
// They are cgroup filename for different data
cgroupV1MemStat = "memory.stat"
cgroupV2MemStat = "memory.stat"
cgroupV2MemLimit = "memory.max"
cgroupV1MemUsage = "memory.usage_in_bytes"
cgroupV2MemUsage = "memory.current"
cgroupV1CPUQuota = "cpu.cfs_quota_us"
cgroupV1CPUPeriod = "cpu.cfs_period_us"
cgroupV1CPUSysUsage = "cpuacct.usage_sys"
cgroupV1CPUUserUsage = "cpuacct.usage_user"
cgroupV2CPUMax = "cpu.max"
cgroupV2CPUStat = "cpu.stat"
// {memory|cpu}.stat file keys
//
// key for # of bytes of file-backed memory on inactive LRU list in cgroupv1
cgroupV1MemInactiveFileUsageStatKey = "total_inactive_file"
// key for # of bytes of file-backed memory on inactive LRU list in cgroupv2
cgroupV2MemInactiveFileUsageStatKey = "inactive_file"
cgroupV1MemLimitStatKey = "hierarchical_memory_limit"
)
const (
procPathCGroup = "/proc/self/cgroup"
procPathMountInfo = "/proc/self/mountinfo"
)
// CPUUsage returns CPU usage and quotas for an entire cgroup.
type CPUUsage struct {
// System time and user time taken by this cgroup or process. In nanoseconds.
Stime, Utime uint64
// CPU period and quota for this process, in microseconds. This cgroup has
// access to up to (quota/period) proportion of CPU resources on the system.
// For instance, if there are 4 CPUs, quota = 150000, period = 100000,
// this cgroup can use around ~1.5 CPUs, or 37.5% of total scheduler time.
// If quota is -1, it's unlimited.
Period, Quota int64
// NumCPUs is the number of CPUs in the system. Always returned even if
// not called from a cgroup.
NumCPU int
}
// Version represents the cgroup version.
type Version int
// cgroup versions.
const (
Unknown Version = 0
V1 Version = 1
V2 Version = 2
)
// SetGOMAXPROCS is to set GOMAXPROCS to the number of CPUs.
func SetGOMAXPROCS() (func(), error) {
const minGOMAXPROCS int = 1
undoNoop := func() {
log.Info("maxprocs: No GOMAXPROCS change to reset")
}
if maxv, exists := os.LookupEnv(_maxProcsKey); exists {
log.Info(fmt.Sprintf("maxprocs: Honoring GOMAXPROCS=%q as set in environment", maxv))
return undoNoop, nil
}
maxProcs, status, err := CPUQuotaToGOMAXPROCS(minGOMAXPROCS)
if err != nil {
return undoNoop, err
}
if status == CPUQuotaUndefined {
log.Info(fmt.Sprintf("maxprocs: Leaving GOMAXPROCS=%v: CPU quota undefined", runtime.GOMAXPROCS(0)))
return undoNoop, nil
}
prev := runtime.GOMAXPROCS(0)
undo := func() {
log.Info(fmt.Sprintf("maxprocs: Resetting GOMAXPROCS to %v", prev))
runtime.GOMAXPROCS(prev)
}
if prev == maxProcs {
return undoNoop, nil
}
switch status {
case CPUQuotaMinUsed:
log.Info(fmt.Sprintf("maxprocs: Updating GOMAXPROCS=%v: using minimum allowed GOMAXPROCS", maxProcs))
case CPUQuotaUsed:
log.Info(fmt.Sprintf("maxprocs: Updating GOMAXPROCS=%v: determined from CPU quota", maxProcs))
}
runtime.GOMAXPROCS(maxProcs)
return undo, nil
}
func readFile(filepath string) (res []byte, err error) {
var f *os.File
//nolint:gosec
f, err = os.Open(filepath)
if err != nil {
return nil, err
}
defer func() {
err = errors.Join(err, f.Close())
}()
res, err = io.ReadAll(f)
return res, err
}
// The field in /proc/self/cgroup and /proc/self/mountinfo may appear as "cpuacct,cpu" or "rw,cpuacct,cpu"
// while the input controller is "cpu,cpuacct"
func controllerMatch(field string, controller string) bool {
if field == controller {
return true
}
fs := strings.Split(field, ",")
if len(fs) < 2 {
return false
}
cs := strings.Split(controller, ",")
if len(fs) < len(cs) {
return false
}
fmap := make(map[string]struct{}, len(fs))
for _, f := range fs {
fmap[f] = struct{}{}
}
for _, c := range cs {
if _, ok := fmap[c]; !ok {
return false
}
}
return true
}
// The controller is defined via either type `memory` for cgroup v1 or via empty type for cgroup v2,
// where the type is the second field in /proc/[pid]/cgroup file
func detectControlPath(cgroupFilePath string, controller string) (string, error) {
//nolint:gosec
cgroup, err := os.Open(cgroupFilePath)
if err != nil {
return "", errors.Wrapf(err, "failed to read %s cgroup from cgroups file: %s", controller, cgroupFilePath)
}
defer func() {
err := cgroup.Close()
if err != nil {
log.Error("close cgroupFilePath", zap.Error(err))
}
}()
scanner := bufio.NewScanner(cgroup)
var unifiedPathIfFound string
for scanner.Scan() {
fields := bytes.Split(scanner.Bytes(), []byte{':'})
if len(fields) < 3 {
// The lines should always have three fields, there's something fishy here.
continue
}
f0, f1 := string(fields[0]), string(fields[1])
// First case if v2, second - v1. We give v2 the priority here.
// There is also a `hybrid` mode when both versions are enabled,
// but no known container solutions support it.
if f0 == "0" && f1 == "" {
unifiedPathIfFound = string(fields[2])
} else if controllerMatch(f1, controller) {
var result []byte
// In some case, the cgroup path contains `:`. We need to join them back.
if len(fields) > 3 {
result = bytes.Join(fields[2:], []byte(":"))
} else {
result = fields[2]
}
return string(result), nil
}
}
return unifiedPathIfFound, nil
}
// See http://man7.org/linux/man-pages/man5/proc.5.html for `mountinfo` format.
func getCgroupDetails(mountInfoPath string, cRoot string, controller string) (mount []string, version []int, err error) {
//nolint:gosec
info, err := os.Open(mountInfoPath)
if err != nil {
return nil, nil, errors.Wrapf(err, "failed to read mounts info from file: %s", mountInfoPath)
}
defer func() {
err := info.Close()
if err != nil {
log.Error("close mountInfoPath", zap.Error(err))
}
}()
var foundVer1, foundVer2 = false, false
var mountPointVer1, mountPointVer2 string
scanner := bufio.NewScanner(info)
for scanner.Scan() {
fields := bytes.Fields(scanner.Bytes())
if len(fields) < 10 {
continue
}
ver, ok := detectCgroupVersion(fields, controller)
if ok {
mountPoint := string(fields[4])
if ver == 2 {
foundVer2 = true
mountPointVer2 = mountPoint
continue
}
// It is possible that the controller mount and the cgroup path are not the same (both are relative to the NS root).
// So start with the mount and construct the relative path of the cgroup.
// To test:
// 1、start a docker to run unit test or tidb-server
// > docker run -it --cpus=8 --memory=8g --name test --rm ubuntu:18.04 bash
//
// 2、change the limit when the container is running
// docker update --cpus=8 <containers>
nsRelativePath := string(fields[3])
if !strings.Contains(nsRelativePath, "..") {
// We don't expect to see err here ever but in case that it happens
// the best action is to ignore the line and hope that the rest of the lines
// will allow us to extract a valid path.
if relPath, err := filepath.Rel(nsRelativePath, cRoot); err == nil {
mountPointVer1 = filepath.Join(mountPoint, relPath)
foundVer1 = true
}
}
}
}
if foundVer1 && foundVer2 {
return []string{mountPointVer1, mountPointVer2}, []int{1, 2}, nil
}
if foundVer1 {
return []string{mountPointVer1}, []int{1}, nil
}
if foundVer2 {
return []string{mountPointVer2}, []int{2}, nil
}
return nil, nil, fmt.Errorf("failed to detect cgroup root mount and version")
}
func cgroupFileToUint64(filepath, desc string) (res uint64, err error) {
contents, err := readFile(filepath)
if err != nil {
return 0, errors.Wrapf(err, "error when reading %s from cgroup v1 at %s", desc, filepath)
}
res, err = strconv.ParseUint(string(bytes.TrimSpace(contents)), 10, 64)
if err != nil {
return 0, errors.Wrapf(err, "error when parsing %s from cgroup v1 at %s", desc, filepath)
}
return res, err
}
func cgroupFileToInt64(filepath, desc string) (res int64, err error) {
contents, err := readFile(filepath)
if err != nil {
return 0, errors.Wrapf(err, "error when reading %s from cgroup v1 at %s", desc, filepath)
}
res, err = strconv.ParseInt(string(bytes.TrimSpace(contents)), 10, 64)
if err != nil {
return 0, errors.Wrapf(err, "error when parsing %s from cgroup v1 at %s", desc, filepath)
}
return res, nil
}
// Return version of cgroup mount for memory controller if found
func detectCgroupVersion(fields [][]byte, controller string) (_ int, found bool) {
if len(fields) < 10 {
return 0, false
}
// Due to strange format there can be optional fields in the middle of the set, starting
// from the field #7. The end of the fields is marked with "-" field
var pos = 6
for pos < len(fields) {
if bytes.Equal(fields[pos], []byte{'-'}) {
break
}
pos++
}
// No optional fields separator found or there is less than 3 fields after it which is wrong
if (len(fields) - pos - 1) < 3 {
return 0, false
}
pos++
// Check for controller specifically in cgroup v1 (it is listed in super
// options field), as the value can't be found if it is not enforced.
if bytes.Equal(fields[pos], []byte("cgroup")) && controllerMatch(string(fields[pos+2]), controller) {
return 1, true
} else if bytes.Equal(fields[pos], []byte("cgroup2")) {
return 2, true
}
return 0, false
}
func detectCPUQuotaInV1(cRoot string) (period, quota int64, err error) {
quotaFilePath := filepath.Join(cRoot, cgroupV1CPUQuota)
periodFilePath := filepath.Join(cRoot, cgroupV1CPUPeriod)
quota, err = cgroupFileToInt64(quotaFilePath, "cpu quota")
if err != nil {
return 0, 0, err
}
period, err = cgroupFileToInt64(periodFilePath, "cpu period")
if err != nil {
return 0, 0, err
}
return period, quota, err
}
func detectCPUUsageInV1(cRoot string) (stime, utime uint64, err error) {
sysFilePath := filepath.Join(cRoot, cgroupV1CPUSysUsage)
userFilePath := filepath.Join(cRoot, cgroupV1CPUUserUsage)
stime, err = cgroupFileToUint64(sysFilePath, "cpu system time")
if err != nil {
return 0, 0, err
}
utime, err = cgroupFileToUint64(userFilePath, "cpu user time")
if err != nil {
return 0, 0, err
}
return stime, utime, err
}
func detectCPUQuotaInV2(cRoot string) (period, quota int64, err error) {
maxFilePath := filepath.Join(cRoot, cgroupV2CPUMax)
contents, err := readFile(maxFilePath)
if err != nil {
return 0, 0, errors.Wrapf(err, "error when read cpu quota from cgroup v2 at %s", maxFilePath)
}
fields := strings.Fields(string(contents))
if len(fields) > 2 || len(fields) == 0 {
return 0, 0, errors.Errorf("unexpected format when reading cpu quota from cgroup v2 at %s: %s", maxFilePath, contents)
}
if fields[0] == "max" {
// Negative quota denotes no limit.
quota = -1
} else {
quota, err = strconv.ParseInt(fields[0], 10, 64)
if err != nil {
return 0, 0, errors.Wrapf(err, "error when reading cpu quota from cgroup v2 at %s", maxFilePath)
}
}
if len(fields) == 2 {
period, err = strconv.ParseInt(fields[1], 10, 64)
if err != nil {
return 0, 0, errors.Wrapf(err, "error when reading cpu period from cgroup v2 at %s", maxFilePath)
}
}
return period, quota, nil
}
func detectCPUUsageInV2(cRoot string) (stime, utime uint64, err error) {
statFilePath := filepath.Join(cRoot, cgroupV2CPUStat)
var stat *os.File
//nolint:gosec
stat, err = os.Open(statFilePath)
if err != nil {
return 0, 0, errors.Wrapf(err, "can't read cpu usage from cgroup v2 at %s", statFilePath)
}
defer func() {
err = errors.Join(err, stat.Close())
}()
scanner := bufio.NewScanner(stat)
for scanner.Scan() {
fields := bytes.Fields(scanner.Bytes())
if len(fields) != 2 || (string(fields[0]) != "user_usec" && string(fields[0]) != "system_usec") {
continue
}
keyField := string(fields[0])
trimmed := string(bytes.TrimSpace(fields[1]))
usageVar := &stime
if keyField == "user_usec" {
usageVar = &utime
}
*usageVar, err = strconv.ParseUint(trimmed, 10, 64)
if err != nil {
return 0, 0, errors.Wrapf(err, "can't read cpu usage %s from cgroup v1 at %s", keyField, statFilePath)
}
}
return stime, utime, err
}
func readInt64Value(root, filename string, cgVersion int) (value uint64, err error) {
filePath := filepath.Join(root, filename)
//nolint:gosec
file, err := os.Open(filePath)
if err != nil {
return 0, errors.Wrapf(err, "can't read %s from cgroup v%d", filename, cgVersion)
}
defer file.Close()
scanner := bufio.NewScanner(file)
present := scanner.Scan()
if !present {
return 0, errors.Wrapf(err, "no value found in %s from cgroup v%d", filename, cgVersion)
}
data := scanner.Bytes()
trimmed := string(bytes.TrimSpace(data))
// cgroupv2 has certain control files that default to "max", so handle here.
if trimmed == "max" {
return math.MaxInt64, nil
}
value, err = strconv.ParseUint(trimmed, 10, 64)
if err != nil {
return 0, errors.Wrapf(err, "failed to parse value in %s from cgroup v%d", filename, cgVersion)
}
return value, nil
}
// Copyright 2022 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package cgroup
import (
"fmt"
"path/filepath"
"github.com/pingcap/errors"
)
var errNoCPUControllerDetected = errors.New("no cpu controller detected")
// Helper function for getCgroupCPU. Root is always "/", except in tests.
func getCgroupCPU(root string) (CPUUsage, error) {
path, err := detectControlPath(filepath.Join(root, procPathCGroup), "cpu,cpuacct")
if err != nil {
return CPUUsage{}, err
}
// No CPU controller detected
if path == "" {
return CPUUsage{}, errors.New("no cpu controller detected")
}
mount, ver, err := getCgroupDetails(filepath.Join(root, procPathMountInfo), path, "cpu,cpuacct")
if err != nil {
return CPUUsage{}, err
}
var res CPUUsage
if len(mount) == 2 {
cgroupRootV1 := filepath.Join(root, mount[0])
cgroupRootV2 := filepath.Join(root, mount[1], path)
res.Period, res.Quota, err = detectCPUQuotaInV2(cgroupRootV2)
if err != nil {
res.Period, res.Quota, err = detectCPUQuotaInV1(cgroupRootV1)
}
if err != nil {
return res, err
}
res.Stime, res.Utime, err = detectCPUUsageInV2(cgroupRootV2)
if err != nil {
res.Stime, res.Utime, err = detectCPUUsageInV1(cgroupRootV1)
}
if err != nil {
return res, err
}
} else {
switch ver[0] {
case 1:
cgroupRoot := filepath.Join(root, mount[0])
res.Period, res.Quota, err = detectCPUQuotaInV1(cgroupRoot)
if err != nil {
return res, err
}
res.Stime, res.Utime, err = detectCPUUsageInV1(cgroupRoot)
if err != nil {
return res, err
}
case 2:
cgroupRoot := filepath.Join(root, mount[0], path)
res.Period, res.Quota, err = detectCPUQuotaInV2(cgroupRoot)
if err != nil {
return res, err
}
res.Stime, res.Utime, err = detectCPUUsageInV2(cgroupRoot)
if err != nil {
return res, err
}
default:
return CPUUsage{}, fmt.Errorf("detected unknown cgroup version index: %d", ver[0])
}
}
return res, nil
}
// Helper function for getCgroupCPUPeriodAndQuota. Root is always "/", except in tests.
func getCgroupCPUPeriodAndQuota(root string) (period int64, quota int64, err error) {
path, err := detectControlPath(filepath.Join(root, procPathCGroup), "cpu")
if err != nil {
return
}
// No CPU controller detected
if path == "" {
err = errors.New("no cpu controller detected")
return
}
mount, ver, err := getCgroupDetails(filepath.Join(root, procPathMountInfo), path, "cpu")
if err != nil {
return
}
if len(mount) == 2 {
cgroupRootV1 := filepath.Join(root, mount[0])
cgroupRootV2 := filepath.Join(root, mount[1], path)
period, quota, err = detectCPUQuotaInV2(cgroupRootV2)
if err != nil {
period, quota, err = detectCPUQuotaInV1(cgroupRootV1)
}
if err != nil {
return
}
} else {
switch ver[0] {
case 1:
cgroupRoot := filepath.Join(root, mount[0])
period, quota, err = detectCPUQuotaInV1(cgroupRoot)
case 2:
cgroupRoot := filepath.Join(root, mount[0], path)
period, quota, err = detectCPUQuotaInV2(cgroupRoot)
default:
err = fmt.Errorf("detected unknown cgroup version index: %d", ver[0])
}
}
return
}
// CPUShares returns the number of CPUs this cgroup can be expected to
// max out. If there's no limit, NumCPU is returned.
func (c CPUUsage) CPUShares() float64 {
if c.Period <= 0 || c.Quota <= 0 {
return float64(c.NumCPU)
}
return float64(c.Quota) / float64(c.Period)
}
// Copyright 2022 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//go:build linux
package cgroup
import (
"math"
"os"
"runtime"
"strings"
"github.com/pingcap/errors"
"github.com/pingcap/failpoint"
)
// GetCgroupCPU returns the CPU usage and quota for the current cgroup.
func GetCgroupCPU() (CPUUsage, error) {
failpoint.Inject("GetCgroupCPUErr", func(val failpoint.Value) {
//nolint:forcetypeassert
if val.(bool) {
var cpuUsage CPUUsage
failpoint.Return(cpuUsage, errors.Errorf("mockAddBatchDDLJobsErr"))
}
})
cpuusage, err := getCgroupCPU("/")
cpuusage.NumCPU = runtime.NumCPU()
return cpuusage, err
}
// CPUQuotaToGOMAXPROCS converts the CPU quota applied to the calling process
// to a valid GOMAXPROCS value.
func CPUQuotaToGOMAXPROCS(minValue int) (int, CPUQuotaStatus, error) {
quota, err := GetCgroupCPU()
if err != nil {
return -1, CPUQuotaUndefined, err
}
maxProcs := int(math.Ceil(quota.CPUShares()))
if minValue > 0 && maxProcs < minValue {
return minValue, CPUQuotaMinUsed, nil
}
return maxProcs, CPUQuotaUsed, nil
}
// GetCPUPeriodAndQuota returns CPU period and quota time of cgroup.
func GetCPUPeriodAndQuota() (period int64, quota int64, err error) {
return getCgroupCPUPeriodAndQuota("/")
}
// InContainer returns true if the process is running in a container.
func InContainer() bool {
// for cgroup V1, check /proc/self/cgroup, for V2, check /proc/self/mountinfo
return inContainer(procPathCGroup) || inContainer(procPathMountInfo)
}
func inContainer(path string) bool {
v, err := os.ReadFile(path)
if err != nil {
return false
}
// For cgroup V1, check /proc/self/cgroup
if path == procPathCGroup {
if strings.Contains(string(v), "docker") ||
strings.Contains(string(v), "kubepods") ||
strings.Contains(string(v), "containerd") {
return true
}
}
// For cgroup V2, check /proc/self/mountinfo
if path == procPathMountInfo {
lines := strings.Split(string(v), "\n")
for _, line := range lines {
v := strings.Split(line, " ")
// check mount point of root dir is on overlay or not.
// v[4] means `mount point`, v[8] means `filesystem type`.
// see details from https://man7.org/linux/man-pages/man5/proc.5.html
// TODO: enhance this check, as overlay is not the only storage driver for container.
if len(v) > 8 && v[4] == "/" && v[8] == "overlay" {
return true
}
}
}
return false
}
// Copyright 2022 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//go:build linux
package cgroup
import (
"bufio"
"bytes"
"fmt"
"os"
"path/filepath"
"strconv"
"github.com/pingcap/errors"
"github.com/pingcap/log"
)
// GetMemoryLimit attempts to retrieve the cgroup memory limit for the current
// process.
func GetMemoryLimit() (limit uint64, err error) {
limit, _, err = getCgroupMemLimit("/")
return
}
// GetCgroupMemLimit attempts to retrieve the cgroup memory limit for the current
// process, and return cgroup version too.
func GetCgroupMemLimit() (uint64, Version, error) {
return getCgroupMemLimit("/")
}
// GetMemoryUsage attempts to retrieve the cgroup memory usage value (in bytes)
// for the current process.
func GetMemoryUsage() (usage uint64, err error) {
return getCgroupMemUsage("/")
}
// GetMemoryInactiveFileUsage attempts to retrieve the cgroup memory usage value (in bytes)
// for the current process.
func GetMemoryInactiveFileUsage() (usage uint64, err error) {
return getCgroupMemInactiveFileUsage("/")
}
// root is always "/" in the production. It will be changed for testing.
func getCgroupMemInactiveFileUsage(root string) (usage uint64, err error) {
path, err := detectControlPath(filepath.Join(root, procPathCGroup), "memory")
if err != nil {
return 0, err
}
if path == "" {
log.Warn("no cgroup memory controller detected")
return 0, nil
}
mount, ver, err := getCgroupDetails(filepath.Join(root, procPathMountInfo), path, "memory")
if err != nil {
return 0, err
}
if len(mount) == 2 {
usage, err = detectMemInactiveFileUsageInV1(filepath.Join(root, mount[0]))
if err != nil {
usage, err = detectMemInactiveFileUsageInV2(filepath.Join(root, mount[1], path))
}
} else {
switch ver[0] {
case 1:
usage, err = detectMemInactiveFileUsageInV1(filepath.Join(root, mount[0]))
case 2:
usage, err = detectMemInactiveFileUsageInV2(filepath.Join(root, mount[0], path))
default:
usage, err = 0, fmt.Errorf("detected unknown cgroup version index: %d", ver)
}
}
return usage, err
}
// getCgroupMemUsage reads the memory cgroup's current memory usage (in bytes).
func getCgroupMemUsage(root string) (usage uint64, err error) {
path, err := detectControlPath(filepath.Join(root, procPathCGroup), "memory")
if err != nil {
return 0, err
}
if path == "" {
log.Warn("no cgroup memory controller detected")
return 0, nil
}
mount, ver, err := getCgroupDetails(filepath.Join(root, procPathMountInfo), path, "memory")
if err != nil {
return 0, err
}
if len(ver) == 2 {
usage, err = detectMemUsageInV1(filepath.Join(root, mount[0]))
if err != nil {
usage, err = detectMemUsageInV2(filepath.Join(root, mount[0], path))
}
} else {
switch ver[0] {
case 1:
// cgroupv1
usage, err = detectMemUsageInV1(filepath.Join(root, mount[0]))
case 2:
// cgroupv2
usage, err = detectMemUsageInV2(filepath.Join(root, mount[0], path))
default:
usage, err = 0, fmt.Errorf("detected unknown cgroup version index: %d", ver)
}
}
return usage, err
}
// root is always "/" in the production. It will be changed for testing.
func getCgroupMemLimit(root string) (limit uint64, version Version, err error) {
version = Unknown
path, err := detectControlPath(filepath.Join(root, procPathCGroup), "memory")
if err != nil {
return 0, version, err
}
if path == "" {
log.Warn("no cgroup memory controller detected")
return 0, version, nil
}
mount, ver, err := getCgroupDetails(filepath.Join(root, procPathMountInfo), path, "memory")
if err != nil {
return 0, version, err
}
if len(ver) == 2 {
version = V1
limit, err = detectMemLimitInV1(filepath.Join(root, mount[0]))
if err != nil {
version = V2
limit, err = detectMemLimitInV2(filepath.Join(root, mount[1], path))
}
} else {
switch ver[0] {
case 1:
// cgroupv1
version = V1
limit, err = detectMemLimitInV1(filepath.Join(root, mount[0]))
case 2:
// cgroupv2
version = V2
limit, err = detectMemLimitInV2(filepath.Join(root, mount[0], path))
default:
limit, err = 0, fmt.Errorf("detected unknown cgroup version index: %d", ver)
}
}
return limit, version, err
}
func detectMemLimitInV1(cRoot string) (limit uint64, err error) {
return detectMemStatValue(cRoot, cgroupV1MemStat, cgroupV1MemLimitStatKey, 1)
}
// TODO(hawkingrei): this implementation was based on podman+criu environment.
// It may cover not all the cases when v2 becomes more widely used in container
// world.
// In K8S env, the value hold in memory.max is the memory limit defined in pod definition,
// the real memory limit should be the minimum value in the whole cgroup hierarchy
// as in cgroup V1, but cgroup V2 lacks the feature, see this patch for more details:
// https://lore.kernel.org/linux-kernel/ZctiM5RintD_D0Lt@host1.jankratochvil.net/T/
// So, in cgroup V2, the value better be adjusted by some factor, like 0.9, to
// avoid OOM. see taskexecutor/manager.go too.
func detectMemLimitInV2(cRoot string) (limit uint64, err error) {
return readInt64Value(cRoot, cgroupV2MemLimit, 2)
}
func detectMemInactiveFileUsageInV1(root string) (uint64, error) {
return detectMemStatValue(root, cgroupV1MemStat, cgroupV1MemInactiveFileUsageStatKey, 1)
}
func detectMemInactiveFileUsageInV2(root string) (uint64, error) {
return detectMemStatValue(root, cgroupV2MemStat, cgroupV2MemInactiveFileUsageStatKey, 2)
}
func detectMemStatValue(cRoot, filename, key string, cgVersion int) (value uint64, err error) {
statFilePath := filepath.Join(cRoot, filename)
//nolint:gosec
stat, err := os.Open(statFilePath)
if err != nil {
return 0, errors.Wrapf(err, "can't read file %s from cgroup v%d", filename, cgVersion)
}
defer func() {
_ = stat.Close()
}()
scanner := bufio.NewScanner(stat)
for scanner.Scan() {
fields := bytes.Fields(scanner.Bytes())
if len(fields) != 2 || string(fields[0]) != key {
continue
}
trimmed := string(bytes.TrimSpace(fields[1]))
value, err = strconv.ParseUint(trimmed, 10, 64)
if err != nil {
return 0, errors.Wrapf(err, "can't read %q memory stat from cgroup v%d in %s", key, cgVersion, filename)
}
return value, nil
}
return 0, fmt.Errorf("failed to find expected memory stat %q for cgroup v%d in %s", key, cgVersion, filename)
}
func detectMemUsageInV1(cRoot string) (memUsage uint64, err error) {
return readInt64Value(cRoot, cgroupV1MemUsage, 1)
}
// TODO(hawkingrei): this implementation was based on podman+criu environment. It
// may cover not all the cases when v2 becomes more widely used in container
// world.
func detectMemUsageInV2(cRoot string) (memUsage uint64, err error) {
return readInt64Value(cRoot, cgroupV2MemUsage, 2)
}
// Copyright 2020 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package collate
import (
"strings"
"github.com/pingcap/tidb/pkg/util/hack"
"github.com/pingcap/tidb/pkg/util/stringutil"
)
// binCollator match pattern in bytes
type binCollator struct {
}
// Compare implement Collator interface.
func (*binCollator) Compare(a, b string) int {
return strings.Compare(a, b)
}
// Key implement Collator interface.
func (*binCollator) Key(str string) []byte {
return []byte(str)
}
// ImmutableKey implement Collator interface.
func (*binCollator) ImmutableKey(str string) []byte {
return hack.Slice(str)
}
// KeyWithoutTrimRightSpace implement Collator interface.
func (*binCollator) KeyWithoutTrimRightSpace(str string) []byte {
return []byte(str)
}
// Pattern implements Collator interface.
func (*binCollator) Pattern() WildcardPattern {
return &binPattern{}
}
// Clone implements Collator interface.
func (*binCollator) Clone() Collator {
return new(binCollator)
}
type derivedBinCollator struct {
binCollator
}
// Pattern implements Collator interface.
func (*derivedBinCollator) Pattern() WildcardPattern {
return &derivedBinPattern{}
}
type binPaddingCollator struct {
}
func (*binPaddingCollator) Compare(a, b string) int {
return strings.Compare(truncateTailingSpace(a), truncateTailingSpace(b))
}
func (*binPaddingCollator) Key(str string) []byte {
return []byte(truncateTailingSpace(str))
}
// ImmutableKey implement Collator interface.
func (*binPaddingCollator) ImmutableKey(str string) []byte {
return hack.Slice(truncateTailingSpace(str))
}
// KeyWithoutTrimRightSpace implement Collator interface.
func (*binPaddingCollator) KeyWithoutTrimRightSpace(str string) []byte {
return []byte(str)
}
// Pattern implements Collator interface.
// Notice that trailing spaces are significant.
func (*binPaddingCollator) Pattern() WildcardPattern {
return &derivedBinPattern{}
}
// Clone implements Collator interface.
func (*binPaddingCollator) Clone() Collator {
return new(binPaddingCollator)
}
type derivedBinPattern struct {
patChars []rune
patTypes []byte
}
// Compile implements WildcardPattern interface.
func (p *derivedBinPattern) Compile(patternStr string, escape byte) {
p.patChars, p.patTypes = stringutil.CompilePattern(patternStr, escape)
}
// DoMatch implements WildcardPattern interface.
func (p *derivedBinPattern) DoMatch(str string) bool {
return stringutil.DoMatch(str, p.patChars, p.patTypes)
}
type binPattern struct {
patChars []byte
patTypes []byte
}
// Compile implements WildcardPattern interface.
func (p *binPattern) Compile(patternStr string, escape byte) {
p.patChars, p.patTypes = stringutil.CompilePatternBinary(patternStr, escape)
}
// DoMatch implements WildcardPattern interface.
func (p *binPattern) DoMatch(str string) bool {
return stringutil.DoMatchBinary(str, p.patChars, p.patTypes)
}
// Copyright 2021 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package collate
import "github.com/pingcap/tidb/pkg/parser/charset"
// switchDefaultCollation switch the default collation for charset according to the new collation config.
func switchDefaultCollation(flag bool) {
if flag {
charset.CharacterSetInfos[charset.CharsetGBK].DefaultCollation = charset.CollationGBKChineseCI
charset.CharacterSetInfos[charset.CharsetGB18030].DefaultCollation = charset.CollationGB18030ChineseCI
} else {
charset.CharacterSetInfos[charset.CharsetGBK].DefaultCollation = charset.CollationGBKBin
charset.CharacterSetInfos[charset.CharsetGB18030].DefaultCollation = charset.CollationGB18030Bin
}
charset.CharacterSetInfos[charset.CharsetGBK].Collations[charset.CollationGBKBin].IsDefault = !flag
charset.CharacterSetInfos[charset.CharsetGBK].Collations[charset.CollationGBKChineseCI].IsDefault = flag
charset.CharacterSetInfos[charset.CharsetGB18030].Collations[charset.CollationGB18030Bin].IsDefault = !flag
charset.CharacterSetInfos[charset.CharsetGB18030].Collations[charset.CollationGB18030ChineseCI].IsDefault = flag
}
// Copyright 2020 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package collate
import (
"cmp"
"fmt"
"slices"
"sync/atomic"
"github.com/pingcap/errors"
"github.com/pingcap/tidb/pkg/parser/charset"
"github.com/pingcap/tidb/pkg/parser/mysql"
"github.com/pingcap/tidb/pkg/parser/terror"
"github.com/pingcap/tidb/pkg/util/dbterror"
"github.com/pingcap/tidb/pkg/util/logutil"
"go.uber.org/zap"
)
var (
newCollatorMap map[string]Collator
newCollatorIDMap map[int]Collator
newCollationEnabled int32
// binCollatorInstance is a singleton used for all collations when newCollationEnabled is false.
binCollatorInstance = &derivedBinCollator{}
binCollatorInstanceSliceWithLen1 = []Collator{binCollatorInstance}
// ErrUnsupportedCollation is returned when an unsupported collation is specified.
ErrUnsupportedCollation = dbterror.ClassDDL.NewStdErr(mysql.ErrUnknownCollation, mysql.Message("Unsupported collation when new collation is enabled: '%-.64s'", nil))
// ErrIllegalMixCollation is returned when illegal mix of collations.
ErrIllegalMixCollation = dbterror.ClassExpression.NewStd(mysql.ErrCantAggregateNcollations)
// ErrIllegalMix2Collation is returned when illegal mix of 2 collations.
ErrIllegalMix2Collation = dbterror.ClassExpression.NewStd(mysql.ErrCantAggregate2collations)
// ErrIllegalMix3Collation is returned when illegal mix of 3 collations.
ErrIllegalMix3Collation = dbterror.ClassExpression.NewStd(mysql.ErrCantAggregate3collations)
)
const (
// DefaultLen is set for datum if the string datum don't know its length.
DefaultLen = 0
)
// Collator provides functionality for comparing strings for a given
// collation order.
type Collator interface {
// Compare returns an integer comparing the two strings. The result will be 0 if a == b, -1 if a < b, and +1 if a > b.
Compare(a, b string) int
// Key returns the collate key for str. If the collation is padding, make sure the PadLen >= len(rune[]str) in opt.
Key(str string) []byte
// ImmutableKey is the same as Key except that the returned key should not be changed by future calls.
// It can avoid memory allocation and copy in some collations. The caller should not modify the returned value.
ImmutableKey(str string) []byte
// KeyWithoutTrimRightSpace returns the collate key for str. The difference with Key is str will not be trimed.
KeyWithoutTrimRightSpace(str string) []byte
// Pattern get a collation-aware WildcardPattern.
Pattern() WildcardPattern
// Clone returns a copy of the collator.
Clone() Collator
}
// WildcardPattern is the interface used for wildcard pattern match.
type WildcardPattern interface {
// Compile compiles the patternStr with specified escape character.
Compile(patternStr string, escape byte)
// DoMatch tries to match the str with compiled pattern, `Compile()` must be called before calling it.
DoMatch(str string) bool
}
// SetNewCollationEnabledForTest sets if the new collation are enabled in test.
// Note: Be careful to use this function, if this functions is used in tests, make sure the tests are serial.
func SetNewCollationEnabledForTest(flag bool) {
switchDefaultCollation(flag)
if flag {
atomic.StoreInt32(&newCollationEnabled, 1)
return
}
atomic.StoreInt32(&newCollationEnabled, 0)
}
// NewCollationEnabled returns if the new collations are enabled.
func NewCollationEnabled() bool {
return atomic.LoadInt32(&newCollationEnabled) == 1
}
// CompatibleCollate checks whether the two collate are the same.
func CompatibleCollate(collate1, collate2 string) bool {
if (collate1 == "utf8mb4_general_ci" || collate1 == "utf8_general_ci") && (collate2 == "utf8mb4_general_ci" || collate2 == "utf8_general_ci") {
return true
} else if (collate1 == "utf8mb4_bin" || collate1 == "utf8_bin" || collate1 == "latin1_bin") && (collate2 == "utf8mb4_bin" || collate2 == "utf8_bin" || collate2 == "latin1_bin") {
return true
} else if (collate1 == "utf8mb4_unicode_ci" || collate1 == "utf8_unicode_ci") && (collate2 == "utf8mb4_unicode_ci" || collate2 == "utf8_unicode_ci") {
return true
}
return collate1 == collate2
}
// RewriteNewCollationIDIfNeeded rewrites a collation id if the new collations are enabled.
// When new collations are enabled, we turn the collation id to negative so that other the
// components of the cluster(for example, TiKV) is able to aware of it without any change to
// the protocol definition.
// When new collations are not enabled, collation id remains the same.
func RewriteNewCollationIDIfNeeded(id int32) int32 {
if atomic.LoadInt32(&newCollationEnabled) == 1 {
if id >= 0 {
return -id
}
logutil.BgLogger().Warn("Unexpected negative collation ID for rewrite.", zap.Int32("ID", id))
}
return id
}
// RestoreCollationIDIfNeeded restores a collation id if the new collations are enabled.
func RestoreCollationIDIfNeeded(id int32) int32 {
if atomic.LoadInt32(&newCollationEnabled) == 1 {
if id <= 0 {
return -id
}
logutil.BgLogger().Warn("Unexpected positive collation ID for restore.", zap.Int32("ID", id))
}
return id
}
// GetCollator get the collator according to collate, it will return the binary collator if the corresponding collator doesn't exist.
func GetCollator(collate string) Collator {
if atomic.LoadInt32(&newCollationEnabled) == 1 {
ctor, ok := newCollatorMap[collate]
if !ok {
if collate != "" {
logutil.BgLogger().Warn(
"Unable to get collator by name, use binCollator instead.",
zap.String("name", collate),
zap.Stack("stack"))
}
return newCollatorMap[charset.CollationUTF8MB4]
}
return ctor
}
return binCollatorInstance
}
// GetBinaryCollator gets the binary collator, it is often used when we want to apply binary compare.
func GetBinaryCollator() Collator {
return binCollatorInstance
}
// GetBinaryCollatorSlice gets the binary collator slice with len n.
func GetBinaryCollatorSlice(n int) []Collator {
if n == 1 {
return binCollatorInstanceSliceWithLen1
}
collators := make([]Collator, n)
for i := range n {
collators[i] = binCollatorInstance
}
return collators
}
// GetCollatorByID get the collator according to id, it will return the binary collator if the corresponding collator doesn't exist.
func GetCollatorByID(id int) Collator {
if atomic.LoadInt32(&newCollationEnabled) == 1 {
ctor, ok := newCollatorIDMap[id]
if !ok {
logutil.BgLogger().Warn(
"Unable to get collator by ID, use binCollator instead.",
zap.Int("ID", id),
zap.Stack("stack"))
return newCollatorMap["utf8mb4_bin"]
}
return ctor
}
return binCollatorInstance
}
// CollationID2Name return the collation name by the given id.
// If the id is not found in the map, the default collation is returned.
func CollationID2Name(id int32) string {
collation, err := charset.GetCollationByID(int(id))
if err != nil {
// TODO(bb7133): fix repeating logs when the following code is uncommented.
// logutil.BgLogger().Warn(
// "Unable to get collation name from ID, use default collation instead.",
// zap.Int32("ID", id),
// zap.Stack("stack"))
return mysql.DefaultCollationName
}
return collation.Name
}
// CollationName2ID return the collation id by the given name.
// If the name is not found in the map, the default collation id is returned
func CollationName2ID(name string) int {
if coll, err := charset.GetCollationByName(name); err == nil {
return coll.ID
}
return mysql.DefaultCollationID
}
// SubstituteMissingCollationToDefault will switch to the default collation if
// new collations are enabled and the specified collation is not supported.
func SubstituteMissingCollationToDefault(co string) string {
var err error
if _, err = GetCollationByName(co); err == nil {
return co
}
logutil.BgLogger().Warn(fmt.Sprintf("The collation %s specified on connection is not supported when new collation is enabled, switch to the default collation: %s", co, mysql.DefaultCollationName))
var coll *charset.Collation
if coll, err = GetCollationByName(charset.CollationUTF8MB4); err != nil {
logutil.BgLogger().Warn(err.Error())
}
return coll.Name
}
// GetCollationByName wraps charset.GetCollationByName, it checks the collation.
func GetCollationByName(name string) (coll *charset.Collation, err error) {
if coll, err = charset.GetCollationByName(name); err != nil {
return nil, errors.Trace(err)
}
if atomic.LoadInt32(&newCollationEnabled) == 1 {
if _, ok := newCollatorIDMap[coll.ID]; !ok {
return nil, ErrUnsupportedCollation.GenWithStackByArgs(name)
}
}
return
}
// GetSupportedCollations gets information for all collations supported so far.
func GetSupportedCollations() []*charset.Collation {
if atomic.LoadInt32(&newCollationEnabled) == 1 {
newSupportedCollations := make([]*charset.Collation, 0, len(newCollatorMap))
for name := range newCollatorMap {
// utf8mb4_zh_pinyin_tidb_as_cs is under developing, should not be shown to user.
if name == "utf8mb4_zh_pinyin_tidb_as_cs" {
continue
}
if coll, err := charset.GetCollationByName(name); err != nil {
// Should never happens.
terror.Log(err)
} else {
newSupportedCollations = append(newSupportedCollations, coll)
}
}
slices.SortFunc(newSupportedCollations, func(i, j *charset.Collation) int {
return cmp.Compare(i.Name, j.Name)
})
return newSupportedCollations
}
return charset.GetSupportedCollations()
}
func truncateTailingSpace(str string) string {
byteLen := len(str)
i := byteLen - 1
for ; i >= 0; i-- {
if str[i] != ' ' {
break
}
}
str = str[:i+1]
return str
}
func sign(i int) int {
if i < 0 {
return -1
} else if i > 0 {
return 1
}
return 0
}
func runeLen(b byte) int {
if b < 0x80 {
return 1
} else if b < 0xE0 {
return 2
} else if b < 0xF0 {
return 3
}
return 4
}
// IsDefaultCollationForUTF8MB4 returns if the collation is DefaultCollationForUTF8MB4.
func IsDefaultCollationForUTF8MB4(collate string) bool {
// utf8mb4_bin is used for the migrations/replication from TiDB with version prior to v7.4.0.
return collate == "utf8mb4_bin" || collate == "utf8mb4_general_ci" || collate == "utf8mb4_0900_ai_ci"
}
// IsCICollation returns if the collation is case-insensitive
func IsCICollation(collate string) bool {
return collate == "utf8_general_ci" || collate == "utf8mb4_general_ci" ||
collate == "utf8_unicode_ci" || collate == "utf8mb4_unicode_ci" || collate == "gbk_chinese_ci" ||
collate == "utf8mb4_0900_ai_ci" || collate == "gb18030_chinese_ci"
}
// ConvertAndGetBinCollation converts collation to binary collation
func ConvertAndGetBinCollation(collate string) string {
switch collate {
case "utf8_general_ci":
return "utf8_bin"
case "utf8_unicode_ci":
return "utf8_bin"
case "utf8mb4_general_ci":
return "utf8mb4_bin"
case "utf8mb4_unicode_ci":
return "utf8mb4_bin"
case "utf8mb4_0900_ai_ci":
return "utf8mb4_bin"
case "gbk_chinese_ci":
return "gbk_bin"
case "gb18030_chinese_ci":
return "gb18030_bin"
}
return collate
}
// ConvertAndGetBinCollator converts collation to binary collator
func ConvertAndGetBinCollator(collate string) Collator {
return GetCollator(ConvertAndGetBinCollation(collate))
}
// IsBinCollation returns if the collation is 'xx_bin' or 'bin'.
// The function is to determine whether the sortkey of a char type of data under the collation is equal to the data itself,
// and both xx_bin and collationBin are satisfied.
func IsBinCollation(collate string) bool {
return collate == charset.CollationASCII || collate == charset.CollationLatin1 ||
collate == charset.CollationUTF8 || collate == charset.CollationUTF8MB4 ||
collate == charset.CollationBin || collate == "utf8mb4_0900_bin"
// TODO: define a constant to reference collations
}
// IsPadSpaceCollation returns whether the collation is a PAD SPACE collation.
func IsPadSpaceCollation(collation string) bool {
return collation != charset.CollationBin && collation != "utf8mb4_0900_ai_ci" && collation != "utf8mb4_0900_bin"
}
// CollationToProto converts collation from string to int32(used by protocol).
func CollationToProto(c string) int32 {
if coll, err := charset.GetCollationByName(c); err == nil {
return RewriteNewCollationIDIfNeeded(int32(coll.ID))
}
v := RewriteNewCollationIDIfNeeded(int32(mysql.DefaultCollationID))
logutil.BgLogger().Warn(
"Unable to get collation ID by name, use ID of the default collation instead",
zap.String("name", c),
zap.Int32("default collation ID", v),
zap.String("default collation", mysql.DefaultCollationName),
)
return v
}
// CanUseRawMemAsKey returns true if current collator can use the original raw memory as the key
// only return true for binCollator and derivedBinCollator
func CanUseRawMemAsKey(c Collator) bool {
if _, ok := c.(*binCollator); ok {
return true
}
if _, ok := c.(*derivedBinCollator); ok {
return true
}
return false
}
// ProtoToCollation converts collation from int32(used by protocol) to string.
func ProtoToCollation(c int32) string {
coll, err := charset.GetCollationByID(int(RestoreCollationIDIfNeeded(c)))
if err == nil {
return coll.Name
}
logutil.BgLogger().Warn(
"Unable to get collation name from ID, use name of the default collation instead",
zap.Int32("id", c),
zap.Int("default collation ID", mysql.DefaultCollationID),
zap.String("default collation", mysql.DefaultCollationName),
)
return mysql.DefaultCollationName
}
func init() {
// Set it to 1 in init() to make sure the tests enable the new collation, it would be covered in bootstrap().
newCollationEnabled = 1
newCollatorMap = make(map[string]Collator)
newCollatorIDMap = make(map[int]Collator)
newCollatorMap["binary"] = &binCollator{}
newCollatorIDMap[CollationName2ID("binary")] = &binCollator{}
newCollatorMap["ascii_bin"] = &binPaddingCollator{}
newCollatorIDMap[CollationName2ID("ascii_bin")] = &binPaddingCollator{}
newCollatorMap["latin1_bin"] = &binPaddingCollator{}
newCollatorIDMap[CollationName2ID("latin1_bin")] = &binPaddingCollator{}
newCollatorMap["utf8mb4_bin"] = &binPaddingCollator{}
newCollatorIDMap[CollationName2ID("utf8mb4_bin")] = &binPaddingCollator{}
newCollatorMap["utf8_bin"] = &binPaddingCollator{}
newCollatorIDMap[CollationName2ID("utf8_bin")] = &binPaddingCollator{}
newCollatorMap["utf8mb4_0900_bin"] = &derivedBinCollator{}
newCollatorIDMap[CollationName2ID("utf8mb4_0900_bin")] = &derivedBinCollator{}
newCollatorMap["utf8mb4_general_ci"] = &generalCICollator{}
newCollatorIDMap[CollationName2ID("utf8mb4_general_ci")] = &generalCICollator{}
newCollatorMap["utf8_general_ci"] = &generalCICollator{}
newCollatorIDMap[CollationName2ID("utf8_general_ci")] = &generalCICollator{}
newCollatorMap["utf8mb4_unicode_ci"] = &unicodeCICollator{}
newCollatorIDMap[CollationName2ID("utf8mb4_unicode_ci")] = &unicodeCICollator{}
newCollatorMap["utf8mb4_0900_ai_ci"] = &unicode0900AICICollator{}
newCollatorIDMap[CollationName2ID("utf8mb4_0900_ai_ci")] = &unicode0900AICICollator{}
newCollatorMap["utf8_unicode_ci"] = &unicodeCICollator{}
newCollatorIDMap[CollationName2ID("utf8_unicode_ci")] = &unicodeCICollator{}
newCollatorMap["utf8mb4_zh_pinyin_tidb_as_cs"] = &zhPinyinTiDBASCSCollator{}
newCollatorIDMap[CollationName2ID("utf8mb4_zh_pinyin_tidb_as_cs")] = &zhPinyinTiDBASCSCollator{}
newCollatorMap[charset.CollationGBKBin] = &gbkBinCollator{charset.NewCustomGBKEncoder()}
newCollatorIDMap[CollationName2ID(charset.CollationGBKBin)] = &gbkBinCollator{charset.NewCustomGBKEncoder()}
newCollatorMap[charset.CollationGBKChineseCI] = &gbkChineseCICollator{}
newCollatorIDMap[CollationName2ID(charset.CollationGBKChineseCI)] = &gbkChineseCICollator{}
newCollatorMap[charset.CollationGB18030Bin] = &gb18030BinCollator{charset.NewCustomGB18030Encoder()}
newCollatorIDMap[CollationName2ID(charset.CollationGB18030Bin)] = &gb18030BinCollator{charset.NewCustomGB18030Encoder()}
newCollatorMap[charset.CollationGB18030ChineseCI] = &gb18030ChineseCICollator{}
newCollatorIDMap[CollationName2ID(charset.CollationGB18030ChineseCI)] = &gb18030ChineseCICollator{}
}
// Copyright 2024 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package collate
import (
"bytes"
"unicode/utf8"
"github.com/pingcap/tidb/pkg/parser/charset"
"github.com/pingcap/tidb/pkg/util/hack"
"golang.org/x/text/encoding"
)
// Each of these runes is 3 bytes in utf8. But since some characters is translated in customGB18030Encoder,
// when we meet these runes, we should use 4 bytes to represent them.
var fourBytesRune = map[rune]struct{}{
'\ue78d': {}, '\ue78e': {}, '\ue78f': {}, '\ue790': {}, '\ue791': {}, '\ue792': {},
'\ue793': {}, '\ue794': {}, '\ue795': {}, '\ue796': {}, '\ue7c7': {}, '\ue81e': {},
'\ue826': {}, '\ue82b': {}, '\ue82c': {}, '\ue832': {}, '\ue843': {}, '\ue854': {},
'\ue864': {},
}
// gb18030BinCollator is collator for gb18030_bin.
type gb18030BinCollator struct {
e *encoding.Encoder
}
// Clone implements Collator interface.
func (*gb18030BinCollator) Clone() Collator {
return &gb18030BinCollator{charset.NewCustomGB18030Encoder()}
}
// Compare implement Collator interface.
func (g *gb18030BinCollator) Compare(a, b string) int {
a = truncateTailingSpace(a)
b = truncateTailingSpace(b)
// compare the character one by one.
for len(a) > 0 && len(b) > 0 {
aLen, bLen := min(len(a), runeLen(a[0])), min(len(b), runeLen(b[0]))
aGb18030, err := g.e.Bytes(hack.Slice(a[:aLen]))
// if convert error happened, we use '?'(0x3F) replace it.
// It should not happen.
if err != nil {
aGb18030 = []byte{0x3F}
}
bGb18030, err := g.e.Bytes(hack.Slice(b[:bLen]))
if err != nil {
bGb18030 = []byte{0x3F}
}
compare := bytes.Compare(aGb18030, bGb18030)
if compare != 0 {
return compare
}
a = a[aLen:]
b = b[bLen:]
}
return sign(len(a) - len(b))
}
// Key implement Collator interface.
func (g *gb18030BinCollator) Key(str string) []byte {
return g.KeyWithoutTrimRightSpace(truncateTailingSpace(str))
}
// ImmutableKey implement Collator interface.
func (g *gb18030BinCollator) ImmutableKey(str string) []byte {
return g.KeyWithoutTrimRightSpace(truncateTailingSpace(str))
}
// KeyWithoutTrimRightSpace implement Collator interface.
func (g *gb18030BinCollator) KeyWithoutTrimRightSpace(str string) []byte {
buf := make([]byte, 0, len(str))
for len(str) > 0 {
l := min(len(str), runeLen(str[0]))
r, _ := utf8.DecodeRuneInString(str[:l])
var buf1 []byte
if _, ok := fourBytesRune[r]; ok {
buf1 = make([]byte, 4)
} else {
buf1 = make([]byte, l)
}
copy(buf1, str[:l])
gb18030, err := g.e.Bytes(buf1)
if err != nil {
buf = append(buf, byte('?'))
} else {
buf = append(buf, gb18030...)
}
str = str[l:]
}
return buf
}
// Pattern implements Collator interface.
func (*gb18030BinCollator) Pattern() WildcardPattern {
return &gb18030BinPattern{}
}
// use binPattern directly, they are totally same.
type gb18030BinPattern struct {
binPattern
}
// Copyright 2024 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package collate
import (
_ "embed"
"encoding/binary"
"unicode/utf8"
"github.com/pingcap/tidb/pkg/util/hack"
"github.com/pingcap/tidb/pkg/util/stringutil"
)
//go:embed gb18030_weight.data
var gb18030WeightData []byte
const (
// Unicode code points up to U+10FFFF can be encoded as GB18030.
gb18030MaxCodePoint = 0x10FFFF
)
type gb18030ChineseCICollator struct {
}
// Clone implements Collator interface.
func (*gb18030ChineseCICollator) Clone() Collator {
return new(gb18030ChineseCICollator)
}
// Compare implements Collator interface.
func (*gb18030ChineseCICollator) Compare(a, b string) int {
a = truncateTailingSpace(a)
b = truncateTailingSpace(b)
r1, r2 := rune(0), rune(0)
ai, bi := 0, 0
r1Len, r2Len := 0, 0
for ai < len(a) && bi < len(b) {
r1, r1Len = utf8.DecodeRune(hack.Slice(a[ai:]))
r2, r2Len = utf8.DecodeRune(hack.Slice(b[bi:]))
if r1 == utf8.RuneError || r2 == utf8.RuneError {
return 0
}
ai = ai + r1Len
bi = bi + r2Len
cmp := int(gb18030ChineseCISortKey(r1)) - int(gb18030ChineseCISortKey(r2))
if cmp != 0 {
return sign(cmp)
}
}
return sign((len(a) - ai) - (len(b) - bi))
}
// Key implements Collator interface.
func (g *gb18030ChineseCICollator) Key(str string) []byte {
return g.KeyWithoutTrimRightSpace(truncateTailingSpace(str))
}
// ImmutableKey implement Collator interface.
func (g *gb18030ChineseCICollator) ImmutableKey(str string) []byte {
return g.KeyWithoutTrimRightSpace(truncateTailingSpace(str))
}
// KeyWithoutTrimRightSpace implement Collator interface.
func (*gb18030ChineseCICollator) KeyWithoutTrimRightSpace(str string) []byte {
buf := make([]byte, 0, len(str)*2)
i, rLen := 0, 0
r := rune(0)
for i < len(str) {
r, rLen = utf8.DecodeRune(hack.Slice(str[i:]))
if r == utf8.RuneError {
return buf
}
i = i + rLen
u32 := gb18030ChineseCISortKey(r)
if u32 > 0xFFFFFF {
buf = append(buf, byte(u32>>24))
}
if u32 > 0xFFFF {
buf = append(buf, byte(u32>>16))
}
if u32 > 0xFF {
buf = append(buf, byte(u32>>8))
}
buf = append(buf, byte(u32))
}
return buf
}
// Pattern implements Collator interface.
func (*gb18030ChineseCICollator) Pattern() WildcardPattern {
return &gb18030ChineseCIPattern{}
}
type gb18030ChineseCIPattern struct {
patChars []rune
patTypes []byte
}
// Compile implements WildcardPattern interface.
func (p *gb18030ChineseCIPattern) Compile(patternStr string, escape byte) {
p.patChars, p.patTypes = stringutil.CompilePatternInner(patternStr, escape)
}
// DoMatch implements WildcardPattern interface.
func (p *gb18030ChineseCIPattern) DoMatch(str string) bool {
return stringutil.DoMatchCustomized(str, p.patChars, p.patTypes, func(a, b rune) bool {
return gb18030ChineseCISortKey(a) == gb18030ChineseCISortKey(b)
})
}
func gb18030ChineseCISortKey(r rune) uint32 {
if r > gb18030MaxCodePoint {
return 0x3F
}
return binary.LittleEndian.Uint32(gb18030WeightData[4*r : 4*r+4])
}
// Copyright 2021 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package collate
import (
"bytes"
"github.com/pingcap/tidb/pkg/parser/charset"
"github.com/pingcap/tidb/pkg/util/hack"
"golang.org/x/text/encoding"
)
// gbkBinCollator is collator for gbk_bin.
type gbkBinCollator struct {
e *encoding.Encoder
}
// Clone implements Collator interface.
func (*gbkBinCollator) Clone() Collator {
return &gbkBinCollator{charset.NewCustomGBKEncoder()}
}
// Compare implement Collator interface.
func (g *gbkBinCollator) Compare(a, b string) int {
a = truncateTailingSpace(a)
b = truncateTailingSpace(b)
// compare the character one by one.
for len(a) > 0 && len(b) > 0 {
aLen, bLen := min(len(a), runeLen(a[0])), min(len(b), runeLen(b[0]))
aGbk, err := g.e.Bytes(hack.Slice(a[:aLen]))
// if convert error happened, we use '?'(0x3F) replace it.
// It should not happen.
if err != nil {
aGbk = []byte{0x3F}
}
bGbk, err := g.e.Bytes(hack.Slice(b[:bLen]))
if err != nil {
bGbk = []byte{0x3F}
}
compare := bytes.Compare(aGbk, bGbk)
if compare != 0 {
return compare
}
a = a[aLen:]
b = b[bLen:]
}
return sign(len(a) - len(b))
}
// Key implement Collator interface.
func (g *gbkBinCollator) Key(str string) []byte {
return g.KeyWithoutTrimRightSpace(truncateTailingSpace(str))
}
// ImmutableKey implement Collator interface.
func (g *gbkBinCollator) ImmutableKey(str string) []byte {
return g.KeyWithoutTrimRightSpace(truncateTailingSpace(str))
}
// KeyWithoutTrimRightSpace implement Collator interface.
func (g *gbkBinCollator) KeyWithoutTrimRightSpace(str string) []byte {
buf := make([]byte, 0, len(str))
for len(str) > 0 {
l := min(len(str), runeLen(str[0]))
gbk, err := g.e.Bytes(hack.Slice(str[:l]))
if err != nil {
buf = append(buf, byte('?'))
} else {
buf = append(buf, gbk...)
}
str = str[l:]
}
return buf
}
// Pattern implements Collator interface.
func (*gbkBinCollator) Pattern() WildcardPattern {
return &gbkBinPattern{}
}
// use binPattern directly, they are totally same.
type gbkBinPattern struct {
derivedBinPattern
}
// Copyright 2021 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package collate
import (
"unicode/utf8"
"github.com/pingcap/tidb/pkg/util/hack"
"github.com/pingcap/tidb/pkg/util/stringutil"
)
type gbkChineseCICollator struct {
}
// Compare implements Collator interface.
func (*gbkChineseCICollator) Compare(a, b string) int {
a = truncateTailingSpace(a)
b = truncateTailingSpace(b)
r1, r2 := rune(0), rune(0)
ai, bi := 0, 0
r1Len, r2Len := 0, 0
for ai < len(a) && bi < len(b) {
r1, r1Len = utf8.DecodeRune(hack.Slice(a[ai:]))
r2, r2Len = utf8.DecodeRune(hack.Slice(b[bi:]))
if r1 == utf8.RuneError || r2 == utf8.RuneError {
return 0
}
ai = ai + r1Len
bi = bi + r2Len
cmp := int(gbkChineseCISortKey(r1)) - int(gbkChineseCISortKey(r2))
if cmp != 0 {
return sign(cmp)
}
}
return sign((len(a) - ai) - (len(b) - bi))
}
// Key implements Collator interface.
func (g *gbkChineseCICollator) Key(str string) []byte {
return g.KeyWithoutTrimRightSpace(truncateTailingSpace(str))
}
// ImmutableKey implement Collator interface.
func (g *gbkChineseCICollator) ImmutableKey(str string) []byte {
return g.KeyWithoutTrimRightSpace(truncateTailingSpace(str))
}
// KeyWithoutTrimRightSpace implement Collator interface.
func (*gbkChineseCICollator) KeyWithoutTrimRightSpace(str string) []byte {
buf := make([]byte, 0, len(str)*2)
i, rLen := 0, 0
r := rune(0)
for i < len(str) {
r, rLen = utf8.DecodeRune(hack.Slice(str[i:]))
if r == utf8.RuneError {
return buf
}
i = i + rLen
u16 := gbkChineseCISortKey(r)
if u16 > 0xFF {
buf = append(buf, byte(u16>>8))
}
buf = append(buf, byte(u16))
}
return buf
}
// Pattern implements Collator interface.
func (*gbkChineseCICollator) Pattern() WildcardPattern {
return &gbkChineseCIPattern{}
}
// Clone implements Collator interface.
func (*gbkChineseCICollator) Clone() Collator {
return new(gbkChineseCICollator)
}
type gbkChineseCIPattern struct {
patChars []rune
patTypes []byte
}
// Compile implements WildcardPattern interface.
func (p *gbkChineseCIPattern) Compile(patternStr string, escape byte) {
p.patChars, p.patTypes = stringutil.CompilePatternInner(patternStr, escape)
}
// DoMatch implements WildcardPattern interface.
func (p *gbkChineseCIPattern) DoMatch(str string) bool {
return stringutil.DoMatchCustomized(str, p.patChars, p.patTypes, func(a, b rune) bool {
return gbkChineseCISortKey(a) == gbkChineseCISortKey(b)
})
}
func gbkChineseCISortKey(r rune) uint16 {
if r > 0xFFFF {
return 0x3F
}
return gbkChineseCISortKeyTable[r]
}
// Copyright 2020 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package collate
import (
"unicode/utf8"
"github.com/pingcap/tidb/pkg/util/hack"
"github.com/pingcap/tidb/pkg/util/stringutil"
)
type generalCICollator struct {
}
// Compare implements Collator interface.
func (*generalCICollator) Compare(a, b string) int {
a = truncateTailingSpace(a)
b = truncateTailingSpace(b)
r1, r2 := rune(0), rune(0)
ai, bi := 0, 0
r1Len, r2Len := 0, 0
for ai < len(a) && bi < len(b) {
r1, r1Len = utf8.DecodeRune(hack.Slice(a[ai:]))
r2, r2Len = utf8.DecodeRune(hack.Slice(b[bi:]))
if r1 == utf8.RuneError || r2 == utf8.RuneError {
return 0
}
ai = ai + r1Len
bi = bi + r2Len
cmp := int(convertRuneGeneralCI(r1)) - int(convertRuneGeneralCI(r2))
if cmp != 0 {
return sign(cmp)
}
}
return sign((len(a) - ai) - (len(b) - bi))
}
// Key implements Collator interface.
func (gc *generalCICollator) Key(str string) []byte {
return gc.KeyWithoutTrimRightSpace(truncateTailingSpace(str))
}
// ImmutableKey implement Collator interface.
func (gc *generalCICollator) ImmutableKey(str string) []byte {
return gc.KeyWithoutTrimRightSpace(truncateTailingSpace(str))
}
// KeyWithoutTrimRightSpace implements Collator interface.
func (*generalCICollator) KeyWithoutTrimRightSpace(str string) []byte {
buf := make([]byte, 0, len(str))
i, rLen := 0, 0
r := rune(0)
for i < len(str) {
r, rLen = utf8.DecodeRune(hack.Slice(str[i:]))
if r == utf8.RuneError {
return buf
}
i = i + rLen
u16 := convertRuneGeneralCI(r)
buf = append(buf, byte(u16>>8), byte(u16))
}
return buf
}
// Pattern implements Collator interface.
func (*generalCICollator) Pattern() WildcardPattern {
return &ciPattern{}
}
// Clone implements Collator interface.
func (*generalCICollator) Clone() Collator {
return new(generalCICollator)
}
type ciPattern struct {
patChars []rune
patTypes []byte
}
// Compile implements WildcardPattern interface.
func (p *ciPattern) Compile(patternStr string, escape byte) {
p.patChars, p.patTypes = stringutil.CompilePatternInner(patternStr, escape)
}
// Compile implements WildcardPattern interface.
func (p *ciPattern) DoMatch(str string) bool {
return stringutil.DoMatchCustomized(str, p.patChars, p.patTypes, func(a, b rune) bool {
return convertRuneGeneralCI(a) == convertRuneGeneralCI(b)
})
}
func convertRuneGeneralCI(r rune) uint16 {
if r > 0xFFFF {
return 0xFFFD
}
plane := planeTable[r>>8]
if plane == nil {
return uint16(r)
}
return plane[r&0xFF]
}
var (
plane00 = []uint16{
0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F,
0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F,
0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F,
0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F,
0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F,
0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F,
0x0060, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F,
0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F,
0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F,
0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F,
0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, 0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF,
0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x039C, 0x00B6, 0x00B7, 0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF,
0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x00C6, 0x0043, 0x0045, 0x0045, 0x0045, 0x0045, 0x0049, 0x0049, 0x0049, 0x0049,
0x00D0, 0x004E, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x00D7, 0x00D8, 0x0055, 0x0055, 0x0055, 0x0055, 0x0059, 0x00DE, 0x0053,
0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x00C6, 0x0043, 0x0045, 0x0045, 0x0045, 0x0045, 0x0049, 0x0049, 0x0049, 0x0049,
0x00D0, 0x004E, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x00F7, 0x00D8, 0x0055, 0x0055, 0x0055, 0x0055, 0x0059, 0x00DE, 0x0059}
plane01 = []uint16{
0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0044, 0x0044,
0x0110, 0x0110, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0047, 0x0047, 0x0047, 0x0047,
0x0047, 0x0047, 0x0047, 0x0047, 0x0048, 0x0048, 0x0126, 0x0126, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049,
0x0049, 0x0049, 0x0132, 0x0132, 0x004A, 0x004A, 0x004B, 0x004B, 0x0138, 0x004C, 0x004C, 0x004C, 0x004C, 0x004C, 0x004C, 0x013F,
0x013F, 0x0141, 0x0141, 0x004E, 0x004E, 0x004E, 0x004E, 0x004E, 0x004E, 0x0149, 0x014A, 0x014A, 0x004F, 0x004F, 0x004F, 0x004F,
0x004F, 0x004F, 0x0152, 0x0152, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053,
0x0053, 0x0053, 0x0054, 0x0054, 0x0054, 0x0054, 0x0166, 0x0166, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055,
0x0055, 0x0055, 0x0055, 0x0055, 0x0057, 0x0057, 0x0059, 0x0059, 0x0059, 0x005A, 0x005A, 0x005A, 0x005A, 0x005A, 0x005A, 0x0053,
0x0180, 0x0181, 0x0182, 0x0182, 0x0184, 0x0184, 0x0186, 0x0187, 0x0187, 0x0189, 0x018A, 0x018B, 0x018B, 0x018D, 0x018E, 0x018F,
0x0190, 0x0191, 0x0191, 0x0193, 0x0194, 0x01F6, 0x0196, 0x0197, 0x0198, 0x0198, 0x019A, 0x019B, 0x019C, 0x019D, 0x019E, 0x019F,
0x004F, 0x004F, 0x01A2, 0x01A2, 0x01A4, 0x01A4, 0x01A6, 0x01A7, 0x01A7, 0x01A9, 0x01AA, 0x01AB, 0x01AC, 0x01AC, 0x01AE, 0x0055,
0x0055, 0x01B1, 0x01B2, 0x01B3, 0x01B3, 0x01B5, 0x01B5, 0x01B7, 0x01B8, 0x01B8, 0x01BA, 0x01BB, 0x01BC, 0x01BC, 0x01BE, 0x01F7,
0x01C0, 0x01C1, 0x01C2, 0x01C3, 0x01C4, 0x01C4, 0x01C4, 0x01C7, 0x01C7, 0x01C7, 0x01CA, 0x01CA, 0x01CA, 0x0041, 0x0041, 0x0049,
0x0049, 0x004F, 0x004F, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x018E, 0x0041, 0x0041,
0x0041, 0x0041, 0x00C6, 0x00C6, 0x01E4, 0x01E4, 0x0047, 0x0047, 0x004B, 0x004B, 0x004F, 0x004F, 0x004F, 0x004F, 0x01B7, 0x01B7,
0x004A, 0x01F1, 0x01F1, 0x01F1, 0x0047, 0x0047, 0x01F6, 0x01F7, 0x004E, 0x004E, 0x0041, 0x0041, 0x00C6, 0x00C6, 0x00D8, 0x00D8}
plane02 = []uint16{
0x0041, 0x0041, 0x0041, 0x0041, 0x0045, 0x0045, 0x0045, 0x0045, 0x0049, 0x0049, 0x0049, 0x0049, 0x004F, 0x004F, 0x004F, 0x004F,
0x0052, 0x0052, 0x0052, 0x0052, 0x0055, 0x0055, 0x0055, 0x0055, 0x0053, 0x0053, 0x0054, 0x0054, 0x021C, 0x021C, 0x0048, 0x0048,
0x0220, 0x0221, 0x0222, 0x0222, 0x0224, 0x0224, 0x0041, 0x0041, 0x0045, 0x0045, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F,
0x004F, 0x004F, 0x0059, 0x0059, 0x0234, 0x0235, 0x0236, 0x0237, 0x0238, 0x0239, 0x023A, 0x023B, 0x023C, 0x023D, 0x023E, 0x023F,
0x0240, 0x0241, 0x0242, 0x0243, 0x0244, 0x0245, 0x0246, 0x0247, 0x0248, 0x0249, 0x024A, 0x024B, 0x024C, 0x024D, 0x024E, 0x024F,
0x0250, 0x0251, 0x0252, 0x0181, 0x0186, 0x0255, 0x0189, 0x018A, 0x0258, 0x018F, 0x025A, 0x0190, 0x025C, 0x025D, 0x025E, 0x025F,
0x0193, 0x0261, 0x0262, 0x0194, 0x0264, 0x0265, 0x0266, 0x0267, 0x0197, 0x0196, 0x026A, 0x026B, 0x026C, 0x026D, 0x026E, 0x019C,
0x0270, 0x0271, 0x019D, 0x0273, 0x0274, 0x019F, 0x0276, 0x0277, 0x0278, 0x0279, 0x027A, 0x027B, 0x027C, 0x027D, 0x027E, 0x027F,
0x01A6, 0x0281, 0x0282, 0x01A9, 0x0284, 0x0285, 0x0286, 0x0287, 0x01AE, 0x0289, 0x01B1, 0x01B2, 0x028C, 0x028D, 0x028E, 0x028F,
0x0290, 0x0291, 0x01B7, 0x0293, 0x0294, 0x0295, 0x0296, 0x0297, 0x0298, 0x0299, 0x029A, 0x029B, 0x029C, 0x029D, 0x029E, 0x029F,
0x02A0, 0x02A1, 0x02A2, 0x02A3, 0x02A4, 0x02A5, 0x02A6, 0x02A7, 0x02A8, 0x02A9, 0x02AA, 0x02AB, 0x02AC, 0x02AD, 0x02AE, 0x02AF,
0x02B0, 0x02B1, 0x02B2, 0x02B3, 0x02B4, 0x02B5, 0x02B6, 0x02B7, 0x02B8, 0x02B9, 0x02BA, 0x02BB, 0x02BC, 0x02BD, 0x02BE, 0x02BF,
0x02C0, 0x02C1, 0x02C2, 0x02C3, 0x02C4, 0x02C5, 0x02C6, 0x02C7, 0x02C8, 0x02C9, 0x02CA, 0x02CB, 0x02CC, 0x02CD, 0x02CE, 0x02CF,
0x02D0, 0x02D1, 0x02D2, 0x02D3, 0x02D4, 0x02D5, 0x02D6, 0x02D7, 0x02D8, 0x02D9, 0x02DA, 0x02DB, 0x02DC, 0x02DD, 0x02DE, 0x02DF,
0x02E0, 0x02E1, 0x02E2, 0x02E3, 0x02E4, 0x02E5, 0x02E6, 0x02E7, 0x02E8, 0x02E9, 0x02EA, 0x02EB, 0x02EC, 0x02ED, 0x02EE, 0x02EF,
0x02F0, 0x02F1, 0x02F2, 0x02F3, 0x02F4, 0x02F5, 0x02F6, 0x02F7, 0x02F8, 0x02F9, 0x02FA, 0x02FB, 0x02FC, 0x02FD, 0x02FE, 0x02FF}
plane03 = []uint16{
0x0300, 0x0301, 0x0302, 0x0303, 0x0304, 0x0305, 0x0306, 0x0307, 0x0308, 0x0309, 0x030A, 0x030B, 0x030C, 0x030D, 0x030E, 0x030F,
0x0310, 0x0311, 0x0312, 0x0313, 0x0314, 0x0315, 0x0316, 0x0317, 0x0318, 0x0319, 0x031A, 0x031B, 0x031C, 0x031D, 0x031E, 0x031F,
0x0320, 0x0321, 0x0322, 0x0323, 0x0324, 0x0325, 0x0326, 0x0327, 0x0328, 0x0329, 0x032A, 0x032B, 0x032C, 0x032D, 0x032E, 0x032F,
0x0330, 0x0331, 0x0332, 0x0333, 0x0334, 0x0335, 0x0336, 0x0337, 0x0338, 0x0339, 0x033A, 0x033B, 0x033C, 0x033D, 0x033E, 0x033F,
0x0340, 0x0341, 0x0342, 0x0343, 0x0344, 0x0399, 0x0346, 0x0347, 0x0348, 0x0349, 0x034A, 0x034B, 0x034C, 0x034D, 0x034E, 0x034F,
0x0350, 0x0351, 0x0352, 0x0353, 0x0354, 0x0355, 0x0356, 0x0357, 0x0358, 0x0359, 0x035A, 0x035B, 0x035C, 0x035D, 0x035E, 0x035F,
0x0360, 0x0361, 0x0362, 0x0363, 0x0364, 0x0365, 0x0366, 0x0367, 0x0368, 0x0369, 0x036A, 0x036B, 0x036C, 0x036D, 0x036E, 0x036F,
0x0370, 0x0371, 0x0372, 0x0373, 0x0374, 0x0375, 0x0376, 0x0377, 0x0378, 0x0379, 0x037A, 0x037B, 0x037C, 0x037D, 0x037E, 0x037F,
0x0380, 0x0381, 0x0382, 0x0383, 0x0384, 0x0385, 0x0391, 0x0387, 0x0395, 0x0397, 0x0399, 0x038B, 0x039F, 0x038D, 0x03A5, 0x03A9,
0x0399, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F,
0x03A0, 0x03A1, 0x03A2, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7, 0x03A8, 0x03A9, 0x0399, 0x03A5, 0x0391, 0x0395, 0x0397, 0x0399,
0x03A5, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F,
0x03A0, 0x03A1, 0x03A3, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7, 0x03A8, 0x03A9, 0x0399, 0x03A5, 0x039F, 0x03A5, 0x03A9, 0x03CF,
0x0392, 0x0398, 0x03D2, 0x03D2, 0x03D2, 0x03A6, 0x03A0, 0x03D7, 0x03D8, 0x03D9, 0x03DA, 0x03DA, 0x03DC, 0x03DC, 0x03DE, 0x03DE,
0x03E0, 0x03E0, 0x03E2, 0x03E2, 0x03E4, 0x03E4, 0x03E6, 0x03E6, 0x03E8, 0x03E8, 0x03EA, 0x03EA, 0x03EC, 0x03EC, 0x03EE, 0x03EE,
0x039A, 0x03A1, 0x03A3, 0x03F3, 0x03F4, 0x03F5, 0x03F6, 0x03F7, 0x03F8, 0x03F9, 0x03FA, 0x03FB, 0x03FC, 0x03FD, 0x03FE, 0x03FF}
plane04 = []uint16{
0x0415, 0x0415, 0x0402, 0x0413, 0x0404, 0x0405, 0x0406, 0x0406, 0x0408, 0x0409, 0x040A, 0x040B, 0x041A, 0x0418, 0x0423, 0x040F,
0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F,
0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F,
0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F,
0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F,
0x0415, 0x0415, 0x0402, 0x0413, 0x0404, 0x0405, 0x0406, 0x0406, 0x0408, 0x0409, 0x040A, 0x040B, 0x041A, 0x0418, 0x0423, 0x040F,
0x0460, 0x0460, 0x0462, 0x0462, 0x0464, 0x0464, 0x0466, 0x0466, 0x0468, 0x0468, 0x046A, 0x046A, 0x046C, 0x046C, 0x046E, 0x046E,
0x0470, 0x0470, 0x0472, 0x0472, 0x0474, 0x0474, 0x0474, 0x0474, 0x0478, 0x0478, 0x047A, 0x047A, 0x047C, 0x047C, 0x047E, 0x047E,
0x0480, 0x0480, 0x0482, 0x0483, 0x0484, 0x0485, 0x0486, 0x0487, 0x0488, 0x0489, 0x048A, 0x048B, 0x048C, 0x048C, 0x048E, 0x048E,
0x0490, 0x0490, 0x0492, 0x0492, 0x0494, 0x0494, 0x0496, 0x0496, 0x0498, 0x0498, 0x049A, 0x049A, 0x049C, 0x049C, 0x049E, 0x049E,
0x04A0, 0x04A0, 0x04A2, 0x04A2, 0x04A4, 0x04A4, 0x04A6, 0x04A6, 0x04A8, 0x04A8, 0x04AA, 0x04AA, 0x04AC, 0x04AC, 0x04AE, 0x04AE,
0x04B0, 0x04B0, 0x04B2, 0x04B2, 0x04B4, 0x04B4, 0x04B6, 0x04B6, 0x04B8, 0x04B8, 0x04BA, 0x04BA, 0x04BC, 0x04BC, 0x04BE, 0x04BE,
0x04C0, 0x0416, 0x0416, 0x04C3, 0x04C3, 0x04C5, 0x04C6, 0x04C7, 0x04C7, 0x04C9, 0x04CA, 0x04CB, 0x04CB, 0x04CD, 0x04CE, 0x04CF,
0x0410, 0x0410, 0x0410, 0x0410, 0x04D4, 0x04D4, 0x0415, 0x0415, 0x04D8, 0x04D8, 0x04D8, 0x04D8, 0x0416, 0x0416, 0x0417, 0x0417,
0x04E0, 0x04E0, 0x0418, 0x0418, 0x0418, 0x0418, 0x041E, 0x041E, 0x04E8, 0x04E8, 0x04E8, 0x04E8, 0x042D, 0x042D, 0x0423, 0x0423,
0x0423, 0x0423, 0x0423, 0x0423, 0x0427, 0x0427, 0x04F6, 0x04F7, 0x042B, 0x042B, 0x04FA, 0x04FB, 0x04FC, 0x04FD, 0x04FE, 0x04FF}
plane05 = []uint16{
0x0500, 0x0501, 0x0502, 0x0503, 0x0504, 0x0505, 0x0506, 0x0507, 0x0508, 0x0509, 0x050A, 0x050B, 0x050C, 0x050D, 0x050E, 0x050F,
0x0510, 0x0511, 0x0512, 0x0513, 0x0514, 0x0515, 0x0516, 0x0517, 0x0518, 0x0519, 0x051A, 0x051B, 0x051C, 0x051D, 0x051E, 0x051F,
0x0520, 0x0521, 0x0522, 0x0523, 0x0524, 0x0525, 0x0526, 0x0527, 0x0528, 0x0529, 0x052A, 0x052B, 0x052C, 0x052D, 0x052E, 0x052F,
0x0530, 0x0531, 0x0532, 0x0533, 0x0534, 0x0535, 0x0536, 0x0537, 0x0538, 0x0539, 0x053A, 0x053B, 0x053C, 0x053D, 0x053E, 0x053F,
0x0540, 0x0541, 0x0542, 0x0543, 0x0544, 0x0545, 0x0546, 0x0547, 0x0548, 0x0549, 0x054A, 0x054B, 0x054C, 0x054D, 0x054E, 0x054F,
0x0550, 0x0551, 0x0552, 0x0553, 0x0554, 0x0555, 0x0556, 0x0557, 0x0558, 0x0559, 0x055A, 0x055B, 0x055C, 0x055D, 0x055E, 0x055F,
0x0560, 0x0531, 0x0532, 0x0533, 0x0534, 0x0535, 0x0536, 0x0537, 0x0538, 0x0539, 0x053A, 0x053B, 0x053C, 0x053D, 0x053E, 0x053F,
0x0540, 0x0541, 0x0542, 0x0543, 0x0544, 0x0545, 0x0546, 0x0547, 0x0548, 0x0549, 0x054A, 0x054B, 0x054C, 0x054D, 0x054E, 0x054F,
0x0550, 0x0551, 0x0552, 0x0553, 0x0554, 0x0555, 0x0556, 0x0587, 0x0588, 0x0589, 0x058A, 0x058B, 0x058C, 0x058D, 0x058E, 0x058F,
0x0590, 0x0591, 0x0592, 0x0593, 0x0594, 0x0595, 0x0596, 0x0597, 0x0598, 0x0599, 0x059A, 0x059B, 0x059C, 0x059D, 0x059E, 0x059F,
0x05A0, 0x05A1, 0x05A2, 0x05A3, 0x05A4, 0x05A5, 0x05A6, 0x05A7, 0x05A8, 0x05A9, 0x05AA, 0x05AB, 0x05AC, 0x05AD, 0x05AE, 0x05AF,
0x05B0, 0x05B1, 0x05B2, 0x05B3, 0x05B4, 0x05B5, 0x05B6, 0x05B7, 0x05B8, 0x05B9, 0x05BA, 0x05BB, 0x05BC, 0x05BD, 0x05BE, 0x05BF,
0x05C0, 0x05C1, 0x05C2, 0x05C3, 0x05C4, 0x05C5, 0x05C6, 0x05C7, 0x05C8, 0x05C9, 0x05CA, 0x05CB, 0x05CC, 0x05CD, 0x05CE, 0x05CF,
0x05D0, 0x05D1, 0x05D2, 0x05D3, 0x05D4, 0x05D5, 0x05D6, 0x05D7, 0x05D8, 0x05D9, 0x05DA, 0x05DB, 0x05DC, 0x05DD, 0x05DE, 0x05DF,
0x05E0, 0x05E1, 0x05E2, 0x05E3, 0x05E4, 0x05E5, 0x05E6, 0x05E7, 0x05E8, 0x05E9, 0x05EA, 0x05EB, 0x05EC, 0x05ED, 0x05EE, 0x05EF,
0x05F0, 0x05F1, 0x05F2, 0x05F3, 0x05F4, 0x05F5, 0x05F6, 0x05F7, 0x05F8, 0x05F9, 0x05FA, 0x05FB, 0x05FC, 0x05FD, 0x05FE, 0x05FF}
plane1E = []uint16{
0x0041, 0x0041, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0043, 0x0043, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044,
0x0044, 0x0044, 0x0044, 0x0044, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0046, 0x0046,
0x0047, 0x0047, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0049, 0x0049, 0x0049, 0x0049,
0x004B, 0x004B, 0x004B, 0x004B, 0x004B, 0x004B, 0x004C, 0x004C, 0x004C, 0x004C, 0x004C, 0x004C, 0x004C, 0x004C, 0x004D, 0x004D,
0x004D, 0x004D, 0x004D, 0x004D, 0x004E, 0x004E, 0x004E, 0x004E, 0x004E, 0x004E, 0x004E, 0x004E, 0x004F, 0x004F, 0x004F, 0x004F,
0x004F, 0x004F, 0x004F, 0x004F, 0x0050, 0x0050, 0x0050, 0x0050, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052,
0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054,
0x0054, 0x0054, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0056, 0x0056, 0x0056, 0x0056,
0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0058, 0x0058, 0x0058, 0x0058, 0x0059, 0x0059,
0x005A, 0x005A, 0x005A, 0x005A, 0x005A, 0x005A, 0x0048, 0x0054, 0x0057, 0x0059, 0x1E9A, 0x0053, 0x1E9C, 0x1E9D, 0x1E9E, 0x1E9F,
0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041,
0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045,
0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0049, 0x0049, 0x0049, 0x0049, 0x004F, 0x004F, 0x004F, 0x004F,
0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F,
0x004F, 0x004F, 0x004F, 0x004F, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055,
0x0055, 0x0055, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x1EFA, 0x1EFB, 0x1EFC, 0x1EFD, 0x1EFE, 0x1EFF}
plane1F = []uint16{
0x0391, 0x0391, 0x0391, 0x0391, 0x0391, 0x0391, 0x0391, 0x0391, 0x0391, 0x0391, 0x0391, 0x0391, 0x0391, 0x0391, 0x0391, 0x0391,
0x0395, 0x0395, 0x0395, 0x0395, 0x0395, 0x0395, 0x1F16, 0x1F17, 0x0395, 0x0395, 0x0395, 0x0395, 0x0395, 0x0395, 0x1F1E, 0x1F1F,
0x0397, 0x0397, 0x0397, 0x0397, 0x0397, 0x0397, 0x0397, 0x0397, 0x0397, 0x0397, 0x0397, 0x0397, 0x0397, 0x0397, 0x0397, 0x0397,
0x0399, 0x0399, 0x0399, 0x0399, 0x0399, 0x0399, 0x0399, 0x0399, 0x0399, 0x0399, 0x0399, 0x0399, 0x0399, 0x0399, 0x0399, 0x0399,
0x039F, 0x039F, 0x039F, 0x039F, 0x039F, 0x039F, 0x1F46, 0x1F47, 0x039F, 0x039F, 0x039F, 0x039F, 0x039F, 0x039F, 0x1F4E, 0x1F4F,
0x03A5, 0x03A5, 0x03A5, 0x03A5, 0x03A5, 0x03A5, 0x03A5, 0x03A5, 0x1F58, 0x03A5, 0x1F5A, 0x03A5, 0x1F5C, 0x03A5, 0x1F5E, 0x03A5,
0x03A9, 0x03A9, 0x03A9, 0x03A9, 0x03A9, 0x03A9, 0x03A9, 0x03A9, 0x03A9, 0x03A9, 0x03A9, 0x03A9, 0x03A9, 0x03A9, 0x03A9, 0x03A9,
0x0391, 0x1FBB, 0x0395, 0x1FC9, 0x0397, 0x1FCB, 0x0399, 0x1FDB, 0x039F, 0x1FF9, 0x03A5, 0x1FEB, 0x03A9, 0x1FFB, 0x1F7E, 0x1F7F,
0x0391, 0x0391, 0x0391, 0x0391, 0x0391, 0x0391, 0x0391, 0x0391, 0x0391, 0x0391, 0x0391, 0x0391, 0x0391, 0x0391, 0x0391, 0x0391,
0x0397, 0x0397, 0x0397, 0x0397, 0x0397, 0x0397, 0x0397, 0x0397, 0x0397, 0x0397, 0x0397, 0x0397, 0x0397, 0x0397, 0x0397, 0x0397,
0x03A9, 0x03A9, 0x03A9, 0x03A9, 0x03A9, 0x03A9, 0x03A9, 0x03A9, 0x03A9, 0x03A9, 0x03A9, 0x03A9, 0x03A9, 0x03A9, 0x03A9, 0x03A9,
0x0391, 0x0391, 0x0391, 0x0391, 0x0391, 0x1FB5, 0x0391, 0x0391, 0x0391, 0x0391, 0x0391, 0x1FBB, 0x0391, 0x1FBD, 0x0399, 0x1FBF,
0x1FC0, 0x1FC1, 0x0397, 0x0397, 0x0397, 0x1FC5, 0x0397, 0x0397, 0x0395, 0x1FC9, 0x0397, 0x1FCB, 0x0397, 0x1FCD, 0x1FCE, 0x1FCF,
0x0399, 0x0399, 0x0399, 0x1FD3, 0x1FD4, 0x1FD5, 0x0399, 0x0399, 0x0399, 0x0399, 0x0399, 0x1FDB, 0x1FDC, 0x1FDD, 0x1FDE, 0x1FDF,
0x03A5, 0x03A5, 0x03A5, 0x1FE3, 0x03A1, 0x03A1, 0x03A5, 0x03A5, 0x03A5, 0x03A5, 0x03A5, 0x1FEB, 0x03A1, 0x1FED, 0x1FEE, 0x1FEF,
0x1FF0, 0x1FF1, 0x03A9, 0x03A9, 0x03A9, 0x1FF5, 0x03A9, 0x03A9, 0x039F, 0x1FF9, 0x03A9, 0x1FFB, 0x03A9, 0x1FFD, 0x1FFE, 0x1FFF}
plane21 = []uint16{
0x2100, 0x2101, 0x2102, 0x2103, 0x2104, 0x2105, 0x2106, 0x2107, 0x2108, 0x2109, 0x210A, 0x210B, 0x210C, 0x210D, 0x210E, 0x210F,
0x2110, 0x2111, 0x2112, 0x2113, 0x2114, 0x2115, 0x2116, 0x2117, 0x2118, 0x2119, 0x211A, 0x211B, 0x211C, 0x211D, 0x211E, 0x211F,
0x2120, 0x2121, 0x2122, 0x2123, 0x2124, 0x2125, 0x2126, 0x2127, 0x2128, 0x2129, 0x212A, 0x212B, 0x212C, 0x212D, 0x212E, 0x212F,
0x2130, 0x2131, 0x2132, 0x2133, 0x2134, 0x2135, 0x2136, 0x2137, 0x2138, 0x2139, 0x213A, 0x213B, 0x213C, 0x213D, 0x213E, 0x213F,
0x2140, 0x2141, 0x2142, 0x2143, 0x2144, 0x2145, 0x2146, 0x2147, 0x2148, 0x2149, 0x214A, 0x214B, 0x214C, 0x214D, 0x214E, 0x214F,
0x2150, 0x2151, 0x2152, 0x2153, 0x2154, 0x2155, 0x2156, 0x2157, 0x2158, 0x2159, 0x215A, 0x215B, 0x215C, 0x215D, 0x215E, 0x215F,
0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168, 0x2169, 0x216A, 0x216B, 0x216C, 0x216D, 0x216E, 0x216F,
0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168, 0x2169, 0x216A, 0x216B, 0x216C, 0x216D, 0x216E, 0x216F,
0x2180, 0x2181, 0x2182, 0x2183, 0x2184, 0x2185, 0x2186, 0x2187, 0x2188, 0x2189, 0x218A, 0x218B, 0x218C, 0x218D, 0x218E, 0x218F,
0x2190, 0x2191, 0x2192, 0x2193, 0x2194, 0x2195, 0x2196, 0x2197, 0x2198, 0x2199, 0x219A, 0x219B, 0x219C, 0x219D, 0x219E, 0x219F,
0x21A0, 0x21A1, 0x21A2, 0x21A3, 0x21A4, 0x21A5, 0x21A6, 0x21A7, 0x21A8, 0x21A9, 0x21AA, 0x21AB, 0x21AC, 0x21AD, 0x21AE, 0x21AF,
0x21B0, 0x21B1, 0x21B2, 0x21B3, 0x21B4, 0x21B5, 0x21B6, 0x21B7, 0x21B8, 0x21B9, 0x21BA, 0x21BB, 0x21BC, 0x21BD, 0x21BE, 0x21BF,
0x21C0, 0x21C1, 0x21C2, 0x21C3, 0x21C4, 0x21C5, 0x21C6, 0x21C7, 0x21C8, 0x21C9, 0x21CA, 0x21CB, 0x21CC, 0x21CD, 0x21CE, 0x21CF,
0x21D0, 0x21D1, 0x21D2, 0x21D3, 0x21D4, 0x21D5, 0x21D6, 0x21D7, 0x21D8, 0x21D9, 0x21DA, 0x21DB, 0x21DC, 0x21DD, 0x21DE, 0x21DF,
0x21E0, 0x21E1, 0x21E2, 0x21E3, 0x21E4, 0x21E5, 0x21E6, 0x21E7, 0x21E8, 0x21E9, 0x21EA, 0x21EB, 0x21EC, 0x21ED, 0x21EE, 0x21EF,
0x21F0, 0x21F1, 0x21F2, 0x21F3, 0x21F4, 0x21F5, 0x21F6, 0x21F7, 0x21F8, 0x21F9, 0x21FA, 0x21FB, 0x21FC, 0x21FD, 0x21FE, 0x21FF}
plane24 = []uint16{
0x2400, 0x2401, 0x2402, 0x2403, 0x2404, 0x2405, 0x2406, 0x2407, 0x2408, 0x2409, 0x240A, 0x240B, 0x240C, 0x240D, 0x240E, 0x240F,
0x2410, 0x2411, 0x2412, 0x2413, 0x2414, 0x2415, 0x2416, 0x2417, 0x2418, 0x2419, 0x241A, 0x241B, 0x241C, 0x241D, 0x241E, 0x241F,
0x2420, 0x2421, 0x2422, 0x2423, 0x2424, 0x2425, 0x2426, 0x2427, 0x2428, 0x2429, 0x242A, 0x242B, 0x242C, 0x242D, 0x242E, 0x242F,
0x2430, 0x2431, 0x2432, 0x2433, 0x2434, 0x2435, 0x2436, 0x2437, 0x2438, 0x2439, 0x243A, 0x243B, 0x243C, 0x243D, 0x243E, 0x243F,
0x2440, 0x2441, 0x2442, 0x2443, 0x2444, 0x2445, 0x2446, 0x2447, 0x2448, 0x2449, 0x244A, 0x244B, 0x244C, 0x244D, 0x244E, 0x244F,
0x2450, 0x2451, 0x2452, 0x2453, 0x2454, 0x2455, 0x2456, 0x2457, 0x2458, 0x2459, 0x245A, 0x245B, 0x245C, 0x245D, 0x245E, 0x245F,
0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469, 0x246A, 0x246B, 0x246C, 0x246D, 0x246E, 0x246F,
0x2470, 0x2471, 0x2472, 0x2473, 0x2474, 0x2475, 0x2476, 0x2477, 0x2478, 0x2479, 0x247A, 0x247B, 0x247C, 0x247D, 0x247E, 0x247F,
0x2480, 0x2481, 0x2482, 0x2483, 0x2484, 0x2485, 0x2486, 0x2487, 0x2488, 0x2489, 0x248A, 0x248B, 0x248C, 0x248D, 0x248E, 0x248F,
0x2490, 0x2491, 0x2492, 0x2493, 0x2494, 0x2495, 0x2496, 0x2497, 0x2498, 0x2499, 0x249A, 0x249B, 0x249C, 0x249D, 0x249E, 0x249F,
0x24A0, 0x24A1, 0x24A2, 0x24A3, 0x24A4, 0x24A5, 0x24A6, 0x24A7, 0x24A8, 0x24A9, 0x24AA, 0x24AB, 0x24AC, 0x24AD, 0x24AE, 0x24AF,
0x24B0, 0x24B1, 0x24B2, 0x24B3, 0x24B4, 0x24B5, 0x24B6, 0x24B7, 0x24B8, 0x24B9, 0x24BA, 0x24BB, 0x24BC, 0x24BD, 0x24BE, 0x24BF,
0x24C0, 0x24C1, 0x24C2, 0x24C3, 0x24C4, 0x24C5, 0x24C6, 0x24C7, 0x24C8, 0x24C9, 0x24CA, 0x24CB, 0x24CC, 0x24CD, 0x24CE, 0x24CF,
0x24B6, 0x24B7, 0x24B8, 0x24B9, 0x24BA, 0x24BB, 0x24BC, 0x24BD, 0x24BE, 0x24BF, 0x24C0, 0x24C1, 0x24C2, 0x24C3, 0x24C4, 0x24C5,
0x24C6, 0x24C7, 0x24C8, 0x24C9, 0x24CA, 0x24CB, 0x24CC, 0x24CD, 0x24CE, 0x24CF, 0x24EA, 0x24EB, 0x24EC, 0x24ED, 0x24EE, 0x24EF,
0x24F0, 0x24F1, 0x24F2, 0x24F3, 0x24F4, 0x24F5, 0x24F6, 0x24F7, 0x24F8, 0x24F9, 0x24FA, 0x24FB, 0x24FC, 0x24FD, 0x24FE, 0x24FF}
planeFF = []uint16{
0xFF00, 0xFF01, 0xFF02, 0xFF03, 0xFF04, 0xFF05, 0xFF06, 0xFF07, 0xFF08, 0xFF09, 0xFF0A, 0xFF0B, 0xFF0C, 0xFF0D, 0xFF0E, 0xFF0F,
0xFF10, 0xFF11, 0xFF12, 0xFF13, 0xFF14, 0xFF15, 0xFF16, 0xFF17, 0xFF18, 0xFF19, 0xFF1A, 0xFF1B, 0xFF1C, 0xFF1D, 0xFF1E, 0xFF1F,
0xFF20, 0xFF21, 0xFF22, 0xFF23, 0xFF24, 0xFF25, 0xFF26, 0xFF27, 0xFF28, 0xFF29, 0xFF2A, 0xFF2B, 0xFF2C, 0xFF2D, 0xFF2E, 0xFF2F,
0xFF30, 0xFF31, 0xFF32, 0xFF33, 0xFF34, 0xFF35, 0xFF36, 0xFF37, 0xFF38, 0xFF39, 0xFF3A, 0xFF3B, 0xFF3C, 0xFF3D, 0xFF3E, 0xFF3F,
0xFF40, 0xFF21, 0xFF22, 0xFF23, 0xFF24, 0xFF25, 0xFF26, 0xFF27, 0xFF28, 0xFF29, 0xFF2A, 0xFF2B, 0xFF2C, 0xFF2D, 0xFF2E, 0xFF2F,
0xFF30, 0xFF31, 0xFF32, 0xFF33, 0xFF34, 0xFF35, 0xFF36, 0xFF37, 0xFF38, 0xFF39, 0xFF3A, 0xFF5B, 0xFF5C, 0xFF5D, 0xFF5E, 0xFF5F,
0xFF60, 0xFF61, 0xFF62, 0xFF63, 0xFF64, 0xFF65, 0xFF66, 0xFF67, 0xFF68, 0xFF69, 0xFF6A, 0xFF6B, 0xFF6C, 0xFF6D, 0xFF6E, 0xFF6F,
0xFF70, 0xFF71, 0xFF72, 0xFF73, 0xFF74, 0xFF75, 0xFF76, 0xFF77, 0xFF78, 0xFF79, 0xFF7A, 0xFF7B, 0xFF7C, 0xFF7D, 0xFF7E, 0xFF7F,
0xFF80, 0xFF81, 0xFF82, 0xFF83, 0xFF84, 0xFF85, 0xFF86, 0xFF87, 0xFF88, 0xFF89, 0xFF8A, 0xFF8B, 0xFF8C, 0xFF8D, 0xFF8E, 0xFF8F,
0xFF90, 0xFF91, 0xFF92, 0xFF93, 0xFF94, 0xFF95, 0xFF96, 0xFF97, 0xFF98, 0xFF99, 0xFF9A, 0xFF9B, 0xFF9C, 0xFF9D, 0xFF9E, 0xFF9F,
0xFFA0, 0xFFA1, 0xFFA2, 0xFFA3, 0xFFA4, 0xFFA5, 0xFFA6, 0xFFA7, 0xFFA8, 0xFFA9, 0xFFAA, 0xFFAB, 0xFFAC, 0xFFAD, 0xFFAE, 0xFFAF,
0xFFB0, 0xFFB1, 0xFFB2, 0xFFB3, 0xFFB4, 0xFFB5, 0xFFB6, 0xFFB7, 0xFFB8, 0xFFB9, 0xFFBA, 0xFFBB, 0xFFBC, 0xFFBD, 0xFFBE, 0xFFBF,
0xFFC0, 0xFFC1, 0xFFC2, 0xFFC3, 0xFFC4, 0xFFC5, 0xFFC6, 0xFFC7, 0xFFC8, 0xFFC9, 0xFFCA, 0xFFCB, 0xFFCC, 0xFFCD, 0xFFCE, 0xFFCF,
0xFFD0, 0xFFD1, 0xFFD2, 0xFFD3, 0xFFD4, 0xFFD5, 0xFFD6, 0xFFD7, 0xFFD8, 0xFFD9, 0xFFDA, 0xFFDB, 0xFFDC, 0xFFDD, 0xFFDE, 0xFFDF,
0xFFE0, 0xFFE1, 0xFFE2, 0xFFE3, 0xFFE4, 0xFFE5, 0xFFE6, 0xFFE7, 0xFFE8, 0xFFE9, 0xFFEA, 0xFFEB, 0xFFEC, 0xFFED, 0xFFEE, 0xFFEF,
0xFFF0, 0xFFF1, 0xFFF2, 0xFFF3, 0xFFF4, 0xFFF5, 0xFFF6, 0xFFF7, 0xFFF8, 0xFFF9, 0xFFFA, 0xFFFB, 0xFFFC, 0xFFFD, 0xFFFE, 0xFFFF}
planeTable = [][]uint16{
plane00, plane01, plane02, plane03, plane04, plane05, nil, nil, nil,
nil, nil, nil, nil, nil, nil, nil, nil, nil,
nil, nil, nil, nil, nil, nil, nil, nil, nil,
nil, nil, nil, plane1E, plane1F, nil, plane21, nil, nil,
plane24, nil, nil, nil, nil, nil, nil, nil, nil,
nil, nil, nil, nil, nil, nil, nil, nil, nil,
nil, nil, nil, nil, nil, nil, nil, nil, nil,
nil, nil, nil, nil, nil, nil, nil, nil, nil,
nil, nil, nil, nil, nil, nil, nil, nil, nil,
nil, nil, nil, nil, nil, nil, nil, nil, nil,
nil, nil, nil, nil, nil, nil, nil, nil, nil,
nil, nil, nil, nil, nil, nil, nil, nil, nil,
nil, nil, nil, nil, nil, nil, nil, nil, nil,
nil, nil, nil, nil, nil, nil, nil, nil, nil,
nil, nil, nil, nil, nil, nil, nil, nil, nil,
nil, nil, nil, nil, nil, nil, nil, nil, nil,
nil, nil, nil, nil, nil, nil, nil, nil, nil,
nil, nil, nil, nil, nil, nil, nil, nil, nil,
nil, nil, nil, nil, nil, nil, nil, nil, nil,
nil, nil, nil, nil, nil, nil, nil, nil, nil,
nil, nil, nil, nil, nil, nil, nil, nil, nil,
nil, nil, nil, nil, nil, nil, nil, nil, nil,
nil, nil, nil, nil, nil, nil, nil, nil, nil,
nil, nil, nil, nil, nil, nil, nil, nil, nil,
nil, nil, nil, nil, nil, nil, nil, nil, nil,
nil, nil, nil, nil, nil, nil, nil, nil, nil,
nil, nil, nil, nil, nil, nil, nil, nil, nil,
nil, nil, nil, nil, nil, nil, nil, nil, nil,
nil, nil, nil, planeFF}
)
// Copyright 2020 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package collate
// Collation of utf8mb4_zh_pinyin_tidb_as_cs
type zhPinyinTiDBASCSCollator struct {
}
// Compare is not implemented.
func (*zhPinyinTiDBASCSCollator) Compare(_, _ string) int {
panic("implement me")
}
// Key is not implemented.
func (*zhPinyinTiDBASCSCollator) Key(_ string) []byte {
panic("implement me")
}
// ImmutableKey implement Collator interface.
func (*zhPinyinTiDBASCSCollator) ImmutableKey(_ string) []byte {
panic("implement me")
}
// KeyWithoutTrimRightSpace is not implemented.
func (*zhPinyinTiDBASCSCollator) KeyWithoutTrimRightSpace(_ string) []byte {
panic("implement me")
}
// Pattern is not implemented.
func (*zhPinyinTiDBASCSCollator) Pattern() WildcardPattern {
panic("implement me")
}
// Clone is not implemented.
func (*zhPinyinTiDBASCSCollator) Clone() Collator {
panic("implement me")
}
// Copyright 2023 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// Code generated by "util/collate/ucaimpl"; DO NOT EDIT.
// These codes are generated rather than using other polymorphism method (e.g. generics, interfaces, if/else...) to make
// sure every call to the `GetWeight` and `Preprocess` is inlined. The function inlining can affect 20%~50% performance.
package collate
import (
"unicode/utf8"
"github.com/pingcap/tidb/pkg/util/hack"
)
// unicodeCICollator implements UCA. see http://unicode.org/reports/tr10/
type unicodeCICollator struct {
impl unicode0400Impl
}
// Clone implements Collator interface.
func (uc *unicodeCICollator) Clone() Collator {
return &unicodeCICollator{impl: uc.impl.Clone()}
}
// Compare implements Collator interface.
func (uc *unicodeCICollator) Compare(a, b string) int {
a = uc.impl.Preprocess(a)
b = uc.impl.Preprocess(b)
// weight of a, b. weight in unicode_ci may have 8 uint16s. xn indicate first 4 u16s, xs indicate last 4 u16s
an, bn := uint64(0), uint64(0)
as, bs := uint64(0), uint64(0)
// rune of a, b
ar, br := rune(0), rune(0)
// decode index of a, b
ai, bi := 0, 0
arLen, brLen := 0, 0
for {
if an == 0 {
if as == 0 {
for an == 0 && ai < len(a) {
ar, arLen = utf8.DecodeRune(hack.Slice(a[ai:]))
if ar == utf8.RuneError {
return 0
}
ai = ai + arLen
an, as = uc.impl.GetWeight(ar)
}
} else {
an = as
as = 0
}
}
if bn == 0 {
if bs == 0 {
for bn == 0 && bi < len(b) {
br, brLen = utf8.DecodeRune(hack.Slice(b[bi:]))
if br == utf8.RuneError {
return 0
}
bi = bi + brLen
bn, bs = uc.impl.GetWeight(br)
}
} else {
bn = bs
bs = 0
}
}
if an == 0 || bn == 0 {
return sign(int(an) - int(bn))
}
if an == bn {
an, bn = 0, 0
continue
}
for an != 0 && bn != 0 {
if (an^bn)&0xFFFF != 0 {
return sign(int(an&0xFFFF) - int(bn&0xFFFF))
}
an >>= 16
bn >>= 16
}
}
}
// Key implements Collator interface.
func (uc *unicodeCICollator) Key(str string) []byte {
return uc.KeyWithoutTrimRightSpace(uc.impl.Preprocess(str))
}
// ImmutableKey implements Collator interface.
func (uc *unicodeCICollator) ImmutableKey(str string) []byte {
return uc.KeyWithoutTrimRightSpace(uc.impl.Preprocess(str))
}
// KeyWithoutTrimRightSpace implements Collator interface.
func (uc *unicodeCICollator) KeyWithoutTrimRightSpace(str string) []byte {
buf := make([]byte, 0, len(str)*2)
r := rune(0)
si := 0 // decode index of s
sn, ss := uint64(0), uint64(0) // weight of str. weight in unicode_ci may has 8 uint16s. sn indicate first 4 u16s, ss indicate last 4 u16s
rLen := 0
for si < len(str) {
r, rLen = utf8.DecodeRune(hack.Slice(str[si:]))
if r == utf8.RuneError {
return buf
}
si = si + rLen
sn, ss = uc.impl.GetWeight(r)
for sn != 0 {
buf = append(buf, byte((sn&0xFF00)>>8), byte(sn))
sn >>= 16
}
for ss != 0 {
buf = append(buf, byte((ss&0xFF00)>>8), byte(ss))
ss >>= 16
}
}
return buf
}
// Pattern implements Collator interface.
func (uc *unicodeCICollator) Pattern() WildcardPattern {
return uc.impl.Pattern()
}
// Copyright 2020 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package collate
import (
"github.com/pingcap/tidb/pkg/util/collate/ucadata"
"github.com/pingcap/tidb/pkg/util/stringutil"
)
const (
// magic number indicate weight has 2 uint64, should get from `longRuneMap`
longRune uint64 = 0xFFFD
)
//go:generate go run ./ucaimpl/main.go -- unicode_0400_ci_generated.go
type unicode0400Impl struct {
}
func (unicode0400Impl) Clone() unicode0400Impl {
return unicode0400Impl{}
}
func (unicode0400Impl) Preprocess(s string) string {
return truncateTailingSpace(s)
}
func (unicode0400Impl) GetWeight(r rune) (first, second uint64) {
if r > 0xFFFF {
return 0xFFFD, 0
}
if ucadata.DUCET0400Table.MapTable4[r] == longRune {
return ucadata.DUCET0400Table.LongRuneMap[r][0], ucadata.DUCET0400Table.LongRuneMap[r][1]
}
return ucadata.DUCET0400Table.MapTable4[r], 0
}
func (unicode0400Impl) Pattern() WildcardPattern {
return &unicodePattern{}
}
type unicodePattern struct {
patChars []rune
patTypes []byte
}
// Compile implements WildcardPattern interface.
func (p *unicodePattern) Compile(patternStr string, escape byte) {
p.patChars, p.patTypes = stringutil.CompilePatternInner(patternStr, escape)
}
// DoMatch implements WildcardPattern interface.
func (p *unicodePattern) DoMatch(str string) bool {
return stringutil.DoMatchCustomized(str, p.patChars, p.patTypes, func(a, b rune) bool {
if a > 0xFFFF || b > 0xFFFF {
return a == b
}
ar, br := ucadata.DUCET0400Table.MapTable4[a], ucadata.DUCET0400Table.MapTable4[b]
if ar != br {
return false
}
if ar == longRune {
return a == b
}
return true
})
}
// Copyright 2023 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// Code generated by "util/collate/ucaimpl"; DO NOT EDIT.
// These codes are generated rather than using other polymorphism method (e.g. generics, interfaces, if/else...) to make
// sure every call to the `GetWeight` and `Preprocess` is inlined. The function inlining can affect 20%~50% performance.
package collate
import (
"unicode/utf8"
"github.com/pingcap/tidb/pkg/util/hack"
)
// unicode0900AICICollator implements UCA. see http://unicode.org/reports/tr10/
type unicode0900AICICollator struct {
impl unicode0900Impl
}
// Clone implements Collator interface.
func (uc *unicode0900AICICollator) Clone() Collator {
return &unicode0900AICICollator{impl: uc.impl.Clone()}
}
// Compare implements Collator interface.
func (uc *unicode0900AICICollator) Compare(a, b string) int {
a = uc.impl.Preprocess(a)
b = uc.impl.Preprocess(b)
// weight of a, b. weight in unicode_ci may have 8 uint16s. xn indicate first 4 u16s, xs indicate last 4 u16s
an, bn := uint64(0), uint64(0)
as, bs := uint64(0), uint64(0)
// rune of a, b
ar, br := rune(0), rune(0)
// decode index of a, b
ai, bi := 0, 0
arLen, brLen := 0, 0
for {
if an == 0 {
if as == 0 {
for an == 0 && ai < len(a) {
ar, arLen = utf8.DecodeRune(hack.Slice(a[ai:]))
if ar == utf8.RuneError {
return 0
}
ai = ai + arLen
an, as = uc.impl.GetWeight(ar)
}
} else {
an = as
as = 0
}
}
if bn == 0 {
if bs == 0 {
for bn == 0 && bi < len(b) {
br, brLen = utf8.DecodeRune(hack.Slice(b[bi:]))
if br == utf8.RuneError {
return 0
}
bi = bi + brLen
bn, bs = uc.impl.GetWeight(br)
}
} else {
bn = bs
bs = 0
}
}
if an == 0 || bn == 0 {
return sign(int(an) - int(bn))
}
if an == bn {
an, bn = 0, 0
continue
}
for an != 0 && bn != 0 {
if (an^bn)&0xFFFF != 0 {
return sign(int(an&0xFFFF) - int(bn&0xFFFF))
}
an >>= 16
bn >>= 16
}
}
}
// Key implements Collator interface.
func (uc *unicode0900AICICollator) Key(str string) []byte {
return uc.KeyWithoutTrimRightSpace(uc.impl.Preprocess(str))
}
// ImmutableKey implements Collator interface.
func (uc *unicode0900AICICollator) ImmutableKey(str string) []byte {
return uc.KeyWithoutTrimRightSpace(uc.impl.Preprocess(str))
}
// KeyWithoutTrimRightSpace implements Collator interface.
func (uc *unicode0900AICICollator) KeyWithoutTrimRightSpace(str string) []byte {
buf := make([]byte, 0, len(str)*2)
r := rune(0)
si := 0 // decode index of s
sn, ss := uint64(0), uint64(0) // weight of str. weight in unicode_ci may has 8 uint16s. sn indicate first 4 u16s, ss indicate last 4 u16s
rLen := 0
for si < len(str) {
r, rLen = utf8.DecodeRune(hack.Slice(str[si:]))
if r == utf8.RuneError {
return buf
}
si = si + rLen
sn, ss = uc.impl.GetWeight(r)
for sn != 0 {
buf = append(buf, byte((sn&0xFF00)>>8), byte(sn))
sn >>= 16
}
for ss != 0 {
buf = append(buf, byte((ss&0xFF00)>>8), byte(ss))
ss >>= 16
}
}
return buf
}
// Pattern implements Collator interface.
func (uc *unicode0900AICICollator) Pattern() WildcardPattern {
return uc.impl.Pattern()
}
// Copyright 2023 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package collate
import (
"github.com/pingcap/tidb/pkg/util/collate/ucadata"
"github.com/pingcap/tidb/pkg/util/stringutil"
)
//go:generate go run ./ucaimpl/main.go -- unicode_0900_ai_ci_generated.go
type unicode0900Impl struct {
}
func (unicode0900Impl) Clone() unicode0900Impl {
return unicode0900Impl{}
}
func (unicode0900Impl) Preprocess(s string) string {
return s
}
func (unicode0900Impl) GetWeight(r rune) (first, second uint64) {
return convertRuneUnicodeCI0900(r)
}
func (unicode0900Impl) Pattern() WildcardPattern {
return &unicode0900AICIPattern{}
}
func convertRuneUnicodeCI0900(r rune) (first, second uint64) {
if int(r) > len(ucadata.DUCET0900Table.MapTable4) {
return uint64(r>>15) + 0xFBC0 + (uint64((r&0x7FFF)|0x8000) << 16), 0
}
first = ucadata.DUCET0900Table.MapTable4[r]
if first == ucadata.LongRune8 {
return ucadata.DUCET0900Table.LongRuneMap[r][0], ucadata.DUCET0900Table.LongRuneMap[r][1]
}
return first, 0
}
type unicode0900AICIPattern struct {
patChars []rune
patTypes []byte
}
// Compile implements WildcardPattern interface.
func (p *unicode0900AICIPattern) Compile(patternStr string, escape byte) {
p.patChars, p.patTypes = stringutil.CompilePatternInner(patternStr, escape)
}
// DoMatch implements WildcardPattern interface.
func (p *unicode0900AICIPattern) DoMatch(str string) bool {
return stringutil.DoMatchCustomized(str, p.patChars, p.patTypes, func(a, b rune) bool {
aFirst, aSecond := convertRuneUnicodeCI0900(a)
bFirst, bSecond := convertRuneUnicodeCI0900(b)
return aFirst == bFirst && aSecond == bSecond
})
}
// Copyright 2024 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package context
import (
"fmt"
"sync/atomic"
)
// ValueStoreContext is a context that can store values.
type ValueStoreContext interface {
// SetValue saves a value associated with this context for key.
SetValue(key fmt.Stringer, value any)
// Value returns the value associated with this context for key.
Value(key fmt.Stringer) any
// ClearValue clears the value associated with this context for key.
ClearValue(key fmt.Stringer)
// GetDomain returns the domain.
GetDomain() any
}
var contextIDGenerator atomic.Uint64
// GenContextID generates a unique context ID.
func GenContextID() uint64 {
return contextIDGenerator.Add(1)
}
// Copyright 2024 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package context
import (
"sync"
"github.com/pingcap/errors"
)
// PlanCacheType is the flag of plan cache
type PlanCacheType int
const (
// DefaultNoCache no cache
DefaultNoCache PlanCacheType = iota
// SessionPrepared session prepared plan cache
SessionPrepared
// SessionNonPrepared session non-prepared plan cache
SessionNonPrepared
)
// PlanCacheTracker PlanCacheTracker `PlanCacheTracker`. `PlanCacheTracker` is thread-safe.
type PlanCacheTracker struct {
mu sync.Mutex
useCache bool
cacheType PlanCacheType
planCacheUnqualified string
forcePlanCache bool // force the optimizer to use plan cache even if there is risky optimization, see #49736.
alwaysWarnSkipCache bool
warnHandler WarnAppender
}
// WarnSkipPlanCache output the reason why this query can't hit the plan cache.
func (h *PlanCacheTracker) WarnSkipPlanCache(reason string) {
h.mu.Lock()
defer h.mu.Unlock()
if h.cacheType == DefaultNoCache {
return
}
h.warnSkipPlanCache(reason)
}
// SetSkipPlanCache sets to skip plan cache.
func (h *PlanCacheTracker) SetSkipPlanCache(reason string) {
h.mu.Lock()
defer h.mu.Unlock()
if !h.useCache {
return
}
if h.forcePlanCache {
h.warnHandler.AppendWarning(errors.NewNoStackErrorf("force plan-cache: may use risky cached plan: %s", reason))
return
}
h.useCache = false
h.warnSkipPlanCache(reason)
}
func (h *PlanCacheTracker) warnSkipPlanCache(reason string) {
h.planCacheUnqualified = reason
switch h.cacheType {
case DefaultNoCache:
h.warnHandler.AppendWarning(errors.NewNoStackError("unknown cache type"))
case SessionPrepared:
h.warnHandler.AppendWarning(errors.NewNoStackErrorf("skip prepared plan-cache: %s", reason))
case SessionNonPrepared:
if h.alwaysWarnSkipCache {
// use "plan_cache" rather than types.ExplainFormatPlanCache to avoid import cycle
h.warnHandler.AppendWarning(errors.NewNoStackErrorf("skip non-prepared plan-cache: %s", reason))
}
}
}
// SetAlwaysWarnSkipCache sets whether to always warn when skip plan cache. By default, for `SessionNonPrepared`, we don't warn
// when skip plan cache. But in some cases, we want to warn even for `SessionNonPrepared`.
func (h *PlanCacheTracker) SetAlwaysWarnSkipCache(alwaysWarnSkipCache bool) {
h.mu.Lock()
defer h.mu.Unlock()
h.alwaysWarnSkipCache = alwaysWarnSkipCache
}
// SetCacheType sets the cache type.
func (h *PlanCacheTracker) SetCacheType(cacheType PlanCacheType) {
h.mu.Lock()
defer h.mu.Unlock()
h.cacheType = cacheType
}
// SetForcePlanCache sets whether to force the optimizer to use plan cache even if there is risky optimization.
func (h *PlanCacheTracker) SetForcePlanCache(forcePlanCache bool) {
h.mu.Lock()
defer h.mu.Unlock()
h.forcePlanCache = forcePlanCache
}
// EnablePlanCache sets to use plan cache.
func (h *PlanCacheTracker) EnablePlanCache() {
h.mu.Lock()
defer h.mu.Unlock()
h.useCache = true
}
// UseCache returns whether to use plan cache.
func (h *PlanCacheTracker) UseCache() bool {
h.mu.Lock()
defer h.mu.Unlock()
return h.useCache
}
// PlanCacheUnqualified returns the reason of why the plan cache is unqualified
func (h *PlanCacheTracker) PlanCacheUnqualified() string {
h.mu.Lock()
defer h.mu.Unlock()
return h.planCacheUnqualified
}
// NewPlanCacheTracker creates a new PlanCacheTracker.
func NewPlanCacheTracker(warnHandler WarnAppender) PlanCacheTracker {
return PlanCacheTracker{
warnHandler: warnHandler,
}
}
// RangeFallbackHandler is used to handle range fallback.
// If there are too many ranges, it'll fallback and add a warning.
// RangeFallbackHandler is thread-safe.
type RangeFallbackHandler struct {
planCacheTracker *PlanCacheTracker
warnHandler WarnAppender
reportRangeFallbackWarning sync.Once
}
// RecordRangeFallback records the range fallback event.
func (h *RangeFallbackHandler) RecordRangeFallback(rangeMaxSize int64) {
// If range fallback happens, it means ether the query is unreasonable(for example, several long IN lists) or tidb_opt_range_max_size is too small
// and the generated plan is probably suboptimal. In that case we don't put it into plan cache.
h.planCacheTracker.SetSkipPlanCache("in-list is too long")
h.reportRangeFallbackWarning.Do(func() {
h.warnHandler.AppendWarning(errors.NewNoStackErrorf("Memory capacity of %v bytes for 'tidb_opt_range_max_size' exceeded when building ranges. Less accurate ranges such as full range are chosen", rangeMaxSize))
})
}
// NewRangeFallbackHandler creates a new RangeFallbackHandler.
func NewRangeFallbackHandler(planCacheTracker *PlanCacheTracker, warnHandler WarnAppender) RangeFallbackHandler {
return RangeFallbackHandler{
planCacheTracker: planCacheTracker,
warnHandler: warnHandler,
}
}
// Copyright 2023 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package context
import (
"encoding/json"
"math"
"sync"
"github.com/pingcap/errors"
"github.com/pingcap/tidb/pkg/parser/terror"
)
const (
// WarnLevelError represents level "Error" for 'SHOW WARNINGS' syntax.
WarnLevelError = "Error"
// WarnLevelWarning represents level "Warning" for 'SHOW WARNINGS' syntax.
WarnLevelWarning = "Warning"
// WarnLevelNote represents level "Note" for 'SHOW WARNINGS' syntax.
WarnLevelNote = "Note"
)
// SQLWarn relates a sql warning and it's level.
type SQLWarn struct {
Level string
Err error
}
type jsonSQLWarn struct {
Level string `json:"level"`
SQLErr *terror.Error `json:"err,omitempty"`
Msg string `json:"msg,omitempty"`
}
// MarshalJSON implements the Marshaler.MarshalJSON interface.
func (warn *SQLWarn) MarshalJSON() ([]byte, error) {
w := &jsonSQLWarn{
Level: warn.Level,
}
e := errors.Cause(warn.Err)
switch x := e.(type) {
case *terror.Error:
// Omit outter errors because only the most inner error matters.
w.SQLErr = x
default:
w.Msg = e.Error()
}
return json.Marshal(w)
}
// UnmarshalJSON implements the Unmarshaler.UnmarshalJSON interface.
func (warn *SQLWarn) UnmarshalJSON(data []byte) error {
var w jsonSQLWarn
if err := json.Unmarshal(data, &w); err != nil {
return err
}
warn.Level = w.Level
if w.SQLErr != nil {
warn.Err = w.SQLErr
} else {
warn.Err = errors.New(w.Msg)
}
return nil
}
// WarnAppender provides a function to add a warning.
// Using interface rather than a simple function/closure can avoid memory allocation in some cases.
// See https://github.com/pingcap/tidb/issues/49277
type WarnAppender interface {
// AppendWarning appends a warning
AppendWarning(err error)
// AppendNote appends a warning with level 'Note'.
AppendNote(msg error)
}
// WarnHandler provides a handler to append and get warnings.
type WarnHandler interface {
WarnAppender
// WarningCount gets warning count.
WarningCount() int
// TruncateWarnings truncates warnings begin from start and returns the truncated warnings.
//
// Deprecated: This method is deprecated. Because it's unsafe to read the warnings returned by `GetWarnings`
// after truncate and append the warnings.
//
// Currently it's used in two cases and they all have better alternatives:
// 1. Read warnings count, do some operation and truncate warnings to read new warnings. In this case, we
// can use a new temporary WarnHandler to do the operation and get the warnings without touching the
// global `WarnHandler` in the statement context.
// 2. Read warnings count, do some operation and truncate warnings to see whether new warnings are appended.
// In this case, we can use a specially designed `WarnHandler` which doesn't actually record warnings, but
// just counts whether new warnings are appended.
// It's understandable to use `TruncateWarnings` as it's not always easy to assign a new `WarnHandler` to the
// context now.
// TODO: Make it easier to assign a new `WarnHandler` to the context (of `table` and other packages) and remove
// this method.
TruncateWarnings(start int) []SQLWarn
// CopyWarnings copies warnings to another slice.
// The input argument provides target warnings that copy to.
// If the dist capacity is not enough, it will allocate a new slice.
CopyWarnings(dst []SQLWarn) []SQLWarn
}
// WarnHandlerExt includes more methods for WarnHandler. It allows more detailed control over warnings.
// TODO: it's a standalone interface, because it's not necessary for all WarnHandler to implement these methods.
// However, it's still needed for many executors, so we'll see whether it's good to merge it with `WarnAppender`
// and `WarnHandler` in the future.
type WarnHandlerExt interface {
WarnHandler
// AppendWarnings appends multiple warnings
AppendWarnings(warns []SQLWarn)
// AppendNote appends a warning with level 'Note'.
AppendNote(warn error)
// AppendError appends a warning with level 'Error'.
AppendError(warn error)
// GetWarnings gets all warnings. The slice is not copied, so it should not be modified.
GetWarnings() []SQLWarn
// SetWarnings resets all warnings in the handler directly. The handler may ignore the given warnings.
SetWarnings(warns []SQLWarn)
// NumErrorWarnings returns the number of warnings with level 'Error' and the total number of warnings.
NumErrorWarnings() (uint16, int)
}
var _ WarnHandler = &StaticWarnHandler{}
// StaticWarnHandler implements the WarnHandler interface.
type StaticWarnHandler struct {
sync.Mutex
warnings []SQLWarn
}
// NewStaticWarnHandler creates a new StaticWarnHandler.
func NewStaticWarnHandler(sliceCap int) *StaticWarnHandler {
var warnings []SQLWarn
if sliceCap > 0 {
warnings = make([]SQLWarn, 0, sliceCap)
}
return &StaticWarnHandler{warnings: warnings}
}
// NewStaticWarnHandlerWithHandler creates a new StaticWarnHandler with copying the warnings from the given WarnHandler.
func NewStaticWarnHandlerWithHandler(h WarnHandler) *StaticWarnHandler {
if h == nil {
return NewStaticWarnHandler(0)
}
cnt := h.WarningCount()
newHandler := NewStaticWarnHandler(cnt)
if cnt > 0 {
newHandler.warnings = h.CopyWarnings(newHandler.warnings)
}
return newHandler
}
// Reset resets the warnings of this handler.
func (h *StaticWarnHandler) Reset() {
if h.warnings != nil {
h.warnings = h.warnings[:0]
}
}
// AppendWarning implements the StaticWarnHandler.AppendWarning.
func (h *StaticWarnHandler) AppendWarning(warn error) {
h.Lock()
defer h.Unlock()
h.appendWarningWithLevel(WarnLevelWarning, warn)
}
// AppendWarnings appends multiple warnings
func (h *StaticWarnHandler) AppendWarnings(warns []SQLWarn) {
h.Lock()
defer h.Unlock()
if len(h.warnings) < math.MaxUint16 {
h.warnings = append(h.warnings, warns...)
}
}
// AppendNote appends a warning with level 'Note'.
func (h *StaticWarnHandler) AppendNote(warn error) {
h.Lock()
defer h.Unlock()
h.appendWarningWithLevel(WarnLevelNote, warn)
}
// AppendError appends a warning with level 'Error'.
func (h *StaticWarnHandler) AppendError(warn error) {
h.Lock()
defer h.Unlock()
h.appendWarningWithLevel(WarnLevelError, warn)
}
// WarningCount implements the StaticWarnHandler.WarningCount.
func (h *StaticWarnHandler) WarningCount() int {
h.Lock()
defer h.Unlock()
return len(h.warnings)
}
// TruncateWarnings implements the StaticWarnHandler.TruncateWarnings.
func (h *StaticWarnHandler) TruncateWarnings(start int) []SQLWarn {
h.Lock()
defer h.Unlock()
sz := len(h.warnings) - start
if sz <= 0 {
return nil
}
ret := make([]SQLWarn, sz)
copy(ret, h.warnings[start:])
h.warnings = h.warnings[:start]
return ret
}
// CopyWarnings implements the StaticWarnHandler.CopyWarnings.
func (h *StaticWarnHandler) CopyWarnings(dst []SQLWarn) []SQLWarn {
h.Lock()
defer h.Unlock()
if cnt := len(h.warnings); cap(dst) < cnt {
dst = make([]SQLWarn, cnt)
} else {
dst = dst[:cnt]
}
copy(dst, h.warnings)
return dst
}
// GetWarnings returns all warnings in the handler. It's not safe to modify the returned slice.
func (h *StaticWarnHandler) GetWarnings() []SQLWarn {
h.Mutex.Lock()
defer h.Mutex.Unlock()
return h.warnings
}
func (h *StaticWarnHandler) appendWarningWithLevel(level string, warn error) {
if len(h.warnings) < math.MaxUint16 {
h.warnings = append(h.warnings, SQLWarn{level, warn})
}
}
// SetWarnings sets the internal warnings directly.
func (h *StaticWarnHandler) SetWarnings(warns []SQLWarn) {
h.Lock()
defer h.Unlock()
h.warnings = warns
}
// NumErrorWarnings returns the number of warnings with level 'Error' and the total number of warnings.
func (h *StaticWarnHandler) NumErrorWarnings() (uint16, int) {
h.Lock()
defer h.Unlock()
var numError uint16
for _, w := range h.warnings {
if w.Level == WarnLevelError {
numError++
}
}
return numError, len(h.warnings)
}
type ignoreWarn struct{}
func (*ignoreWarn) AppendWarning(_ error) {}
func (*ignoreWarn) AppendNote(_ error) {}
func (*ignoreWarn) WarningCount() int { return 0 }
func (*ignoreWarn) TruncateWarnings(_ int) []SQLWarn { return nil }
func (*ignoreWarn) CopyWarnings(_ []SQLWarn) []SQLWarn { return nil }
// IgnoreWarn is WarnHandler which does nothing
var IgnoreWarn WarnHandler = &ignoreWarn{}
type funcWarnAppender struct {
fn func(level string, err error)
}
func (r *funcWarnAppender) AppendWarning(err error) {
r.fn(WarnLevelWarning, err)
}
func (r *funcWarnAppender) AppendNote(err error) {
r.fn(WarnLevelNote, err)
}
// NewFuncWarnAppenderForTest creates a `WarnHandler` which will use the function to handle warn
// To have a better performance, it's not suggested to use this function in production.
func NewFuncWarnAppenderForTest(fn func(level string, err error)) WarnAppender {
return &funcWarnAppender{fn}
}
// Copyright 2020 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package dbterror
import (
"github.com/pingcap/tidb/pkg/errno"
"github.com/pingcap/tidb/pkg/parser/terror"
)
// ErrClass represents a class of errors.
type ErrClass struct{ terror.ErrClass }
// Error classes.
var (
ClassAutoid = ErrClass{terror.ClassAutoid}
ClassDDL = ErrClass{terror.ClassDDL}
ClassDomain = ErrClass{terror.ClassDomain}
ClassExecutor = ErrClass{terror.ClassExecutor}
ClassExpression = ErrClass{terror.ClassExpression}
ClassAdmin = ErrClass{terror.ClassAdmin}
ClassKV = ErrClass{terror.ClassKV}
ClassMeta = ErrClass{terror.ClassMeta}
ClassOptimizer = ErrClass{terror.ClassOptimizer}
ClassPrivilege = ErrClass{terror.ClassPrivilege}
ClassSchema = ErrClass{terror.ClassSchema}
ClassServer = ErrClass{terror.ClassServer}
ClassStructure = ErrClass{terror.ClassStructure}
ClassVariable = ErrClass{terror.ClassVariable}
ClassXEval = ErrClass{terror.ClassXEval}
ClassTable = ErrClass{terror.ClassTable}
ClassTypes = ErrClass{terror.ClassTypes}
ClassJSON = ErrClass{terror.ClassJSON}
ClassTiKV = ErrClass{terror.ClassTiKV}
ClassSession = ErrClass{terror.ClassSession}
ClassPlugin = ErrClass{terror.ClassPlugin}
ClassUtil = ErrClass{terror.ClassUtil}
)
// NewStd calls New using the standard message for the error code
// Attention:
// this method is not goroutine-safe and
// usually be used in global variable initializer
func (ec ErrClass) NewStd(code terror.ErrCode) *terror.Error {
return ec.NewStdErr(code, errno.MySQLErrName[uint16(code)])
}
// Copyright 2015 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package hack
import (
"runtime"
"strings"
"unsafe"
)
// MutableString can be used as string via string(MutableString) without performance loss.
type MutableString string
// String converts slice to MutableString without copy.
// The MutableString can be converts to string without copy.
// Use it at your own risk.
func String(b []byte) MutableString {
if len(b) == 0 {
return ""
}
return MutableString(unsafe.String(unsafe.SliceData(b), len(b)))
}
// Slice converts string to slice without copy.
// Use at your own risk.
func Slice(s string) []byte {
return unsafe.Slice(unsafe.StringData(s), len(s))
}
// LoadFactor is the maximum average load of a bucket that triggers growth is 6.5 in Golang Map.
// Represent as LoadFactorNum/LoadFactorDen, to allow integer math.
// They are from the golang definition. ref: https://github.com/golang/go/blob/go1.13.15/src/runtime/map.go#L68-L71
const (
// LoadFactorDen is the denominator of load factor
LoadFactorDen = 2
)
// LoadFactorNum is the numerator of load factor
var LoadFactorNum = 13
func init() {
// In go1.21, the load factor num becomes 12 and go team has decided not to backport the fix to 1.21.
// See more details in https://github.com/golang/go/issues/63438
if strings.Contains(runtime.Version(), `go1.21`) || strings.Contains(runtime.Version(), `go1.22`) {
LoadFactorNum = 12
}
}
const (
// DefBucketMemoryUsageForMapStrToSlice = bucketSize*(1+unsafe.Sizeof(string) + unsafe.Sizeof(slice))+2*ptrSize
// ref https://github.com/golang/go/blob/go1.15.6/src/reflect/type.go#L2162.
// The bucket size may be changed by golang implement in the future.
// Golang Map needs to acquire double the memory when expanding,
// and the old buckets will be released after the data is migrated.
// Considering the worst case, the data in the old bucket cannot be migrated in time, and the old bucket cannot
// be GCed, we expand the bucket size to 1.5 times to estimate the memory usage of Golang Map.
DefBucketMemoryUsageForMapStrToSlice = (8*(1+16+24) + 16) / 2 * 3
// DefBucketMemoryUsageForMapIntToPtr = bucketSize*(1+unsafe.Sizeof(uint64) + unsafe.Sizeof(pointer))+2*ptrSize
DefBucketMemoryUsageForMapIntToPtr = (8*(1+8+8) + 16) / 2 * 3
// DefBucketMemoryUsageForMapStringToAny = bucketSize*(1+unsafe.Sizeof(string) + unsafe.Sizeof(interface{}))+2*ptrSize
DefBucketMemoryUsageForMapStringToAny = (8*(1+16+16) + 16) / 2 * 3
// DefBucketMemoryUsageForSetString = bucketSize*(1+unsafe.Sizeof(string) + unsafe.Sizeof(struct{}))+2*ptrSize
DefBucketMemoryUsageForSetString = (8*(1+16+0) + 16) / 2 * 3
// DefBucketMemoryUsageForSetFloat64 = bucketSize*(1+unsafe.Sizeof(float64) + unsafe.Sizeof(struct{}))+2*ptrSize
DefBucketMemoryUsageForSetFloat64 = (8*(1+8+0) + 16) / 2 * 3
// DefBucketMemoryUsageForSetInt64 = bucketSize*(1+unsafe.Sizeof(int64) + unsafe.Sizeof(struct{}))+2*ptrSize
DefBucketMemoryUsageForSetInt64 = (8*(1+8+0) + 16) / 2 * 3
)
// EstimateBucketMemoryUsage returns the estimated memory usage of a bucket in a map.
func EstimateBucketMemoryUsage[K comparable, V any]() uint64 {
return (8*(1+uint64(unsafe.Sizeof(*new(K))+unsafe.Sizeof(*new(V)))) + 16) / 2 * 3
}
// GetBytesFromPtr return a bytes array from the given ptr and length
func GetBytesFromPtr(ptr unsafe.Pointer, length int) []byte {
return unsafe.Slice((*byte)(ptr), length)
}
// Copyright 2025 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package intest
import (
"fmt"
"reflect"
"github.com/pingcap/failpoint"
)
// EnableInternalCheck is a general switch to enable internal check.
var EnableInternalCheck = false
// Assert asserts a condition is true
func doAssert(cond bool, msgAndArgs ...any) {
if !cond {
doPanic("", msgAndArgs...)
}
}
// AssertNoError asserts an error is nil
func doAssertNoError(err error, msgAndArgs ...any) {
if err != nil {
doPanic(fmt.Sprintf("error is not nil: %+v", err), msgAndArgs...)
}
}
// AssertNotNil asserts an object is not nil
func doAssertNotNil(obj any, msgAndArgs ...any) {
doAssert(obj != nil, msgAndArgs...)
value := reflect.ValueOf(obj)
switch value.Kind() {
case reflect.Func, reflect.Chan, reflect.Interface, reflect.Map, reflect.Ptr, reflect.Slice, reflect.UnsafePointer:
doAssert(!value.IsNil(), msgAndArgs...)
}
}
// AssertFunc asserts a function condition
func doAssertFunc(fn func() bool, msgAndArgs ...any) {
doAssert(fn != nil, msgAndArgs...)
doAssert(fn(), msgAndArgs...)
}
func doPanic(extraMsg string, userMsgAndArgs ...any) {
panic(assertionFailedMsg(extraMsg, userMsgAndArgs...))
}
func assertionFailedMsg(extraMsg string, userMsgAndArgs ...any) string {
msg := "assert failed"
if len(userMsgAndArgs) == 0 {
if extraMsg != "" {
msg = fmt.Sprintf("%s, %s", msg, extraMsg)
}
return msg
}
if len(userMsgAndArgs) == 0 {
return fmt.Sprintf("assert failed, %s", extraMsg)
}
userMsg, ok := userMsgAndArgs[0].(string)
if !ok {
userMsg = fmt.Sprintf("%+v", userMsgAndArgs[0])
}
msg = fmt.Sprintf("%s, %s", msg, userMsg)
if extraMsg != "" {
msg = fmt.Sprintf("%s, %s", msg, extraMsg)
}
return fmt.Sprintf(msg, userMsgAndArgs[1:]...)
}
func init() {
if InTest || EnableAssert {
EnableInternalCheck = true
}
// Use `export GO_FAILPOINTS="/enableInternalCheck=return(true)"` to enable internal check.
// The path is "/" instead of "pingcap/tidb/pkg/intest/enableInternalCheck" because of the init().
failpoint.Inject("enableInternalCheck", func(val failpoint.Value) {
if val.(bool) {
EnableInternalCheck = true
EnableAssert = true
}
})
}
// Copyright 2023 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//go:build !intest && !enableassert
package intest
// EnableAssert checks if the code is running in integration test.
var EnableAssert = false
// Assert asserts a condition is true
func Assert(cond bool, msgAndArgs ...any) {
if EnableInternalCheck {
doAssert(cond, msgAndArgs...)
}
}
// AssertNoError asserts an error is nil
func AssertNoError(err error, msgAndArgs ...any) {
if EnableInternalCheck {
doAssertNoError(err, msgAndArgs...)
}
}
// AssertNotNil asserts an object is not nil
func AssertNotNil(obj any, msgAndArgs ...any) {
if EnableInternalCheck {
doAssertNotNil(obj, msgAndArgs...)
}
}
// AssertFunc asserts a function condition
func AssertFunc(fn func() bool, msgAndArgs ...any) {
if EnableInternalCheck {
doAssertFunc(fn, msgAndArgs...)
}
}
// Copyright 2017 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package kvcache
import (
"container/list"
"github.com/pingcap/errors"
"github.com/pingcap/tidb/pkg/util/memory"
)
// Key is the interface that every key in LRU Cache should implement.
type Key interface {
Hash() []byte
}
// Value is the interface that every value in LRU Cache should implement.
type Value any
// cacheEntry wraps Key and Value. It's the value of list.Element.
type cacheEntry struct {
key Key
value Value
}
var (
// GlobalLRUMemUsageTracker tracks all the memory usage of SimpleLRUCache
GlobalLRUMemUsageTracker *memory.Tracker
)
const (
// ProfileName is the function name in heap profile
ProfileName = "github.com/pingcap/tidb/pkg/util/kvcache.(*SimpleLRUCache).Put"
)
func init() {
GlobalLRUMemUsageTracker = memory.NewTracker(memory.LabelForGlobalSimpleLRUCache, -1)
}
// SimpleLRUCache is a simple least recently used cache, not thread-safe, use it carefully.
type SimpleLRUCache struct {
elements map[string]*list.Element
// onEvict function will be called if any eviction happened
onEvict func(Key, Value)
cache *list.List
capacity uint
size uint
// 0 indicates no quota
quota uint64
guard float64
}
// NewSimpleLRUCache creates a SimpleLRUCache object, whose capacity is "capacity".
// NOTE: "capacity" should be a positive value.
func NewSimpleLRUCache(capacity uint, guard float64, quota uint64) *SimpleLRUCache {
if capacity < 1 {
panic("capacity of LRU Cache should be at least 1.")
}
return &SimpleLRUCache{
capacity: capacity,
size: 0,
quota: quota,
guard: guard,
elements: make(map[string]*list.Element),
onEvict: nil,
cache: list.New(),
}
}
// SetOnEvict set the function called on each eviction.
func (l *SimpleLRUCache) SetOnEvict(onEvict func(Key, Value)) {
l.onEvict = onEvict
}
// Get tries to find the corresponding value according to the given key.
func (l *SimpleLRUCache) Get(key Key) (value Value, ok bool) {
element, exists := l.elements[string(key.Hash())]
if !exists {
return nil, false
}
l.cache.MoveToFront(element)
return element.Value.(*cacheEntry).value, true
}
// Put puts the (key, value) pair into the LRU Cache.
func (l *SimpleLRUCache) Put(key Key, value Value) {
hash := string(key.Hash())
element, exists := l.elements[hash]
if exists {
element.Value.(*cacheEntry).value = value
l.cache.MoveToFront(element)
return
}
newCacheEntry := &cacheEntry{
key: key,
value: value,
}
element = l.cache.PushFront(newCacheEntry)
l.elements[hash] = element
l.size++
// Getting used memory is expensive and can be avoided by setting quota to 0.
if l.quota == 0 {
if l.size > l.capacity {
lru := l.cache.Back()
l.cache.Remove(lru)
if l.onEvict != nil {
l.onEvict(lru.Value.(*cacheEntry).key, lru.Value.(*cacheEntry).value)
}
delete(l.elements, string(lru.Value.(*cacheEntry).key.Hash()))
l.size--
}
return
}
memUsed, err := memory.InstanceMemUsed()
if err != nil {
l.DeleteAll()
return
}
for memUsed > uint64(float64(l.quota)*(1.0-l.guard)) || l.size > l.capacity {
lru := l.cache.Back()
if lru == nil {
break
}
if l.onEvict != nil {
l.onEvict(lru.Value.(*cacheEntry).key, lru.Value.(*cacheEntry).value)
}
l.cache.Remove(lru)
delete(l.elements, string(lru.Value.(*cacheEntry).key.Hash()))
l.size--
if memUsed > uint64(float64(l.quota)*(1.0-l.guard)) {
memUsed, err = memory.InstanceMemUsed()
if err != nil {
l.DeleteAll()
return
}
}
}
}
// Delete deletes the key-value pair from the LRU Cache.
func (l *SimpleLRUCache) Delete(key Key) {
k := string(key.Hash())
element := l.elements[k]
if element == nil {
return
}
l.cache.Remove(element)
delete(l.elements, k)
l.size--
}
// DeleteAll deletes all elements from the LRU Cache.
func (l *SimpleLRUCache) DeleteAll() {
for lru := l.cache.Back(); lru != nil; lru = l.cache.Back() {
l.cache.Remove(lru)
delete(l.elements, string(lru.Value.(*cacheEntry).key.Hash()))
l.size--
}
}
// Size gets the current cache size.
func (l *SimpleLRUCache) Size() int {
return int(l.size)
}
// Values return all values in cache.
func (l *SimpleLRUCache) Values() []Value {
values := make([]Value, 0, l.cache.Len())
for ele := l.cache.Front(); ele != nil; ele = ele.Next() {
value := ele.Value.(*cacheEntry).value
values = append(values, value)
}
return values
}
// Keys return all keys in cache.
func (l *SimpleLRUCache) Keys() []Key {
keys := make([]Key, 0, l.cache.Len())
for ele := l.cache.Front(); ele != nil; ele = ele.Next() {
key := ele.Value.(*cacheEntry).key
keys = append(keys, key)
}
return keys
}
// SetCapacity sets capacity of the cache.
func (l *SimpleLRUCache) SetCapacity(capacity uint) error {
if capacity < 1 {
return errors.New("capacity of lru cache should be at least 1")
}
l.capacity = capacity
for l.size > l.capacity {
lru := l.cache.Back()
l.cache.Remove(lru)
delete(l.elements, string(lru.Value.(*cacheEntry).key.Hash()))
l.size--
}
return nil
}
// RemoveOldest removes the oldest element from the cache.
func (l *SimpleLRUCache) RemoveOldest() (key Key, value Value, ok bool) {
if l.size > 0 {
ele := l.cache.Back()
l.cache.Remove(ele)
delete(l.elements, string(ele.Value.(*cacheEntry).key.Hash()))
l.size--
return ele.Value.(*cacheEntry).key, ele.Value.(*cacheEntry).value, true
}
return nil, nil, false
}
// Copyright 2024 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package logutil
import (
"github.com/pingcap/errors"
"github.com/pingcap/log"
"go.uber.org/zap"
)
func newGeneralLogger(cfg *LogConfig) (*zap.Logger, *log.ZapProperties, error) {
// create the general logger
sqLogger, prop, err := log.InitLogger(newGeneralLogConfig(cfg))
if err != nil {
return nil, nil, errors.Trace(err)
}
return sqLogger, prop, nil
}
func newGeneralLogConfig(cfg *LogConfig) *log.Config {
// copy the global log config to general log config
// if the filename of general log config is empty, general log will behave the same as global log.
sqConfig := cfg.Config
// level of the global log config doesn't affect the general logger which determines whether to
// log by execution duration.
sqConfig.Level = LogConfig{}.Level
if len(cfg.GeneralLogFile) != 0 {
sqConfig.File = cfg.File
sqConfig.File.Filename = cfg.GeneralLogFile
}
return &sqConfig
}
// Copyright 2019 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package logutil
import (
"bytes"
"encoding/hex"
"fmt"
"io"
"reflect"
"strings"
"github.com/golang/protobuf/proto"
)
// Hex defines a fmt.Stringer for proto.Message.
// We can't define the String() method on proto.Message, but we can wrap it.
func Hex(msg proto.Message) fmt.Stringer {
return hexStringer{msg}
}
type hexStringer struct {
proto.Message
}
func (h hexStringer) String() string {
val := reflect.ValueOf(h.Message)
var w bytes.Buffer
prettyPrint(&w, val)
return w.String()
}
func prettyPrint(w io.Writer, val reflect.Value) {
tp := val.Type()
switch val.Kind() {
case reflect.Slice:
elemType := tp.Elem()
if elemType.Kind() == reflect.Uint8 {
fmt.Fprintf(w, "%s", hex.EncodeToString(val.Bytes()))
} else {
fmt.Fprintf(w, "%s", val.Interface())
}
case reflect.Struct:
fmt.Fprintf(w, "{")
for i := range val.NumField() {
fv := val.Field(i)
ft := tp.Field(i)
if strings.HasPrefix(ft.Name, "XXX") {
continue
}
if i != 0 {
fmt.Fprintf(w, " ")
}
fmt.Fprintf(w, "%s:", ft.Name)
prettyPrint(w, fv)
}
fmt.Fprintf(w, "}")
case reflect.Ptr:
if val.IsNil() {
fmt.Fprintf(w, "%v", val.Interface())
} else {
prettyPrint(w, reflect.Indirect(val))
}
default:
fmt.Fprintf(w, "%v", val.Interface())
}
}
// Copyright 2017 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package logutil
import (
"context"
"encoding/json"
"fmt"
"os"
"runtime/trace"
"sync"
"time"
gzap "github.com/grpc-ecosystem/go-grpc-middleware/logging/zap"
"github.com/opentracing/opentracing-go"
tlog "github.com/opentracing/opentracing-go/log"
"github.com/pingcap/errors"
"github.com/pingcap/log"
"github.com/pingcap/tidb/pkg/util/tracing"
"github.com/tikv/client-go/v2/tikv"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
"golang.org/x/net/http/httpproxy"
)
const (
// DefaultLogMaxSize is the default size of log files.
DefaultLogMaxSize = 300 // MB
// DefaultLogFormat is the default format of the log.
DefaultLogFormat = "text"
// DefaultSlowThreshold is the default slow log threshold in millisecond.
DefaultSlowThreshold = 300
// DefaultSlowTxnThreshold is the default slow txn log threshold in ms.
DefaultSlowTxnThreshold = 0
// DefaultQueryLogMaxLen is the default max length of the query in the log.
DefaultQueryLogMaxLen = 4096
// DefaultRecordPlanInSlowLog is the default value for whether enable log query plan in the slow log.
DefaultRecordPlanInSlowLog = 1
// DefaultTiDBEnableSlowLog enables TiDB to log slow queries.
DefaultTiDBEnableSlowLog = true
)
const (
// LogFieldCategory is the field name for log category
LogFieldCategory = "category"
// LogFieldConn is the field name for connection id in log
LogFieldConn = "conn"
// LogFieldSessionAlias is the field name for session_alias in log
LogFieldSessionAlias = "session_alias"
// jsonLogFormat is the json format of the log.
jsonLogFormat = "json"
)
// EmptyFileLogConfig is an empty FileLogConfig.
var EmptyFileLogConfig = FileLogConfig{}
// FileLogConfig serializes file log related config in toml/json.
type FileLogConfig struct {
log.FileLogConfig
}
// NewFileLogConfig creates a FileLogConfig.
func NewFileLogConfig(maxSize uint) FileLogConfig {
return FileLogConfig{FileLogConfig: log.FileLogConfig{
MaxSize: int(maxSize),
},
}
}
// LogConfig serializes log related config in toml/json.
type LogConfig struct {
log.Config
// SlowQueryFile filename, default to File log config on empty.
SlowQueryFile string
// GeneralLogFile filenanme, default to File log config on empty.
GeneralLogFile string
}
// NewLogConfig creates a LogConfig.
func NewLogConfig(level, format, slowQueryFile string, generalLogFile string, fileCfg FileLogConfig, disableTimestamp bool, opts ...func(*log.Config)) *LogConfig {
c := &LogConfig{
Config: log.Config{
Level: level,
Format: format,
DisableTimestamp: disableTimestamp,
File: fileCfg.FileLogConfig,
},
SlowQueryFile: slowQueryFile,
GeneralLogFile: generalLogFile,
}
for _, opt := range opts {
opt(&c.Config)
}
return c
}
const (
// SlowLogTimeFormat is the time format for slow log.
SlowLogTimeFormat = time.RFC3339Nano
// OldSlowLogTimeFormat is the first version of the the time format for slow log, This is use for compatibility.
OldSlowLogTimeFormat = "2006-01-02-15:04:05.999999999 -0700"
// GRPCDebugEnvName is the environment variable name for GRPC_DEBUG.
GRPCDebugEnvName = "GRPC_DEBUG"
)
// SlowQueryLogger is used to log slow query, InitLogger will modify it according to config file.
var SlowQueryLogger = log.L()
// GeneralLogger is used to log general log, InitLogger will modify it according to config file.
var GeneralLogger = log.L()
// this logger will always output error verbose regardless of the log config.
var errVerboseLogger = log.L()
// InitLogger initializes a logger with cfg.
func InitLogger(cfg *LogConfig, opts ...zap.Option) error {
opts = append(opts, zap.AddStacktrace(zapcore.FatalLevel))
gl, props, err := log.InitLogger(&cfg.Config, opts...)
if err != nil {
return errors.Trace(err)
}
log.ReplaceGlobals(gl, props)
// pingcap/log doesn't support DisableErrorVerbose for json format log.
if cfg.Config.Format == jsonLogFormat || !cfg.Config.DisableErrorVerbose {
errVerboseLogger = gl
} else {
newLogCfg := cfg.Config
newLogCfg.DisableErrorVerbose = false
logger, _, err := log.InitLoggerWithWriteSyncer(&newLogCfg, props.Syncer, props.ErrSyncer, opts...)
if err != nil {
return errors.Trace(err)
}
errVerboseLogger = logger
}
// init dedicated logger for slow query log,
// we should use same writeSyncer when filenames are equal.
if cfg.SlowQueryFile != "" && cfg.SlowQueryFile != cfg.File.Filename {
SlowQueryLogger, _, err = newSlowQueryLogger(cfg)
if err != nil {
return errors.Trace(err)
}
} else {
SlowQueryLogger = newSlowQueryLoggerFromZapLogger(gl, props)
}
// init dedicated logger for general log,
// we should use same writeSyncer when filenames are equal.
if cfg.GeneralLogFile != "" && cfg.GeneralLogFile != cfg.File.Filename {
GeneralLogger, _, err = newGeneralLogger(cfg)
if err != nil {
return errors.Trace(err)
}
} else {
GeneralLogger = gl
}
initGRPCLogger(gl)
tikv.SetLogContextKey(CtxLogKey)
return nil
}
func initGRPCLogger(gl *zap.Logger) {
level := zapcore.ErrorLevel
verbosity := 0
if len(os.Getenv(GRPCDebugEnvName)) > 0 {
verbosity = 999
level = zapcore.DebugLevel
}
newgl := gl.WithOptions(zap.WrapCore(func(core zapcore.Core) zapcore.Core {
oldcore, ok := core.(*log.TextIOCore)
if !ok {
return oldcore
}
newcore := oldcore.Clone()
leveler := zap.NewAtomicLevel()
leveler.SetLevel(level)
newcore.LevelEnabler = leveler
return newcore
}))
gzap.ReplaceGrpcLoggerV2WithVerbosity(newgl, verbosity)
}
// ReplaceLogger replace global logger instance with given log config.
func ReplaceLogger(cfg *LogConfig, opts ...zap.Option) error {
opts = append(opts, zap.AddStacktrace(zapcore.FatalLevel))
gl, props, err := log.InitLogger(&cfg.Config, opts...)
if err != nil {
return errors.Trace(err)
}
log.ReplaceGlobals(gl, props)
cfgJSON, err := json.Marshal(&cfg.Config)
if err != nil {
return errors.Trace(err)
}
SlowQueryLogger, _, err = newSlowQueryLogger(cfg)
if err != nil {
return errors.Trace(err)
}
GeneralLogger, _, err = newGeneralLogger(cfg)
if err != nil {
return errors.Trace(err)
}
log.S().Infof("replaced global logger with config: %s", string(cfgJSON))
return nil
}
// SetLevel sets the zap logger's level.
func SetLevel(level string) error {
l := zap.NewAtomicLevel()
if err := l.UnmarshalText([]byte(level)); err != nil {
return errors.Trace(err)
}
log.SetLevel(l.Level())
return nil
}
type ctxLogKeyType struct{}
// CtxLogKey indicates the context key for logger
// public for test usage.
var CtxLogKey = ctxLogKeyType{}
// Logger gets a contextual logger from current context.
// contextual logger will output common fields from context.
func Logger(ctx context.Context) *zap.Logger {
if ctxlogger, ok := ctx.Value(CtxLogKey).(*zap.Logger); ok {
return ctxlogger
}
return log.L()
}
// BgLogger is alias of `logutil.BgLogger()`. It's initialized in tidb-server's
// main function. Don't use it in `init` or equivalent functions otherwise it
// will print to stdout.
func BgLogger() *zap.Logger {
return log.L().With()
}
// ErrVerboseLogger returns a logger that always output error verbose regardless
// of the log config.
// error verbose is disabled on default, but without stack it's harder to investigate
// some issues, such as in DXF the error mostly happen in business logic, the
// error stack is very deep, we want to log the stack to help us investigate.
// Note: if stack is not that needed to investigate, use normal logger instead.
func ErrVerboseLogger() *zap.Logger {
return errVerboseLogger
}
// LoggerWithTraceInfo attaches fields from trace info to logger
func LoggerWithTraceInfo(logger *zap.Logger, info *tracing.TraceInfo) *zap.Logger {
if logger == nil {
logger = log.L()
}
if fields := fieldsFromTraceInfo(info); len(fields) > 0 {
logger = logger.With(fields...)
}
return logger
}
// WithConnID attaches connId to context.
func WithConnID(ctx context.Context, connID uint64) context.Context {
return WithFields(ctx, zap.Uint64(LogFieldConn, connID))
}
// WithSessionAlias attaches session_alias to context
func WithSessionAlias(ctx context.Context, alias string) context.Context {
return WithFields(ctx, zap.String(LogFieldSessionAlias, alias))
}
// WithCategory attaches category to context.
func WithCategory(ctx context.Context, category string) context.Context {
return WithFields(ctx, zap.String(LogFieldCategory, category))
}
// WithTraceFields attaches trace fields to context
func WithTraceFields(ctx context.Context, info *tracing.TraceInfo) context.Context {
if info == nil {
return WithFields(ctx)
}
return WithFields(ctx,
zap.Uint64(LogFieldConn, info.ConnectionID),
zap.String(LogFieldSessionAlias, info.SessionAlias),
)
}
func fieldsFromTraceInfo(info *tracing.TraceInfo) []zap.Field {
if info == nil {
return nil
}
fields := make([]zap.Field, 0, 2)
if info.ConnectionID != 0 {
fields = append(fields, zap.Uint64(LogFieldConn, info.ConnectionID))
}
if info.SessionAlias != "" {
fields = append(fields, zap.String(LogFieldSessionAlias, info.SessionAlias))
}
return fields
}
// WithTraceLogger attaches trace identifier to context
func WithTraceLogger(ctx context.Context, info *tracing.TraceInfo) context.Context {
var logger *zap.Logger
if ctxLogger, ok := ctx.Value(CtxLogKey).(*zap.Logger); ok {
logger = ctxLogger
} else {
logger = log.L()
}
return context.WithValue(ctx, CtxLogKey, wrapTraceLogger(ctx, info, logger))
}
func wrapTraceLogger(ctx context.Context, info *tracing.TraceInfo, logger *zap.Logger) *zap.Logger {
return logger.WithOptions(zap.WrapCore(func(core zapcore.Core) zapcore.Core {
tl := &traceLog{ctx: ctx}
// cfg.Format == "", never return error
enc, _ := log.NewTextEncoder(&log.Config{})
traceCore := log.NewTextCore(enc, tl, tl)
if fields := fieldsFromTraceInfo(info); len(fields) > 0 {
traceCore = traceCore.With(fields)
}
return zapcore.NewTee(traceCore, core)
}))
}
type traceLog struct {
ctx context.Context
}
func (*traceLog) Enabled(_ zapcore.Level) bool {
return true
}
func (t *traceLog) Write(p []byte) (n int, err error) {
trace.Log(t.ctx, "log", string(p))
return len(p), nil
}
func (*traceLog) Sync() error {
return nil
}
// WithKeyValue attaches key/value to context.
func WithKeyValue(ctx context.Context, key, value string) context.Context {
return WithFields(ctx, zap.String(key, value))
}
// WithFields attaches key/value to context.
func WithFields(ctx context.Context, fields ...zap.Field) context.Context {
var logger *zap.Logger
if ctxLogger, ok := ctx.Value(CtxLogKey).(*zap.Logger); ok {
logger = ctxLogger
} else {
logger = log.L()
}
if len(fields) > 0 {
logger = logger.With(fields...)
}
return context.WithValue(ctx, CtxLogKey, logger)
}
// WithLogger attaches a logger to context.
func WithLogger(ctx context.Context, logger *zap.Logger) context.Context {
if logger == nil {
logger = log.L()
}
return context.WithValue(ctx, CtxLogKey, logger)
}
// TraceEventKey presents the TraceEventKey in span log.
const TraceEventKey = "event"
// Event records event in current tracing span.
func Event(ctx context.Context, event string) {
if span := opentracing.SpanFromContext(ctx); span != nil && span.Tracer() != nil {
span.LogFields(tlog.String(TraceEventKey, event))
}
}
// Eventf records event in current tracing span with format support.
func Eventf(ctx context.Context, format string, args ...any) {
if span := opentracing.SpanFromContext(ctx); span != nil && span.Tracer() != nil {
span.LogFields(tlog.String(TraceEventKey, fmt.Sprintf(format, args...)))
}
}
// SetTag sets tag kv-pair in current tracing span
func SetTag(ctx context.Context, key string, value any) {
if span := opentracing.SpanFromContext(ctx); span != nil && span.Tracer() != nil {
span.SetTag(key, value)
}
}
// LogEnvVariables logs related environment variables.
func LogEnvVariables() {
// log http proxy settings, it will be used in gRPC connection by default
fields := proxyFields()
if len(fields) > 0 {
log.Info("using proxy config", fields...)
}
}
func proxyFields() []zap.Field {
proxyCfg := httpproxy.FromEnvironment()
fields := make([]zap.Field, 0, 3)
if proxyCfg.HTTPProxy != "" {
fields = append(fields, zap.String("http_proxy", proxyCfg.HTTPProxy))
}
if proxyCfg.HTTPSProxy != "" {
fields = append(fields, zap.String("https_proxy", proxyCfg.HTTPSProxy))
}
if proxyCfg.NoProxy != "" {
fields = append(fields, zap.String("no_proxy", proxyCfg.NoProxy))
}
return fields
}
// SampleLoggerFactory returns a factory function that creates a sample logger.
// the logger is used to sample the log to avoid too many logs, it will only log
// the first 'first' log entries with the same level and message in 'tick' time.
// NOTE: Because we need to record the log count with the same level and message
// in this specific logger, the returned factory function will only create one logger.
// this logger support at most 4096 types of logs with the same level and message.
func SampleLoggerFactory(tick time.Duration, first int, fields ...zap.Field) func() *zap.Logger {
var (
once sync.Once
logger *zap.Logger
)
return func() *zap.Logger {
once.Do(func() {
sampleCore := zap.WrapCore(func(core zapcore.Core) zapcore.Core {
return zapcore.NewSamplerWithOptions(core, tick, first, 0)
})
logger = BgLogger().With(fields...).With(zap.String("sampled", "")).WithOptions(sampleCore)
})
return logger
}
}
// SampleErrVerboseLoggerFactory returns a factory function that creates a sample logger with error verbose logging.
// It works similarly to SampleLoggerFactory but ensures that error details are always logged,
// regardless of the logging configuration.
func SampleErrVerboseLoggerFactory(tick time.Duration, first int, fields ...zap.Field) func() *zap.Logger {
var (
once sync.Once
logger *zap.Logger
)
return func() *zap.Logger {
once.Do(func() {
sampleCore := zap.WrapCore(func(core zapcore.Core) zapcore.Core {
return zapcore.NewSamplerWithOptions(core, tick, first, 0)
})
logger = ErrVerboseLogger().With(fields...).With(zap.String("sampled", "")).WithOptions(sampleCore)
})
return logger
}
}
// Copyright 2021 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package logutil
import (
"fmt"
"time"
"github.com/pingcap/errors"
"github.com/pingcap/log"
"go.uber.org/zap"
"go.uber.org/zap/buffer"
"go.uber.org/zap/zapcore"
)
var _pool = buffer.NewPool()
func newSlowQueryLogger(cfg *LogConfig) (*zap.Logger, *log.ZapProperties, error) {
// create the slow query logger
sqLogger, prop, err := log.InitLogger(newSlowQueryLogConfig(cfg))
if err != nil {
return nil, nil, errors.Trace(err)
}
// replace 2018-12-19-unified-log-format text encoder with slow log encoder
newCore := log.NewTextCore(&slowLogEncoder{}, prop.Syncer, prop.Level)
sqLogger = sqLogger.WithOptions(zap.WrapCore(func(zapcore.Core) zapcore.Core {
return newCore
}))
prop.Core = newCore
return sqLogger, prop, nil
}
func newSlowQueryLoggerFromZapLogger(l *zap.Logger, p *log.ZapProperties) *zap.Logger {
newCore := log.NewTextCore(&slowLogEncoder{}, p.Syncer, p.Level)
sqLogger := l.WithOptions(zap.WrapCore(func(zapcore.Core) zapcore.Core {
return newCore
}))
return sqLogger
}
func newSlowQueryLogConfig(cfg *LogConfig) *log.Config {
// copy the global log config to slow log config
// if the filename of slow log config is empty, slow log will behave the same as global log.
sqConfig := cfg.Config
// level of the global log config doesn't affect the slow query logger which determines whether to
// log by execution duration.
sqConfig.Level = LogConfig{}.Level
if len(cfg.SlowQueryFile) != 0 {
sqConfig.File = cfg.File
sqConfig.File.Filename = cfg.SlowQueryFile
}
return &sqConfig
}
type slowLogEncoder struct{}
func (*slowLogEncoder) EncodeEntry(entry zapcore.Entry, _ []zapcore.Field) (*buffer.Buffer, error) {
b := _pool.Get()
fmt.Fprintf(b, "# Time: %s\n", entry.Time.Format(SlowLogTimeFormat))
fmt.Fprintf(b, "%s\n", entry.Message)
return b, nil
}
func (e *slowLogEncoder) Clone() zapcore.Encoder { return e }
func (*slowLogEncoder) AddArray(string, zapcore.ArrayMarshaler) error { return nil }
func (*slowLogEncoder) AddObject(string, zapcore.ObjectMarshaler) error { return nil }
func (*slowLogEncoder) AddBinary(string, []byte) {}
func (*slowLogEncoder) AddByteString(string, []byte) {}
func (*slowLogEncoder) AddBool(string, bool) {}
func (*slowLogEncoder) AddComplex128(string, complex128) {}
func (*slowLogEncoder) AddComplex64(string, complex64) {}
func (*slowLogEncoder) AddDuration(string, time.Duration) {}
func (*slowLogEncoder) AddFloat64(string, float64) {}
func (*slowLogEncoder) AddFloat32(string, float32) {}
func (*slowLogEncoder) AddInt(string, int) {}
func (*slowLogEncoder) AddInt64(string, int64) {}
func (*slowLogEncoder) AddInt32(string, int32) {}
func (*slowLogEncoder) AddInt16(string, int16) {}
func (*slowLogEncoder) AddInt8(string, int8) {}
func (*slowLogEncoder) AddString(string, string) {}
func (*slowLogEncoder) AddTime(string, time.Time) {}
func (*slowLogEncoder) AddUint(string, uint) {}
func (*slowLogEncoder) AddUint64(string, uint64) {}
func (*slowLogEncoder) AddUint32(string, uint32) {}
func (*slowLogEncoder) AddUint16(string, uint16) {}
func (*slowLogEncoder) AddUint8(string, uint8) {}
func (*slowLogEncoder) AddUintptr(string, uintptr) {}
func (*slowLogEncoder) AddReflected(string, any) error { return nil }
func (*slowLogEncoder) OpenNamespace(string) {}
// Copyright 2022 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package mathutil
// ExponentialMovingAverage is an exponential moving average measurement implementation. It is not thread-safe.
type ExponentialMovingAverage struct {
value float64
sum float64
factor float64
warmupWindow int
count int
}
// NewExponentialMovingAverage will create a new ExponentialMovingAverage.
func NewExponentialMovingAverage(
factor float64,
warmupWindow int,
) *ExponentialMovingAverage {
if factor >= 1 || factor <= 0 {
panic("factor must be (0, 1)")
}
return &ExponentialMovingAverage{
factor: factor,
warmupWindow: warmupWindow,
}
}
// Add a single sample and update the internal state.
func (m *ExponentialMovingAverage) Add(value float64) {
if m.count < m.warmupWindow {
m.count++
m.sum += value
m.value = m.sum / float64(m.count)
} else {
m.value = m.value*(1-m.factor) + value*m.factor
}
}
// Get the current value.
func (m *ExponentialMovingAverage) Get() float64 {
return m.value
}
// Copyright 2019 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package mathutil
import (
"cmp"
"math"
"github.com/pingcap/tidb/pkg/util/intest"
)
// Architecture and/or implementation specific integer limits and bit widths.
const (
MaxInt = 1<<(IntBits-1) - 1
MinInt = -MaxInt - 1
MaxUint = 1<<IntBits - 1
IntBits = 1 << (^uint(0)>>32&1 + ^uint(0)>>16&1 + ^uint(0)>>8&1 + 3)
)
// Abs implement the abs function according to http://cavaliercoder.com/blog/optimized-abs-for-int64-in-go.html
func Abs(n int64) int64 {
y := n >> 63
return (n ^ y) - y
}
// uintSizeTable is used as a table to do comparison to get uint length is faster than doing loop on division with 10
var uintSizeTable = [21]uint64{
0, // redundant 0 here, so to make function StrLenOfUint64Fast to count from 1 and return i directly
9, 99, 999, 9999, 99999,
999999, 9999999, 99999999, 999999999, 9999999999,
99999999999, 999999999999, 9999999999999, 99999999999999, 999999999999999,
9999999999999999, 99999999999999999, 999999999999999999, 9999999999999999999,
math.MaxUint64,
} // math.MaxUint64 is 18446744073709551615 and it has 20 digits
// StrLenOfUint64Fast efficiently calculate the string character lengths of an uint64 as input
func StrLenOfUint64Fast(x uint64) int {
for i := 1; ; i++ {
if x <= uintSizeTable[i] {
return i
}
}
}
// StrLenOfInt64Fast efficiently calculate the string character lengths of an int64 as input
func StrLenOfInt64Fast(x int64) int {
size := 0
if x < 0 {
size = 1 // add "-" sign on the length count
}
return size + StrLenOfUint64Fast(uint64(Abs(x)))
}
// IsFinite reports whether f is neither NaN nor an infinity.
func IsFinite(f float64) bool {
return !math.IsNaN(f - f)
}
// Clamp restrict a value to a certain interval.
func Clamp[T cmp.Ordered](n, minv, maxv T) T {
if n >= maxv {
return maxv
} else if n <= minv {
return minv
}
return n
}
// NextPowerOfTwo returns the smallest power of two greater than or equal to `i`
// Caller should guarantee that i > 0 and the return value is not overflow.
func NextPowerOfTwo(i int64) int64 {
if i&(i-1) == 0 {
return i
}
i *= 2
for i&(i-1) != 0 {
i &= i - 1
}
return i
}
// Divide2Batches divides 'total' into 'batches', and returns the size of each batch.
// Σ(batchSizes) = 'total'. if 'total' < 'batches', we return 'total' batches with size 1.
// 'total' is allowed to be 0.
func Divide2Batches(total, batches int) []int {
result := make([]int, 0, batches)
quotient := total / batches
remainder := total % batches
for total > 0 {
size := quotient
if remainder > 0 {
size++
remainder--
}
intest.Assert(size > 0, "size should be positive")
result = append(result, size)
total -= size
}
return result
}
// Copyright 2020 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package mathutil
import (
"sync"
"time"
)
const maxRandValue = 0x3FFFFFFF
// MysqlRng is random number generator and this implementation is ported from MySQL.
// See https://github.com/tikv/tikv/pull/6117#issuecomment-562489078.
type MysqlRng struct {
mu *sync.Mutex
seed1 uint32
seed2 uint32
}
// NewWithSeed create a rng with random seed.
func NewWithSeed(seed int64) *MysqlRng {
seed1 := uint32(seed*0x10001+55555555) % maxRandValue
seed2 := uint32(seed*0x10000001) % maxRandValue
return &MysqlRng{
seed1: seed1,
seed2: seed2,
mu: &sync.Mutex{},
}
}
// NewWithTime create a rng with time stamp.
func NewWithTime() *MysqlRng {
return NewWithSeed(time.Now().UnixNano())
}
// Gen will generate random number.
func (rng *MysqlRng) Gen() float64 {
rng.mu.Lock()
defer rng.mu.Unlock()
rng.seed1 = (rng.seed1*3 + rng.seed2) % maxRandValue
rng.seed2 = (rng.seed1 + rng.seed2 + 33) % maxRandValue
return float64(rng.seed1) / float64(maxRandValue)
}
// SetSeed1 is a interface to set seed1
func (rng *MysqlRng) SetSeed1(seed uint32) {
rng.mu.Lock()
defer rng.mu.Unlock()
rng.seed1 = seed
}
// SetSeed2 is a interface to set seed2
func (rng *MysqlRng) SetSeed2(seed uint32) {
rng.mu.Lock()
defer rng.mu.Unlock()
rng.seed2 = seed
}
// GetSeed1 is an interface to get seed1. It's only used for getting session states.
func (rng *MysqlRng) GetSeed1() uint32 {
rng.mu.Lock()
defer rng.mu.Unlock()
return rng.seed1
}
// GetSeed2 is an interface to get seed2. It's only used for getting session states.
func (rng *MysqlRng) GetSeed2() uint32 {
rng.mu.Lock()
defer rng.mu.Unlock()
return rng.seed2
}
// Copyright 2018 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package memory
import (
"sync"
"sync/atomic"
"github.com/pingcap/tidb/pkg/errno"
"github.com/pingcap/tidb/pkg/util/dbterror"
"github.com/pingcap/tidb/pkg/util/logutil"
"github.com/pingcap/tidb/pkg/util/sqlkiller"
"go.uber.org/zap"
)
// ActionOnExceed is the action taken when memory usage exceeds memory quota.
// NOTE: All the implementors should be thread-safe.
type ActionOnExceed interface {
// Action will be called when memory usage exceeds memory quota by the
// corresponding Tracker.
Action(t *Tracker)
// SetFallback sets a fallback action which will be triggered if itself has
// already been triggered.
SetFallback(a ActionOnExceed)
// GetFallback get the fallback action of the Action.
GetFallback() ActionOnExceed
// GetPriority get the priority of the Action.
GetPriority() int64
// SetFinished sets the finished state of the Action.
SetFinished()
// IsFinished returns the finished state of the Action.
IsFinished() bool
}
var _ ActionOnExceed = &actionWithPriority{}
type actionWithPriority struct {
ActionOnExceed
priority int64
}
// NewActionWithPriority wraps the action with a new priority
func NewActionWithPriority(action ActionOnExceed, priority int64) *actionWithPriority {
return &actionWithPriority{
action,
priority,
}
}
func (a *actionWithPriority) GetPriority() int64 {
return a.priority
}
// BaseOOMAction manages the fallback action for all Action.
type BaseOOMAction struct {
fallbackAction ActionOnExceed
finished int32
}
// SetFallback sets a fallback action which will be triggered if itself has
// already been triggered.
func (b *BaseOOMAction) SetFallback(a ActionOnExceed) {
b.fallbackAction = a
}
// SetFinished sets the finished state of the Action.
func (b *BaseOOMAction) SetFinished() {
atomic.StoreInt32(&b.finished, 1)
}
// IsFinished returns the finished state of the Action.
func (b *BaseOOMAction) IsFinished() bool {
return atomic.LoadInt32(&b.finished) == 1
}
// GetFallback get the fallback action and remove finished fallback.
func (b *BaseOOMAction) GetFallback() ActionOnExceed {
for b.fallbackAction != nil && b.fallbackAction.IsFinished() {
b.SetFallback(b.fallbackAction.GetFallback())
}
return b.fallbackAction
}
// TriggerFallBackAction triggers the fallback action of the current action
func (b *BaseOOMAction) TriggerFallBackAction(tracker *Tracker) {
if fallback := b.GetFallback(); fallback != nil {
fallback.Action(tracker)
}
}
// Default OOM Action priority.
const (
DefPanicPriority = iota
DefLogPriority
DefSpillPriority
// DefCursorFetchSpillPriority is higher than normal disk spill, because it can release much more memory in the future.
// And the performance impaction of it is less than other disk-spill action, because it's write-only in execution stage.
DefCursorFetchSpillPriority
DefRateLimitPriority
)
// LogOnExceed logs a warning only once when memory usage exceeds memory quota.
type LogOnExceed struct {
logHook func(uint64)
BaseOOMAction
ConnID uint64
mutex sync.Mutex // For synchronization.
acted bool
}
// SetLogHook sets a hook for LogOnExceed.
func (a *LogOnExceed) SetLogHook(hook func(uint64)) {
a.logHook = hook
}
// Action logs a warning only once when memory usage exceeds memory quota.
func (a *LogOnExceed) Action(t *Tracker) {
a.mutex.Lock()
defer a.mutex.Unlock()
if !a.acted {
a.acted = true
if a.logHook == nil {
logutil.BgLogger().Warn("memory exceeds quota",
zap.Error(errMemExceedThreshold.GenWithStackByArgs(t.label, t.BytesConsumed(), t.GetBytesLimit(), t.String())))
return
}
a.logHook(a.ConnID)
}
}
// GetPriority get the priority of the Action
func (*LogOnExceed) GetPriority() int64 {
return DefLogPriority
}
// PanicOnExceed panics when memory usage exceeds memory quota.
type PanicOnExceed struct {
Killer *sqlkiller.SQLKiller
logHook func(uint64)
BaseOOMAction
ConnID uint64
mutex sync.Mutex // For synchronization.
acted bool
}
// SetLogHook sets a hook for PanicOnExceed.
func (a *PanicOnExceed) SetLogHook(hook func(uint64)) {
a.logHook = hook
}
// Action panics when memory usage exceeds memory quota.
func (a *PanicOnExceed) Action(t *Tracker) {
a.mutex.Lock()
defer func() {
a.mutex.Unlock()
}()
if !a.acted {
if a.logHook == nil {
logutil.BgLogger().Warn("memory exceeds quota",
zap.Uint64("conn", t.SessionID.Load()), zap.Error(errMemExceedThreshold.GenWithStackByArgs(t.label, t.BytesConsumed(), t.GetBytesLimit(), t.String())))
} else {
a.logHook(a.ConnID)
}
}
a.acted = true
a.Killer.SendKillSignal(sqlkiller.QueryMemoryExceeded)
if err := a.Killer.HandleSignal(); err != nil {
panic(err)
}
}
// GetPriority get the priority of the Action
func (*PanicOnExceed) GetPriority() int64 {
return DefPanicPriority
}
var (
errMemExceedThreshold = dbterror.ClassUtil.NewStd(errno.ErrMemExceedThreshold)
)
// Copyright 2025 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package memory
import (
"errors"
"fmt"
"sync"
"sync/atomic"
"time"
"go.uber.org/zap"
)
// ArbitrateResult represents the results of the arbitration process
type ArbitrateResult int32
const (
// ArbitrateOk indicates that the arbitration is successful.
ArbitrateOk ArbitrateResult = iota
// ArbitrateFail indicates that the arbitration is failed
ArbitrateFail
)
// SoftLimitMode represents the mode of soft limit for the mem-arbitrator
type SoftLimitMode int32
const (
// SoftLimitModeDisable indicates that soft-limit is same as the threshold of oom risk
SoftLimitModeDisable SoftLimitMode = iota
// SoftLimitModeSpecified indicates that the soft-limit is a specified num of bytes or rate of the limit
SoftLimitModeSpecified
// SoftLimitModeAuto indicates that the soft-limit is auto calculated by the mem-arbitrator
SoftLimitModeAuto
)
const (
// ArbitratorSoftLimitModDisableName is the name of the soft limit mode default
ArbitratorSoftLimitModDisableName = "0"
// ArbitratorSoftLimitModeAutoName is the name of the soft limit mode auto
ArbitratorSoftLimitModeAutoName = "auto"
// ArbitratorModeStandardName is the name of the standard mode
ArbitratorModeStandardName = "standard"
// ArbitratorModePriorityName is the name of the priority mode
ArbitratorModePriorityName = "priority"
// ArbitratorModeDisableName is the name of the disable mode
ArbitratorModeDisableName = "disable"
// DefMaxLimit is the default maximum limit of mem quota
DefMaxLimit int64 = 5e15
defTaskTickDur = time.Millisecond * 10
defMinHeapFreeBPS int64 = 100 * byteSizeMB
defHeapReclaimCheckDuration = time.Second * 1
defHeapReclaimCheckMaxDuration = time.Second * 5
defOOMRiskRatio = 0.95
defMemRiskRatio = 0.9
defTickDurMilli = kilo * 1
defStorePoolMediumCapDurilli = defTickDurMilli * 10
defTrackMemStatsDurMilli = kilo * 1
defMax int64 = 9e15
defServerlimitSmallLimitNum = 1000
defServerlimitMinUnitNum = 500
defServerlimitMaxUnitNum = 100
defUpdateMemConsumedTimeAlignSec = 30
defUpdateMemMagnifUtimeAlign = 30
defUpdateBufferTimeAlignSec = 60
defRedundancy = 2
defPoolReservedQuota = byteSizeMB
defAwaitFreePoolAllocAlignSize = defPoolReservedQuota + byteSizeMB
defAwaitFreePoolShardNum int64 = 256
defAwaitFreePoolShrinkDurMilli = kilo * 2
defPoolStatusShards = 128
defPoolQuotaShards = 27 // quota >= BaseQuotaUnit * 2^(max_shards - 2) will be put into the last shard
prime64 uint64 = 1099511628211
initHashKey uint64 = 14695981039346656037
defKillCancelCheckTimeout = time.Second * 20
defDigestProfileSmallMemTimeoutSec = 60 * 60 * 24 // 1 day
defDigestProfileMemTimeoutSec = 60 * 60 * 24 * 7 // 1 week
baseQuotaUnit = 4 * byteSizeKB // 4KB
)
// ArbitratorWorkMode represents the work mode of the arbitrator: Standard, Priority, Disable
type ArbitratorWorkMode int32
const (
// ArbitratorModeStandard indicates the standard mode
ArbitratorModeStandard ArbitratorWorkMode = iota
// ArbitratorModePriority indicates the priority mode
ArbitratorModePriority
// ArbitratorModeDisable indicates the mem-arbitrator is disabled
ArbitratorModeDisable
maxArbitratorMode
)
// ArbitrationPriority represents the priority of the task: Low, Medium, High
type ArbitrationPriority int32
type entryExecState int32
const (
execStateIdle entryExecState = iota
execStateRunning
execStatePrivileged
)
const (
// ArbitrationPriorityLow indicates the low priority
ArbitrationPriorityLow ArbitrationPriority = iota
// ArbitrationPriorityMedium indicates the medium priority
ArbitrationPriorityMedium
// ArbitrationPriorityHigh indicates the high priority
ArbitrationPriorityHigh
minArbitrationPriority = ArbitrationPriorityLow
maxArbitrationPriority = ArbitrationPriorityHigh + 1
maxArbitrateMode = maxArbitrationPriority + 1
// ArbitrationWaitAverse indicates the wait-averse property
ArbitrationWaitAverse = maxArbitrationPriority
)
var errArbitrateFailError = errors.New("failed to allocate resource from arbitrator")
var arbitrationPriorityNames = [maxArbitrationPriority]string{"LOW", "MEDIUM", "HIGH"}
// String returns the string representation of the ArbitrationPriority
func (p ArbitrationPriority) String() string {
return arbitrationPriorityNames[p]
}
var arbitratorWorkModeNames = []string{ArbitratorModeStandardName, ArbitratorModePriorityName, ArbitratorModeDisableName}
// String returns the string representation of the ArbitratorWorkMode
func (m ArbitratorWorkMode) String() string {
return arbitratorWorkModeNames[m]
}
func (m *MemArbitrator) taskNumByPriority(priority ArbitrationPriority) int64 {
return m.tasks.fifoByPriority[priority].size()
}
func (m *MemArbitrator) taskNumOfWaitAverse() int64 {
return m.tasks.fifoWaitAverse.size()
}
func (m *MemArbitrator) firstTaskEntry(priority ArbitrationPriority) *rootPoolEntry {
return m.tasks.fifoByPriority[priority].front()
}
func (m *MemArbitrator) removeTaskImpl(entry *rootPoolEntry) bool {
if entry.taskMu.fifo.valid() {
m.tasks.fifoTasks.remove(entry.taskMu.fifo)
entry.taskMu.fifo.reset()
m.tasks.fifoByPriority[entry.taskMu.fifoByPriority.priority].remove(entry.taskMu.fifoByPriority.wrapListElement)
entry.taskMu.fifoByPriority.reset()
if entry.taskMu.fifoWaitAverse.valid() {
m.tasks.fifoWaitAverse.remove(entry.taskMu.fifoWaitAverse)
entry.taskMu.fifoWaitAverse.reset()
}
return true
}
return false
}
// there is no need to wind up if task has been removed by cancel.
func (m *MemArbitrator) removeTask(entry *rootPoolEntry) (res bool) {
m.tasks.Lock()
res = m.removeTaskImpl(entry)
m.tasks.Unlock()
return res
}
func (m *MemArbitrator) addTask(entry *rootPoolEntry) {
m.tasks.waitingAlloc.Add(entry.request.quota) // before tasks lock
{
m.tasks.Lock()
priority := entry.ctx.memPriority
entry.taskMu.fifoByPriority.priority = priority
entry.taskMu.fifoByPriority.wrapListElement = m.tasks.fifoByPriority[priority].pushBack(entry)
if entry.ctx.waitAverse {
entry.taskMu.fifoWaitAverse = m.tasks.fifoWaitAverse.pushBack(entry)
}
entry.taskMu.fifo = m.tasks.fifoTasks.pushBack(entry)
m.tasks.Unlock()
}
}
func (m *MemArbitrator) frontTaskEntry() (entry *rootPoolEntry) {
m.tasks.Lock()
entry = m.tasks.fifoTasks.front()
m.tasks.Unlock()
return
}
func (m *MemArbitrator) extractFirstTaskEntry() (entry *rootPoolEntry) {
m.tasks.Lock()
if m.privilegedEntry != nil {
if m.privilegedEntry.taskMu.fifo.valid() {
m.tasks.fifoTasks.moveToFront(m.privilegedEntry.taskMu.fifo)
entry = m.privilegedEntry
}
}
if entry == nil {
if m.execMu.mode == ArbitratorModePriority {
for priority := maxArbitrationPriority - 1; priority >= minArbitrationPriority; priority-- {
if entry = m.firstTaskEntry(priority); entry != nil {
break
}
}
} else {
entry = m.tasks.fifoTasks.front()
}
}
m.tasks.Unlock()
return
}
type rootPoolEntry struct {
pool *ResourcePool
taskMu struct { // protected by the tasks mutex of arbitrator
fifo wrapListElement
fifoWaitAverse wrapListElement
fifoByPriority struct {
wrapListElement
priority ArbitrationPriority
}
}
// context of execution
// mutable when entry is idle and the mutex of root pool is locked
ctx struct {
atomic.Pointer[ArbitrationContext]
cancelCh <-chan struct{}
// properties hint of the entry; data race is acceptable;
memPriority ArbitrationPriority
waitAverse bool
preferPrivilege bool
}
request struct {
resultCh chan ArbitrateResult // arbitrator will send result in `windup
quota int64 // mutable for ResourcePool
}
arbitratorMu struct { // mutable for arbitrator
shard *entryMapShard
quotaShard *entryQuotaShard
underKill entryKillCancelCtx
underCancel entryKillCancelCtx
quota int64 // -1: uninitiated
destroyed bool
}
stateMu struct {
quotaToReclaim atomic.Int64
sync.Mutex
stop atomic.Bool
// execStateIdle -> execStateRunning -> execStatePrivileged -> execStateIdle
// execStateIdle -> execStateRunning -> execStateIdle
exec entryExecState
}
}
type mapUIDEntry map[uint64]*rootPoolEntry
type entryMapShard struct {
entries mapUIDEntry
sync.RWMutex
}
type entryQuotaShard struct {
entries mapUIDEntry
}
func (e *rootPoolEntry) execState() entryExecState {
return entryExecState(atomic.LoadInt32((*int32)(&e.stateMu.exec)))
}
func (e *rootPoolEntry) setExecState(s entryExecState) {
atomic.StoreInt32((*int32)(&e.stateMu.exec), int32(s))
}
func (e *rootPoolEntry) intoExecPrivileged() bool {
return atomic.CompareAndSwapInt32((*int32)(&e.stateMu.exec), int32(execStateRunning), int32(execStatePrivileged))
}
func (e *rootPoolEntry) notRunning() bool {
return e.stateMu.stop.Load() || e.execState() == execStateIdle || e.stateMu.quotaToReclaim.Load() > 0
}
type entryMap struct {
quotaShards [maxArbitrationPriority][]*entryQuotaShard // entries order by priority, quota
contextCache struct { // cache for traversing all entries concurrently
sync.Map // map[uint64]*rootPoolEntry
num atomic.Int64
}
shards []*entryMapShard
shardsMask uint64
maxQuotaShardIndex int // for quota >= `BaseQuotaUnit * 2^(maxQuotaShard - 1)`
minQuotaShardIndexToCheck int // ignore the pool with smaller quota
}
// controlled by arbitrator
func (m *entryMap) delete(entry *rootPoolEntry) {
uid := entry.pool.uid
if entry.arbitratorMu.quotaShard != nil {
delete(entry.arbitratorMu.quotaShard.entries, uid)
entry.arbitratorMu.quota = 0
entry.arbitratorMu.quotaShard = nil
}
entry.arbitratorMu.shard.delete(uid)
entry.arbitratorMu.shard = nil
if _, loaded := m.contextCache.LoadAndDelete(uid); loaded {
m.contextCache.num.Add(-1)
}
}
// controlled by arbitrator
func (m *entryMap) addQuota(entry *rootPoolEntry, delta int64) {
if delta == 0 {
return
}
uid := entry.pool.UID()
entry.arbitratorMu.quota += delta
if entry.arbitratorMu.quota == 0 { // remove
delete(entry.arbitratorMu.quotaShard.entries, uid)
entry.arbitratorMu.quotaShard = nil
return
}
newPos := getQuotaShard(entry.arbitratorMu.quota, m.maxQuotaShardIndex)
newShard := m.quotaShards[entry.ctx.memPriority][newPos]
if newShard != entry.arbitratorMu.quotaShard {
if entry.arbitratorMu.quotaShard != nil {
delete(entry.arbitratorMu.quotaShard.entries, uid)
}
entry.arbitratorMu.quotaShard = newShard
entry.arbitratorMu.quotaShard.entries[uid] = entry
}
}
func (m *entryMap) getStatusShard(key uint64) *entryMapShard {
return m.shards[shardIndexByUID(key, m.shardsMask)]
}
func (m *entryMap) getQuotaShard(priority ArbitrationPriority, quota int64) *entryQuotaShard {
return m.quotaShards[priority][getQuotaShard(quota, m.maxQuotaShardIndex)]
}
func (s *entryMapShard) get(key uint64) (e *rootPoolEntry, ok bool) {
s.RLock()
e, ok = s.entries[key]
s.RUnlock()
return
}
func (s *entryMapShard) delete(key uint64) {
s.Lock()
delete(s.entries, key)
s.Unlock()
}
func (s *entryMapShard) emplace(key uint64, tar *rootPoolEntry) (e *rootPoolEntry, ok bool) {
s.Lock()
e, found := s.entries[key]
ok = !found
if !found {
s.entries[key] = tar
e = tar
}
s.Unlock()
return
}
func (m *entryMap) emplace(pool *ResourcePool) (*rootPoolEntry, bool) {
key := pool.UID()
s := m.getStatusShard(key)
if v, ok := s.get(key); ok {
return v, false
}
tar := &rootPoolEntry{pool: pool}
tar.arbitratorMu.shard = s
tar.request.resultCh = make(chan ArbitrateResult, 1)
return s.emplace(key, tar)
}
func (m *entryMap) init(shardNum uint64, maxQuotaShard int, minQuotaForReclaim int64) {
m.shards = make([]*entryMapShard, shardNum)
m.shardsMask = shardNum - 1
m.maxQuotaShardIndex = maxQuotaShard
m.minQuotaShardIndexToCheck = getQuotaShard(minQuotaForReclaim, m.maxQuotaShardIndex)
for p := minArbitrationPriority; p < maxArbitrationPriority; p++ {
m.quotaShards[p] = make([]*entryQuotaShard, m.maxQuotaShardIndex)
for i := range m.maxQuotaShardIndex {
m.quotaShards[p][i] = &entryQuotaShard{
entries: make(mapUIDEntry),
}
}
}
for i := range shardNum {
m.shards[i] = &entryMapShard{
entries: make(mapUIDEntry),
}
}
}
// if entry is in task queue, it must have acquire the unique request lock and wait for callback
// this func only can be invoked after `removeTask`
func (e *rootPoolEntry) windUp(delta int64, r ArbitrateResult) {
e.pool.forceAddCap(delta)
e.request.resultCh <- r
}
// non thread safe: the mutex of root pool must have been locked
func (m *MemArbitrator) blockingAllocate(entry *rootPoolEntry, requestedBytes int64) ArbitrateResult {
if entry.execState() == execStateIdle {
return ArbitrateFail
}
m.prepareAlloc(entry, requestedBytes)
return m.waitAlloc(entry)
}
// non thread safe: the mutex of root pool must have been locked
func (m *MemArbitrator) prepareAlloc(entry *rootPoolEntry, requestedBytes int64) {
entry.request.quota = requestedBytes
m.addTask(entry)
m.notifer.WeakWake()
}
// non thread safe: the mutex of root pool must have been locked
func (m *MemArbitrator) waitAlloc(entry *rootPoolEntry) ArbitrateResult {
res := ArbitrateOk
select {
case res = <-entry.request.resultCh:
if res == ArbitrateFail {
atomic.AddInt64(&m.execMetrics.Task.Fail, 1)
} else {
atomic.AddInt64(&m.execMetrics.Task.Succ, 1)
}
case <-entry.ctx.cancelCh:
// 1. cancel by session
// 2. stop by the arbitrate-helper (cancel / kill by arbitrator)
res = ArbitrateFail
atomic.AddInt64(&m.execMetrics.Task.Fail, 1)
if !m.removeTask(entry) {
<-entry.request.resultCh
}
}
m.tasks.waitingAlloc.Add(-entry.request.quota)
entry.request.quota = 0
return res
}
type blockedState struct {
allocated int64
utimeSec int64
}
// PoolAllocProfile represents the profile of root pool allocation in the mem-arbitrator
type PoolAllocProfile struct {
SmallPoolLimit int64 // limit / 1000
PoolAllocUnit int64 // limit / 500
MaxPoolAllocUnit int64 // limit / 100
}
// Prevent false sharing of cache lines.
// The typical cache line size is 64 bytes on most architectures, including x86 and ARM.
// `cpu.CacheLinePad`(128-byte) will be a good option for other platforms, such as Apple Silicon.
type holder64Bytes struct{ _ [64]byte }
// MemArbitrator represents the main structure aka `mem-arbitrator`
type MemArbitrator struct {
execMu struct {
startTime time.Time // start time of each round
blockedState blockedState // blocked state during arbitration
mode ArbitratorWorkMode // work mode of each round
}
actions MemArbitratorActions // actions interfaces
controlMu struct { // control the async work process
finishCh chan struct{}
sync.Mutex
running atomic.Bool
}
debug struct{ now func() time.Time } // mock time.Now
privilegedEntry *rootPoolEntry // entry with privilege will always be satisfied first
underKill mapEntryWithMem // entries under `KILL` operation
underCancel mapEntryWithMem // entries under `CANCEL` operation
notifer Notifer // wake up the async work process
cleanupMu struct { // cleanup the state of the entry
fifoTasks wrapList[*rootPoolEntry]
sync.Mutex
}
tasks struct {
fifoByPriority [maxArbitrationPriority]wrapList[*rootPoolEntry] // tasks by priority
fifoTasks wrapList[*rootPoolEntry] // all tasks in FIFO order
fifoWaitAverse wrapList[*rootPoolEntry] // tasks with wait-averse property
waitingAlloc atomic.Int64 // total waiting allocation size
sync.Mutex
}
digestProfileCache struct {
shards []digestProfileShard
shardsMask uint64
num atomic.Int64
limit int64 // max number of digest profiles; shrink to limit/2 when num > limit;
}
entryMap entryMap // sharded hash map & ordered quota map
awaitFree struct { // await-free pool
pool *ResourcePool
budget struct { // fixed size budget shards
shards []TrackedConcurrentBudget
sizeMask uint64
}
lastQuotaUsage memPoolQuotaUsage // tracked heap memory usage & quota usage
lastShrinkUtimeMilli atomic.Int64
}
heapController heapController // monitor runtime mem stats; resolve mem issues; record mem profiles;
poolAllocStats struct { // statistics of root pool allocation
sync.RWMutex
PoolAllocProfile
mediumQuota atomic.Int64 // medium (max quota usage of root pool)
timedMap [2 + defRedundancy]struct {
sync.RWMutex
statisticsTimedMapElement
}
lastUpdateUtimeMilli atomic.Int64
}
buffer buffer // reserved buffer quota which only works under priority mode
mu struct {
sync.Mutex
_ holder64Bytes
allocated int64 // allocated mem quota
released uint64 // total released mem quota
lastGC uint64 // total released mem quota at last GC point
_ holder64Bytes
limit int64 // hard limit of mem quota which is same as the server limit
threshold struct {
risk int64 // threshold of mem risk
oomRisk int64 // threshold of oom risk
}
softLimit struct {
mode SoftLimitMode
size int64
specified struct {
size int64
ratio int64 // ratio of soft-limit to hard-limit
}
}
}
execMetrics execMetricsCounter // execution metrics
avoidance struct {
size atomic.Int64 // size of quota cannot be allocated
heapTracked struct { // tracked heap memory usage
atomic.Int64
lastUpdateUtimeMilli atomic.Int64
}
memMagnif struct { // memory pressure magnification factor: ratio of runtime memory usage to quota usage
sync.Mutex
ratio atomic.Int64
}
awaitFreeBudgetKickOutIdx uint64 // round-robin index to clean await-free pool budget when quota is insufficient
}
tickTask struct { // periodic task
sync.Mutex
lastTickUtimeMilli atomic.Int64
}
UnixTimeSec atomic.Int64 // approximate unix time in seconds
rootPoolNum atomic.Int64
mode ArbitratorWorkMode
}
type buffer struct {
size atomic.Int64 // approximate max quota usage of root pool
quotaLimit atomic.Int64
timedMap [2 + defRedundancy]struct {
sync.RWMutex
wrapTimeSizeQuota
}
}
func (m *MemArbitrator) setBufferSize(v int64) {
m.buffer.size.Store(v)
}
func (m *MemArbitrator) setQuotaLimit(v int64) {
m.buffer.quotaLimit.Store(v)
}
type digestProfileShard struct {
sync.Map //map[uint64]*digestProfile
num atomic.Int64
}
// MemArbitratorActions represents the actions of the mem-arbitrator
type MemArbitratorActions struct {
Info, Warn, Error func(format string, args ...zap.Field) // log actions
UpdateRuntimeMemStats func() // update runtime memory statistics
GC func() // garbage collection
}
type awaitFreePoolExecMetrics struct {
pairSuccessFail
Shrink int64
}
type pairSuccessFail struct{ Succ, Fail int64 }
// NumByPriority represents the number of tasks by priority
type NumByPriority [maxArbitrationPriority]int64
type execMetricsAction struct {
GC int64
UpdateRuntimeMemStats int64
RecordMemState pairSuccessFail
}
type execMetricsRisk struct {
Mem int64
OOM int64
OOMKill NumByPriority
}
type execMetricsCancel struct {
StandardMode int64
PriorityMode NumByPriority
WaitAverse int64
}
type execMetricsCounter struct {
Task struct {
pairSuccessFail // all work modes
SuccByPriority NumByPriority // priority mode
}
Cancel execMetricsCancel
AwaitFree awaitFreePoolExecMetrics
Action execMetricsAction
Risk execMetricsRisk
ShrinkDigest int64
}
// ExecMetrics returns the reference of the execution metrics
func (m *MemArbitrator) ExecMetrics() (res execMetricsCounter) {
if m == nil {
return
}
res.Task.Succ = atomic.LoadInt64(&m.execMetrics.Task.Succ)
res.Task.Fail = atomic.LoadInt64(&m.execMetrics.Task.Fail)
for i := range maxArbitrationPriority {
res.Task.SuccByPriority[i] = atomic.LoadInt64(&m.execMetrics.Task.SuccByPriority[i])
}
res.Cancel.StandardMode = atomic.LoadInt64(&m.execMetrics.Cancel.StandardMode)
for i := range maxArbitrationPriority {
res.Cancel.PriorityMode[i] = atomic.LoadInt64(&m.execMetrics.Cancel.PriorityMode[i])
}
res.Cancel.WaitAverse = atomic.LoadInt64(&m.execMetrics.Cancel.WaitAverse)
res.AwaitFree.Shrink = atomic.LoadInt64(&m.execMetrics.AwaitFree.Shrink)
res.AwaitFree.Succ = atomic.LoadInt64(&m.execMetrics.AwaitFree.Succ)
res.AwaitFree.Fail = atomic.LoadInt64(&m.execMetrics.AwaitFree.Fail)
res.Action.GC = atomic.LoadInt64(&m.execMetrics.Action.GC)
res.Action.UpdateRuntimeMemStats = atomic.LoadInt64(&m.execMetrics.Action.UpdateRuntimeMemStats)
res.Action.RecordMemState.Succ = atomic.LoadInt64(&m.execMetrics.Action.RecordMemState.Succ)
res.Action.RecordMemState.Fail = atomic.LoadInt64(&m.execMetrics.Action.RecordMemState.Fail)
res.Risk.Mem = atomic.LoadInt64(&m.execMetrics.Risk.Mem)
res.Risk.OOM = atomic.LoadInt64(&m.execMetrics.Risk.OOM)
for i := range maxArbitrationPriority {
res.Risk.OOMKill[i] = atomic.LoadInt64(&m.execMetrics.Risk.OOMKill[i])
}
res.ShrinkDigest = atomic.LoadInt64(&m.execMetrics.ShrinkDigest)
return
}
// SetWorkMode sets the work mode of the mem-arbitrator
func (m *MemArbitrator) SetWorkMode(newMode ArbitratorWorkMode) (oriMode ArbitratorWorkMode) {
oriMode = ArbitratorWorkMode(atomic.SwapInt32((*int32)(&m.mode), int32(newMode)))
m.wake()
return
}
// WorkMode returns the current work mode of the mem-arbitrator
func (m *MemArbitrator) WorkMode() ArbitratorWorkMode {
if m == nil {
return ArbitratorModeDisable
}
return m.workMode()
}
// PoolAllocProfile returns the profile of root pool allocation in the mem-arbitrator
func (m *MemArbitrator) PoolAllocProfile() (res PoolAllocProfile) {
limit := m.limit()
return PoolAllocProfile{
SmallPoolLimit: max(1, limit/defServerlimitSmallLimitNum),
PoolAllocUnit: max(1, limit/defServerlimitMinUnitNum),
MaxPoolAllocUnit: max(1, limit/defServerlimitMaxUnitNum),
}
}
func (m *MemArbitrator) workMode() ArbitratorWorkMode {
return ArbitratorWorkMode(atomic.LoadInt32((*int32)(&m.mode)))
}
// GetDigestProfileCache returns the digest profile cache for a given digest-id and utime
func (m *MemArbitrator) GetDigestProfileCache(digestID uint64, utimeSec int64) (int64, bool) {
d := &m.digestProfileCache.shards[digestID&m.digestProfileCache.shardsMask]
e, ok := d.Load(digestID)
if !ok {
return 0, false
}
pf := e.(*digestProfile)
if utimeSec > pf.lastFetchUtimeSec.Load() {
pf.lastFetchUtimeSec.Store(utimeSec)
}
return pf.maxVal.Load(), true
}
func (m *MemArbitrator) shrinkDigestProfile(utimeSec int64, limit, shrinkTo int64) (shrinkedNum int64) {
if m.digestProfileCache.num.Load() <= limit {
return
}
atomic.AddInt64(&m.execMetrics.ShrinkDigest, 1)
var valMap [defPoolQuotaShards]int
for i := range m.digestProfileCache.shards {
d := &m.digestProfileCache.shards[i]
if d.num.Load() == 0 {
continue
}
dn := int64(0)
d.Range(func(k, v any) bool {
pf := v.(*digestProfile)
maxVal := pf.maxVal.Load()
{ // try to delete timeout cache
needDelete := false
if maxVal > m.poolAllocStats.SmallPoolLimit {
if utimeSec-pf.lastFetchUtimeSec.Load() > defDigestProfileMemTimeoutSec {
needDelete = true
}
} else { // small max-val
if utimeSec-pf.lastFetchUtimeSec.Load() > defDigestProfileSmallMemTimeoutSec {
needDelete = true
}
}
if needDelete {
if _, loaded := d.LoadAndDelete(k); loaded {
d.num.Add(-1)
dn++
return true
}
}
}
index := getQuotaShard(maxVal, defPoolQuotaShards)
valMap[index]++
return true
})
m.digestProfileCache.num.Add(-dn)
shrinkedNum += dn
}
toShinkNum := m.digestProfileCache.num.Load() - shrinkTo
if toShinkNum <= 0 {
return
}
shrinkMaxSize := DefMaxLimit
{ // find the max size to shrink
n := int64(0)
for i := range defPoolQuotaShards {
if n += int64(valMap[i]); n >= toShinkNum {
shrinkMaxSize = baseQuotaUnit * (1 << i)
break
}
}
}
for i := range m.digestProfileCache.shards {
d := &m.digestProfileCache.shards[i]
if d.num.Load() == 0 {
continue
}
dn := int64(0)
d.Range(func(k, v any) bool {
if pf := v.(*digestProfile); pf.maxVal.Load() < shrinkMaxSize {
if _, loaded := d.LoadAndDelete(k); loaded {
d.num.Add(-1)
toShinkNum--
dn++
}
}
return toShinkNum > 0
})
m.digestProfileCache.num.Add(-dn)
shrinkedNum += dn
if toShinkNum <= 0 {
break
}
}
return
}
// UpdateDigestProfileCache updates the digest profile cache for a given digest-id
func (m *MemArbitrator) UpdateDigestProfileCache(digestID uint64, memConsumed int64, utimeSec int64) {
d := &m.digestProfileCache.shards[digestID&m.digestProfileCache.shardsMask]
var pf *digestProfile
if e, ok := d.Load(digestID); ok {
pf = e.(*digestProfile)
} else {
pf = &digestProfile{}
if actual, loaded := d.LoadOrStore(digestID, pf); loaded {
pf = actual.(*digestProfile)
} else {
d.num.Add(1)
m.digestProfileCache.num.Add(1)
}
}
const maxNum = int64(len(pf.timedMap))
const maxDur = maxNum - defRedundancy
tsAlign := utimeSec / defUpdateBufferTimeAlignSec
tar := &pf.timedMap[tsAlign%maxNum]
if oriTs := tar.tsAlign.Load(); oriTs < tsAlign && oriTs != 0 {
tar.Lock()
if oriTs = tar.tsAlign.Load(); oriTs < tsAlign && oriTs != 0 {
tar.wrapTimeMaxval = wrapTimeMaxval{}
}
tar.Unlock()
}
tar.RLock()
updateSize := false
cleanNext := false
if tar.tsAlign.Load() == 0 {
if tar.tsAlign.CompareAndSwap(0, tsAlign) {
cleanNext = true
}
}
for oldVal := tar.maxVal.Load(); oldVal < memConsumed; oldVal = tar.maxVal.Load() {
if tar.maxVal.CompareAndSwap(oldVal, memConsumed) {
updateSize = true
break
}
}
if updateSize {
maxv := tar.maxVal.Load()
// tsAlign-1, tsAlign
for i := range maxDur {
d := &pf.timedMap[(maxNum+tsAlign-i)%maxNum]
if ts := d.tsAlign.Load(); ts > tsAlign-maxDur && ts <= tsAlign {
maxv = max(maxv, d.maxVal.Load())
}
}
pf.maxVal.CompareAndSwap(pf.maxVal.Load(), maxv) // force update
}
tar.RUnlock()
if utimeSec > pf.lastFetchUtimeSec.Load() {
pf.lastFetchUtimeSec.Store(utimeSec)
}
if cleanNext {
d := &pf.timedMap[(tsAlign+1)%maxNum]
d.Lock()
if ts := d.tsAlign.Load(); ts < (tsAlign+1) && ts != 0 {
d.wrapTimeMaxval = wrapTimeMaxval{}
}
d.Unlock()
}
}
type digestProfile struct {
maxVal atomic.Int64
timedMap [2 + defRedundancy]struct {
sync.RWMutex
wrapTimeMaxval
}
lastFetchUtimeSec atomic.Int64
}
type wrapTimeMaxval struct {
tsAlign atomic.Int64
maxVal atomic.Int64
}
type wrapTimeSizeQuota struct {
ts atomic.Int64
size atomic.Int64
quota atomic.Int64
}
type statisticsTimedMapElement struct {
tsAlign atomic.Int64
slot [defServerlimitMinUnitNum]uint32
num atomic.Uint32
}
type entryKillCancelCtx struct {
startTime time.Time
reclaim int64
start bool
fail bool
}
type mapEntryWithMem struct {
entries mapUIDEntry
num int64
}
func (x *mapEntryWithMem) delete(entry *rootPoolEntry) {
delete(x.entries, entry.pool.uid)
atomic.AddInt64(&x.num, -1)
}
func (x *mapEntryWithMem) init() {
x.entries = make(mapUIDEntry)
}
func (x *mapEntryWithMem) add(entry *rootPoolEntry) {
x.entries[entry.pool.uid] = entry
atomic.AddInt64(&x.num, 1)
}
func (m *MemArbitrator) addUnderKill(entry *rootPoolEntry, memoryUsed int64, startTime time.Time) {
if !entry.arbitratorMu.underKill.start {
m.underKill.add(entry)
entry.arbitratorMu.underKill = entryKillCancelCtx{
start: true,
startTime: startTime,
reclaim: memoryUsed,
}
}
}
func (m *MemArbitrator) addUnderCancel(entry *rootPoolEntry, memoryUsed int64, startTime time.Time) {
if !entry.arbitratorMu.underCancel.start {
m.underCancel.add(entry)
entry.arbitratorMu.underCancel = entryKillCancelCtx{
start: true,
startTime: startTime,
reclaim: memoryUsed,
}
}
}
func (m *MemArbitrator) deleteUnderKill(entry *rootPoolEntry) {
if entry.arbitratorMu.underKill.start {
m.underKill.delete(entry)
entry.arbitratorMu.underKill.start = false
m.warnKillCancel(entry, &entry.arbitratorMu.underKill, "Finish to `KILL` root pool")
}
}
func (m *MemArbitrator) deleteUnderCancel(entry *rootPoolEntry) {
if entry.arbitratorMu.underCancel.start {
m.underCancel.delete(entry)
entry.arbitratorMu.underCancel.start = false
}
}
type memProfile struct {
startUtimeMilli int64
tsAlign int64
heap int64 // max heap-alloc size after GC
quota int64 // max quota allocated when failed to arbitrate
ratio int64 // heap / quota
}
type heapController struct {
memStateRecorder struct {
RecordMemState
lastMemState atomic.Pointer[RuntimeMemStateV1]
lastRecordUtimeMilli atomic.Int64
sync.Mutex
pendingStore atomic.Bool
}
memRisk struct {
startTime time.Time
lastMemStats struct {
startTime time.Time
heapTotalFree int64
}
minHeapFreeBPS int64
start atomic.Int64
oomRisk bool
}
timedMemProfile [2]memProfile
lastGC struct {
heapAlloc atomic.Int64 // heap alloc size after GC
utime atomic.Int64 // end time of last GC
}
heapTotalFree atomic.Int64
heapAlloc atomic.Int64 // heap-alloc <= heap-inuse
heapInuse atomic.Int64
memOffHeap atomic.Int64 // off-heap memory: `stack` + `gc` + `other` + `meta` ...
memInuse atomic.Int64 // heap-inuse + off-heap: must be less than runtime-limit to avoid Heavy GC / OOM
sync.Mutex
}
func (m *MemArbitrator) lastMemState() (res *RuntimeMemStateV1) {
res = m.heapController.memStateRecorder.lastMemState.Load()
return
}
// RecordMemState is an interface for recording runtime memory state
type RecordMemState interface {
Load() (*RuntimeMemStateV1, error)
Store(*RuntimeMemStateV1) error
}
func (m *MemArbitrator) recordMemConsumed(memConsumed, utimeSec int64) {
m.poolAllocStats.RLock()
defer m.poolAllocStats.RUnlock()
const maxNum = int64(len(m.poolAllocStats.timedMap))
tsAlign := utimeSec / defUpdateMemConsumedTimeAlignSec
tar := &m.poolAllocStats.timedMap[tsAlign%maxNum]
if oriTs := tar.tsAlign.Load(); oriTs < tsAlign && oriTs != 0 {
tar.Lock()
if oriTs = tar.tsAlign.Load(); oriTs < tsAlign && oriTs != 0 {
tar.statisticsTimedMapElement = statisticsTimedMapElement{}
}
tar.Unlock()
}
cleanNext := false
{
tar.RLock()
if tar.tsAlign.Load() == 0 {
if tar.tsAlign.CompareAndSwap(0, tsAlign) {
cleanNext = true
}
}
{
pos := min(memConsumed/m.poolAllocStats.PoolAllocUnit, defServerlimitMinUnitNum-1)
atomic.AddUint32(&tar.slot[pos], 1)
tar.num.Add(1)
}
tar.RUnlock()
}
if cleanNext {
d := &m.poolAllocStats.timedMap[(tsAlign+1)%maxNum]
d.Lock()
if v := d.tsAlign.Load(); v < (tsAlign+1) && v != 0 {
d.statisticsTimedMapElement = statisticsTimedMapElement{}
}
d.Unlock()
}
}
func (m *MemArbitrator) tryToUpdateBuffer(memConsumed, memQuotaLimit, utimeSec int64) {
const maxNum = int64(len(m.buffer.timedMap))
const maxDur = maxNum - defRedundancy
tsAlign := utimeSec / defUpdateBufferTimeAlignSec
tar := &m.buffer.timedMap[tsAlign%maxNum]
if oriTs := tar.ts.Load(); oriTs < tsAlign && oriTs != 0 {
tar.Lock()
if oriTs = tar.ts.Load(); oriTs < tsAlign && oriTs != 0 {
tar.wrapTimeSizeQuota = wrapTimeSizeQuota{}
}
tar.Unlock()
}
tar.RLock()
updateSize := false
updateQuota := false
cleanNext := false
if ts := tar.ts.Load(); ts == 0 {
if tar.ts.CompareAndSwap(0, tsAlign) {
cleanNext = true
}
}
for oldVal := tar.size.Load(); oldVal < memConsumed; oldVal = tar.size.Load() {
if tar.size.CompareAndSwap(oldVal, memConsumed) {
updateSize = true
break
}
}
for oldVal := tar.quota.Load(); oldVal < memQuotaLimit; oldVal = tar.quota.Load() {
if tar.quota.CompareAndSwap(oldVal, memQuotaLimit) {
updateQuota = true
break
}
}
if updateSize || updateQuota {
// tsAlign-1, tsAlign
for i := range maxDur {
d := &m.buffer.timedMap[(maxNum+tsAlign-i)%maxNum]
if ts := d.ts.Load(); ts > tsAlign-maxDur && ts <= tsAlign {
memConsumed = max(memConsumed, d.size.Load())
memQuotaLimit = max(memQuotaLimit, d.quota.Load())
}
}
if updateSize && m.buffer.size.Load() != memConsumed {
m.setBufferSize(memConsumed)
}
if updateQuota && m.buffer.quotaLimit.Load() != memQuotaLimit {
m.setQuotaLimit(memQuotaLimit)
}
}
tar.RUnlock()
if cleanNext {
d := &m.buffer.timedMap[(tsAlign+1)%maxNum]
d.Lock()
if v := d.ts.Load(); v < tsAlign+1 && v != 0 {
d.wrapTimeSizeQuota = wrapTimeSizeQuota{}
}
d.Unlock()
}
}
func (m *MemArbitrator) gc() {
m.mu.lastGC = m.mu.released
if m.actions.GC != nil {
m.actions.GC()
}
atomic.AddInt64(&m.execMetrics.Action.GC, 1)
}
func (m *MemArbitrator) reclaimHeap() {
m.gc()
m.refreshRuntimeMemStats() // refresh runtime mem stats after GC and record
}
func (m *MemArbitrator) setMinHeapFreeBPS(sz int64) {
m.heapController.memRisk.minHeapFreeBPS = sz
}
func (m *MemArbitrator) minHeapFreeBPS() int64 {
return m.heapController.memRisk.minHeapFreeBPS
}
// ResetRootPoolByID resets the root pool by ID and analyze the memory consumption info
func (m *MemArbitrator) ResetRootPoolByID(uid uint64, maxMemConsumed int64, tune bool) {
entry := m.getRootPoolEntry(uid)
if entry == nil {
return
}
if tune {
memQuotaLimit := int64(0)
if ctx := entry.ctx.Load(); ctx != nil {
memQuotaLimit = ctx.memQuotaLimit
}
m.tryToUpdateBuffer(
maxMemConsumed,
memQuotaLimit,
m.UnixTimeSec.Load())
if maxMemConsumed > m.poolAllocStats.SmallPoolLimit {
m.recordMemConsumed(
maxMemConsumed,
m.UnixTimeSec.Load())
}
}
m.resetRootPoolEntry(entry)
m.wake()
}
func (m *MemArbitrator) resetRootPoolEntry(entry *rootPoolEntry) bool {
{
entry.stateMu.Lock()
if entry.execState() == execStateIdle {
entry.stateMu.Unlock()
return false
}
entry.setExecState(execStateIdle)
entry.stateMu.Unlock()
}
// aquiure the lock of root pool:
// - wait for the alloc task to finish
// - publish the state of entry
if releasedSize := entry.pool.Stop(); releasedSize > 0 {
entry.stateMu.quotaToReclaim.Add(releasedSize)
}
{
m.cleanupMu.Lock()
m.cleanupMu.fifoTasks.pushBack(entry)
m.cleanupMu.Unlock()
}
return true
}
func (m *MemArbitrator) warnKillCancel(entry *rootPoolEntry, ctx *entryKillCancelCtx, reason string) {
m.actions.Warn(
reason,
zap.Uint64("uid", entry.pool.uid),
zap.String("name", entry.pool.name),
zap.String("mem-priority", entry.ctx.memPriority.String()),
zap.Int64("reclaimed", ctx.reclaim),
zap.Time("start-time", ctx.startTime),
)
}
// RemoveRootPoolByID removes & terminates the root pool by ID
func (m *MemArbitrator) RemoveRootPoolByID(uid uint64) bool {
entry := m.getRootPoolEntry(uid)
if entry == nil {
return false
}
if m.removeRootPoolEntry(entry) {
if ctx := entry.ctx.Load(); ctx != nil && ctx.arbitrateHelper != nil {
ctx.arbitrateHelper.Finish()
}
m.wake()
return true
}
return false
}
func (m *MemArbitrator) removeRootPoolEntry(entry *rootPoolEntry) bool {
{
entry.stateMu.Lock()
if entry.stateMu.stop.Swap(true) {
entry.stateMu.Unlock()
return false
}
if entry.execState() != execStateIdle {
entry.setExecState(execStateIdle)
}
entry.stateMu.Unlock()
}
// make the alloc task failed in arbitrator;
{
m.cleanupMu.Lock()
m.cleanupMu.fifoTasks.pushBack(entry)
m.cleanupMu.Unlock()
}
// aquiure the lock of root pool and clean up
entry.pool.Stop()
// any new lock of root pool must have sensed the exec state is idle
return true
}
func (m *MemArbitrator) getRootPoolEntry(uid uint64) *rootPoolEntry {
if e, ok := m.entryMap.getStatusShard(uid).get(uid); ok {
return e
}
return nil
}
type rootPool struct {
entry *rootPoolEntry
arbitrator *MemArbitrator
}
// FindRootPool finds the root pool by ID
func (m *MemArbitrator) FindRootPool(uid uint64) rootPool {
if e := m.getRootPoolEntry(uid); e != nil {
return rootPool{e, m}
}
return rootPool{}
}
// EmplaceRootPool emplaces a new root pool with the given uid (uid < 0 means the internal pool)
func (m *MemArbitrator) EmplaceRootPool(uid uint64) (rootPool, error) {
if e := m.getRootPoolEntry(uid); e != nil {
return rootPool{e, m}, nil
}
pool := &ResourcePool{
name: fmt.Sprintf("root-%d", uid),
uid: uid,
limit: DefMaxLimit,
allocAlignSize: 1,
}
entry, err := m.addRootPool(pool)
return rootPool{entry, m}, err
}
func (m *MemArbitrator) addRootPool(pool *ResourcePool) (*rootPoolEntry, error) {
if b := pool.capacity(); b != 0 {
return nil, fmt.Errorf("%s: has %d bytes budget left", pool.name, b)
}
if pool.mu.budget.pool != nil {
return nil, fmt.Errorf("%s: already started with pool %s", pool.name, pool.mu.budget.pool.Name())
}
if pool.reserved != 0 {
return nil, fmt.Errorf("%s: has %d reserved budget left", pool.name, pool.reserved)
}
entry, ok := m.entryMap.emplace(pool)
if !ok {
return nil, fmt.Errorf("%s: already exists", pool.name)
}
m.rootPoolNum.Add(1)
return entry, nil
}
func (m *MemArbitrator) doAdjustSoftLimit() {
var softLimit int64
if m.mu.softLimit.mode == SoftLimitModeSpecified {
if m.mu.softLimit.specified.size > 0 {
softLimit = min(m.mu.softLimit.specified.size, m.mu.limit)
} else {
softLimit = min(multiRatio(m.mu.limit, m.mu.softLimit.specified.ratio), m.mu.limit)
}
} else {
softLimit = m.oomRisk()
}
atomic.StoreInt64(&m.mu.softLimit.size, softLimit)
}
// SetSoftLimit sets the soft limit of the mem-arbitrator
func (m *MemArbitrator) SetSoftLimit(softLimit int64, sortLimitRatio float64, mode SoftLimitMode) {
m.mu.Lock()
m.mu.softLimit.mode = mode
if mode == SoftLimitModeSpecified {
m.mu.softLimit.specified.size = softLimit
m.mu.softLimit.specified.ratio = intoRatio(sortLimitRatio)
}
m.doAdjustSoftLimit()
m.mu.Unlock()
}
func (m *MemArbitrator) softLimit() int64 {
return atomic.LoadInt64(&m.mu.softLimit.size)
}
// SoftLimit returns the soft limit of the mem-arbitrator
func (m *MemArbitrator) SoftLimit() uint64 {
if m == nil {
return 0
}
return uint64(m.softLimit())
}
func (m *MemArbitrator) doSetLimit(limit int64) {
m.mu.limit = limit
atomic.StoreInt64(&m.mu.threshold.oomRisk, int64(float64(limit)*defOOMRiskRatio))
atomic.StoreInt64(&m.mu.threshold.risk, int64(float64(limit)*defMemRiskRatio))
m.doAdjustSoftLimit()
}
// SetLimit sets the limit of the mem-arbitrator and returns whether the limit has changed
func (m *MemArbitrator) SetLimit(x uint64) (changed bool) {
limit := min(int64(x), DefMaxLimit)
if limit <= 0 {
return
}
needWake := false
{
m.mu.Lock()
if limit != m.mu.limit {
changed = true
needWake = limit > m.mu.limit // update to a greater limit
m.doSetLimit(limit)
}
m.mu.Unlock()
}
if changed {
m.resetStatistics()
}
if needWake {
m.weakWake()
}
return
}
func (m *MemArbitrator) resetStatistics() {
m.poolAllocStats.Lock()
m.poolAllocStats.PoolAllocProfile = m.PoolAllocProfile()
for i := range m.poolAllocStats.timedMap {
m.poolAllocStats.timedMap[i].statisticsTimedMapElement = statisticsTimedMapElement{}
}
m.poolAllocStats.Unlock()
}
func (m *MemArbitrator) alloc(x int64) {
m.mu.Lock()
atomic.AddInt64(&m.mu.allocated, x)
m.mu.Unlock()
}
func (m *MemArbitrator) release(x int64) {
if x <= 0 {
return
}
m.alloc(-x)
}
func (m *MemArbitrator) allocated() int64 {
return atomic.LoadInt64(&m.mu.allocated)
}
func (m *MemArbitrator) lastBlockedAt() (allocated, utimeSec int64) {
return atomic.LoadInt64(&m.execMu.blockedState.allocated), atomic.LoadInt64(&m.execMu.blockedState.utimeSec)
}
// Allocated returns the allocated mem quota of the mem-arbitrator
func (m *MemArbitrator) Allocated() int64 {
return m.allocated()
}
// OutOfControl returns the size of the out-of-control mem
func (m *MemArbitrator) OutOfControl() int64 {
return m.avoidance.size.Load()
}
// WaitingAllocSize returns the pending alloc mem quota of the mem-arbitrator
func (m *MemArbitrator) WaitingAllocSize() int64 {
return m.tasks.waitingAlloc.Load()
}
// TaskNum returns the number of pending tasks in the mem-arbitrator
func (m *MemArbitrator) TaskNum() int64 {
return m.tasks.fifoTasks.size()
}
// RootPoolNum returns the number of root pools in the mem-arbitrator
func (m *MemArbitrator) RootPoolNum() int64 {
return m.rootPoolNum.Load()
}
func (m *MemArbitrator) limit() int64 {
return atomic.LoadInt64(&m.mu.limit)
}
// Limit returns the mem quota limit of the mem-arbitrator
func (m *MemArbitrator) Limit() uint64 {
if m == nil {
return 0
}
return uint64(m.limit())
}
func (m *MemArbitrator) allocateFromArbitrator(remainBytes int64, leastLeft int64) (bool, int64) {
reclaimedBytes := int64(0)
ok := false
{
m.mu.Lock()
if m.allocated() <= m.mu.limit-leastLeft-remainBytes {
atomic.AddInt64(&m.mu.allocated, remainBytes)
reclaimedBytes += remainBytes
ok = true
} else if v := m.mu.limit - leastLeft - m.allocated(); v > 0 {
atomic.AddInt64(&m.mu.allocated, v)
reclaimedBytes += v
}
m.mu.Unlock()
}
return ok, reclaimedBytes
}
func (m *MemArbitrator) doReclaimMemByPriority(target *rootPoolEntry, remainBytes int64) {
underReclaimBytes := int64(0)
// check under canceling pool entries
if m.underCancel.num > 0 {
now := m.innerTime()
for uid, entry := range m.underCancel.entries {
ctx := &entry.arbitratorMu.underCancel
if ctx.fail {
continue
}
if deadline := ctx.startTime.Add(defKillCancelCheckTimeout); now.Compare(deadline) >= 0 {
m.actions.Warn("Failed to `CANCEL` root pool due to timeout",
zap.Uint64("uid", uid),
zap.String("name", entry.pool.name),
zap.Int64("quota-to-reclaim", ctx.reclaim),
zap.String("mem-priority", entry.ctx.memPriority.String()),
zap.Time("start-time", ctx.startTime),
zap.Time("deadline", deadline),
)
ctx.fail = true
continue
}
underReclaimBytes += ctx.reclaim
}
}
// remain-bytes <= 0
if underReclaimBytes >= remainBytes {
return
}
// task whose mode is wait_averse must have been cleaned
for prio := minArbitrationPriority; prio < target.ctx.memPriority; prio++ {
for pos := m.entryMap.maxQuotaShardIndex - 1; pos >= m.entryMap.minQuotaShardIndexToCheck; pos-- {
for _, entry := range m.entryMap.quotaShards[prio][pos].entries {
if entry.arbitratorMu.underCancel.start || entry.notRunning() {
continue
}
if ctx := entry.ctx.Load(); ctx.available() {
atomic.AddInt64(&m.execMetrics.Cancel.PriorityMode[prio], 1)
ctx.stop(ArbitratorPriorityCancel)
if m.removeTask(entry) {
entry.windUp(0, ArbitrateFail)
}
m.addUnderCancel(entry, entry.arbitratorMu.quota, m.innerTime())
underReclaimBytes += entry.arbitratorMu.quota
if underReclaimBytes >= remainBytes {
return
}
}
}
}
}
}
func (m *MemArbitrator) allocateFromPrivilegedBudget(target *rootPoolEntry, remainBytes int64) (bool, int64) {
ok := false
if m.privilegedEntry == target {
ok = true
} else if m.privilegedEntry == nil && target.ctx.preferPrivilege {
if target.intoExecPrivileged() {
m.privilegedEntry = target
ok = true
} else {
ok = false
}
}
if !ok {
return false, 0
}
m.alloc(remainBytes)
return ok, remainBytes
}
func (m *MemArbitrator) ableToGC() bool {
return m.mu.released-m.mu.lastGC >= uint64(m.poolAllocStats.SmallPoolLimit)
}
func (m *MemArbitrator) tryRuntimeGC() bool {
if m.ableToGC() {
m.updateTrackedHeapStats()
m.reclaimHeap()
return true
}
return false
}
// reserved buffer for arbitrate process
func (m *MemArbitrator) reservedBuffer() int64 {
if m.execMu.mode == ArbitratorModePriority {
return m.buffer.size.Load()
}
return 0
}
func (m *MemArbitrator) arbitrate(target *rootPoolEntry) (bool, int64) {
reclaimedBytes := int64(0)
remainBytes := target.request.quota
onlyPrivilegedBudget := false
for m.heapController.heapAlloc.Load() > m.limit()-m.reservedBuffer()-remainBytes {
if !m.tryRuntimeGC() {
onlyPrivilegedBudget = true // only could alloc from the privileged budget
break
}
}
{
ok := false
reclaimed := int64(0)
if m.execMu.mode == ArbitratorModePriority {
ok, reclaimed = m.allocateFromPrivilegedBudget(target, remainBytes)
reclaimedBytes += reclaimed
remainBytes -= reclaimed
}
if ok {
return true, reclaimedBytes
} else if onlyPrivilegedBudget {
return false, reclaimedBytes
}
}
for {
ok, reclaimed := m.allocateFromArbitrator(remainBytes, m.reservedBuffer()+m.avoidance.size.Load())
reclaimedBytes += reclaimed
remainBytes -= reclaimed
if ok {
return true, reclaimedBytes
}
if !m.tryRuntimeGC() {
break
}
}
return false, reclaimedBytes
}
// NewMemArbitrator creates a new mem-arbitrator heap instance
func NewMemArbitrator(limit int64, shardNum uint64, maxQuotaShardNum int, minQuotaForReclaim int64, recorder RecordMemState) *MemArbitrator {
if limit <= 0 {
limit = DefMaxLimit
}
m := &MemArbitrator{
mode: ArbitratorModeDisable,
}
m.tasks.fifoTasks.init()
for i := range m.tasks.fifoByPriority {
m.tasks.fifoByPriority[i].init()
}
shardNum = nextPow2(shardNum)
m.tasks.fifoWaitAverse.init()
m.notifer = NewNotifer()
m.entryMap.init(shardNum, maxQuotaShardNum, minQuotaForReclaim)
m.doSetLimit(limit)
m.resetStatistics()
m.setMinHeapFreeBPS(defMinHeapFreeBPS)
m.cleanupMu.fifoTasks.init()
m.underKill.init()
m.underCancel.init()
{
f := func(string, ...zap.Field) {}
m.actions.Info = f
m.actions.Warn = f
m.actions.Error = f
}
{
m.heapController.memStateRecorder.Lock()
m.heapController.memStateRecorder.RecordMemState = recorder
if s, err := recorder.Load(); err == nil && s != nil {
m.heapController.memStateRecorder.lastMemState.Store(s)
m.doSetMemMagnif(s.Magnif)
m.poolAllocStats.mediumQuota.Store(s.PoolMediumCap)
}
m.heapController.memStateRecorder.Unlock()
}
m.resetDigestProfileCache(shardNum)
m.digestProfileCache.limit = 2e5 // 200K
return m
}
func (m *MemArbitrator) resetDigestProfileCache(shardNum uint64) {
m.digestProfileCache.shards = make([]digestProfileShard, shardNum)
m.digestProfileCache.shardsMask = shardNum - 1
m.digestProfileCache.num.Store(0)
}
// SetDigestProfileCacheLimit sets the limit of the digest profile cache
func (m *MemArbitrator) SetDigestProfileCacheLimit(limit int64) {
m.digestProfileCache.limit = min(max(0, limit), defMax)
}
func (m *MemArbitrator) doCancelPendingTasks(prio ArbitrationPriority, waitAverse bool) (cnt int64) {
var entries [64]*rootPoolEntry
fifo := &m.tasks.fifoWaitAverse
reason := ArbitratorWaitAverseCancel
if !waitAverse {
fifo = &m.tasks.fifoByPriority[prio]
reason = ArbitratorStandardCancel
}
for {
size := 0
{
m.tasks.Lock()
for {
entry := fifo.front()
if entry == nil {
break
}
if m.removeTaskImpl(entry) {
entries[size] = entry
size++
}
if size == len(entries) {
break
}
}
m.tasks.Unlock()
}
for i := range size {
entry := entries[i]
if ctx := entry.ctx.Load(); ctx.available() {
ctx.stop(reason)
}
entry.windUp(0, ArbitrateFail)
}
cnt += int64(size)
if size != len(entries) {
break
}
}
return cnt
}
func (m *MemArbitrator) doExecuteFirstTask() (exec bool) {
if m.tasks.fifoTasks.empty() {
return
}
entry := m.extractFirstTaskEntry()
if entry == nil {
return
}
if entry.arbitratorMu.destroyed {
if m.removeTask(entry) {
entry.windUp(0, ArbitrateFail)
}
return true
}
{
ok, reclaimedBytes := m.arbitrate(entry)
if ok {
exec = true
if m.removeTask(entry) {
if m.execMu.mode == ArbitratorModePriority {
atomic.AddInt64(&m.execMetrics.Task.SuccByPriority[entry.taskMu.fifoByPriority.priority], 1)
}
m.entryMap.addQuota(entry, reclaimedBytes)
// wind up & publish the result
entry.windUp(reclaimedBytes, ArbitrateOk)
} else {
// subscription task may have been canceled
m.release(reclaimedBytes)
}
} else {
m.release(reclaimedBytes)
atomic.StoreInt64(&m.execMu.blockedState.allocated, m.allocated())
atomic.StoreInt64(&m.execMu.blockedState.utimeSec, m.UnixTimeSec.Load())
m.doReclaimByWorkMode(entry, reclaimedBytes)
}
}
return
}
func (m *MemArbitrator) doReclaimNonBlockingTasks() {
if m.execMu.mode == ArbitratorModeStandard {
for prio := minArbitrationPriority; prio < maxArbitrationPriority; prio++ {
if m.taskNumByPriority(prio) != 0 {
atomic.AddInt64(&m.execMetrics.Cancel.StandardMode, m.doCancelPendingTasks(prio, false))
}
}
} else if m.taskNumOfWaitAverse() != 0 {
atomic.AddInt64(&m.execMetrics.Cancel.WaitAverse, m.doCancelPendingTasks(maxArbitrationPriority, true))
}
}
func (m *MemArbitrator) doReclaimByWorkMode(entry *rootPoolEntry, reclaimedBytes int64) {
waitAverse := entry.ctx.waitAverse
m.doReclaimNonBlockingTasks()
// entry's ctx may have been modified
if waitAverse {
return
}
if m.execMu.mode == ArbitratorModePriority {
m.doReclaimMemByPriority(entry, entry.request.quota-reclaimedBytes)
}
}
func (m *MemArbitrator) doExecuteCleanupTasks() {
for {
var entry *rootPoolEntry
{
m.cleanupMu.Lock()
entry = m.cleanupMu.fifoTasks.popFront()
m.cleanupMu.Unlock()
}
if entry == nil {
break
}
if m.privilegedEntry == entry {
m.privilegedEntry = nil
}
m.deleteUnderCancel(entry)
m.deleteUnderKill(entry)
if !entry.stateMu.stop.Load() { // reset pool entry
toRelease := entry.stateMu.quotaToReclaim.Swap(0)
if toRelease > 0 {
m.release(toRelease)
atomic.AddUint64(&m.mu.released, uint64(toRelease))
m.entryMap.addQuota(entry, -toRelease)
}
} else {
if !entry.arbitratorMu.destroyed {
if entry.arbitratorMu.quota > 0 {
m.release(entry.arbitratorMu.quota)
atomic.AddUint64(&m.mu.released, uint64(entry.arbitratorMu.quota))
}
m.entryMap.delete(entry)
m.rootPoolNum.Add(-1)
entry.arbitratorMu.destroyed = true
}
if m.removeTask(entry) {
entry.windUp(0, ArbitrateFail)
}
}
}
}
func (m *MemArbitrator) implicitRun() { // satisfy any subscription task
if m.tasks.fifoTasks.empty() {
return
}
for { // make all tasks success
entry := m.frontTaskEntry()
if entry == nil {
break
}
if entry.arbitratorMu.destroyed {
if m.removeTask(entry) {
entry.windUp(0, ArbitrateFail)
}
continue
}
if m.removeTask(entry) {
m.alloc(entry.request.quota)
m.entryMap.addQuota(entry, entry.request.quota)
entry.windUp(entry.request.quota, ArbitrateOk)
}
}
}
// -1: at ArbitratorModeDisable
// -2: mem unsafe
// >= 0: execute / cancel task num
func (m *MemArbitrator) runOneRound() (taskExecNum int) {
m.execMu.startTime = now()
if t := m.execMu.startTime.Unix(); t != m.UnixTimeSec.Load() { // update per second duration and reduce force sharing
m.UnixTimeSec.Store(t)
}
if mode := m.workMode(); m.execMu.mode != mode {
m.execMu.mode = mode
if mode == ArbitratorModeDisable { // switch to disable mode
m.setMemSafe()
m.execMu.blockedState = blockedState{}
}
}
if !m.cleanupMu.fifoTasks.empty() {
m.doExecuteCleanupTasks()
}
if m.execMu.mode == ArbitratorModeDisable {
m.implicitRun()
return -1
}
if !m.handleMemIssues() { // mem is still unsafe
return -2
}
for m.doExecuteFirstTask() {
taskExecNum++
}
return taskExecNum
}
func (m *MemArbitrator) asyncRun(duration time.Duration) bool {
if m.controlMu.running.Load() {
return false
}
m.controlMu.running.Store(true)
m.controlMu.finishCh = make(chan struct{})
go func() {
ticker := time.NewTicker(duration)
for m.controlMu.running.Load() {
select {
case <-ticker.C:
m.weakWake()
case <-m.notifer.C:
m.notifer.clear()
m.runOneRound()
}
}
ticker.Stop()
close(m.controlMu.finishCh)
}()
return true
}
// Restart starts the root pool with the given context
func (r *rootPool) Restart(ctx *ArbitrationContext) bool {
return r.arbitrator.restartEntryByContext(r.entry, ctx)
}
// Pool returns the internal resource pool
func (r *rootPool) Pool() *ResourcePool {
return r.entry.pool
}
func (m *MemArbitrator) restartEntryByContext(entry *rootPoolEntry, ctx *ArbitrationContext) bool {
if entry == nil {
return false
}
entry.stateMu.Lock()
defer entry.stateMu.Unlock()
if entry.stateMu.stop.Load() || entry.execState() != execStateIdle {
return false
}
entry.pool.mu.Lock()
defer entry.pool.mu.Unlock()
if ctx != nil {
if ctx.PrevMaxMem > m.buffer.size.Load() {
m.setBufferSize(ctx.PrevMaxMem)
} else if ctx.memQuotaLimit > m.buffer.quotaLimit.Load() {
m.setBufferSize(ctx.memQuotaLimit)
m.setQuotaLimit(ctx.memQuotaLimit)
}
if ctx.waitAverse {
entry.ctx.preferPrivilege = false
entry.ctx.memPriority = ArbitrationPriorityHigh
} else {
entry.ctx.preferPrivilege = ctx.preferPrivilege
entry.ctx.memPriority = ctx.memPriority
}
entry.ctx.cancelCh = ctx.cancelCh
entry.ctx.waitAverse = ctx.waitAverse
} else {
entry.ctx.cancelCh = nil
entry.ctx.waitAverse = false
entry.ctx.memPriority = ArbitrationPriorityMedium
entry.ctx.preferPrivilege = false
}
entry.ctx.Store(ctx)
if _, loaded := m.entryMap.contextCache.LoadOrStore(entry.pool.uid, entry); !loaded {
m.entryMap.contextCache.num.Add(1)
}
if entry.pool.actions.OutOfCapacityActionCB == nil {
entry.pool.actions.OutOfCapacityActionCB = func(s OutOfCapacityActionArgs) error {
if m.blockingAllocate(entry, s.Request) != ArbitrateOk {
return errArbitrateFailError
}
return nil
}
}
entry.pool.mu.stopped = false
entry.setExecState(execStateRunning)
return true
}
// DebugFields is used to store debug fields for logging
type DebugFields struct {
fields [30]zap.Field
n int
}
// ConcurrentBudget represents a wrapped budget of the resource pool for concurrent usage
type ConcurrentBudget struct {
Pool *ResourcePool
Capacity atomic.Int64
LastUsedTimeSec int64
sync.Mutex
_ holder64Bytes
Used atomic.Int64
_ holder64Bytes
}
// TrackedConcurrentBudget consists of ConcurrentBudget and heap inuse
type TrackedConcurrentBudget struct {
ConcurrentBudget
HeapInuse atomic.Int64
_ holder64Bytes
}
// Clear clears the concurrent budget and returns the capacity
func (b *ConcurrentBudget) Clear() int64 {
b.Lock()
budgetCap := b.Capacity.Swap(0)
b.Used.Store(0)
if budgetCap > 0 {
b.Pool.release(budgetCap)
}
b.Pool = nil
b.Unlock()
return budgetCap
}
// Reserve reserves a given capacity for the concurrent budget
func (b *ConcurrentBudget) Reserve(newCap int64) (err error) {
b.Lock()
extra := max(newCap, b.Used.Add(0), b.Capacity.Load()) - b.Capacity.Load()
if err = b.Pool.allocate(extra); err == nil {
b.Capacity.Add(extra)
}
b.Unlock()
return
}
// PullFromUpstream tries to pull from the upstream pool when facing `out of capacity`
// It requires the action of the pool to be non-blocking
func (b *ConcurrentBudget) PullFromUpstream() (err error) {
b.Lock()
x := b.Used.Add(0) - b.Capacity.Load()
if x > 0 {
extra := b.Pool.roundSize(x)
if err = b.Pool.allocate(extra); err == nil {
b.Capacity.Add(extra)
}
}
b.Unlock()
return
}
// AutoRun starts the work groutine of the mem-arbitrator asynchronously
func (m *MemArbitrator) AutoRun(
actions MemArbitratorActions,
awaitFreePoolAllocAlignSize, awaitFreePoolShardNum int64,
taskTickDur time.Duration,
) bool {
m.controlMu.Lock()
defer m.controlMu.Unlock()
if m.controlMu.running.Load() {
return false
}
{ // init
m.actions = actions
m.refreshRuntimeMemStats()
m.initAwaitFreePool(awaitFreePoolAllocAlignSize, awaitFreePoolShardNum)
}
return m.asyncRun(taskTickDur)
}
func (m *MemArbitrator) refreshRuntimeMemStats() {
if m.actions.UpdateRuntimeMemStats != nil {
m.actions.UpdateRuntimeMemStats() // should invoke `SetRuntimeMemStats`
}
atomic.AddInt64(&m.execMetrics.Action.UpdateRuntimeMemStats, 1)
}
// RuntimeMemStats represents the runtime memory statistics
type RuntimeMemStats struct {
HeapAlloc, HeapInuse, TotalFree, MemOffHeap, LastGC int64
}
func (m *MemArbitrator) trySetRuntimeMemStats(s RuntimeMemStats) bool {
if m.heapController.TryLock() {
m.doSetRuntimeMemStats(s)
m.heapController.Unlock()
return true
}
return false
}
// SetRuntimeMemStats sets the runtime memory statistics. It may be invoked by `refreshRuntimeMemStats` -> `actions.UpdateRuntimeMemStats`
func (m *MemArbitrator) SetRuntimeMemStats(s RuntimeMemStats) {
m.heapController.Lock()
m.doSetRuntimeMemStats(s)
m.heapController.Unlock()
}
func (m *MemArbitrator) doSetRuntimeMemStats(s RuntimeMemStats) {
m.heapController.heapAlloc.Store(s.HeapAlloc)
m.heapController.heapInuse.Store(s.HeapInuse)
m.heapController.heapTotalFree.Store(s.TotalFree)
m.heapController.memOffHeap.Store(s.MemOffHeap)
m.heapController.memInuse.Store(s.MemOffHeap + s.HeapInuse)
if s.LastGC > m.heapController.lastGC.utime.Load() {
m.heapController.lastGC.heapAlloc.Store(s.HeapAlloc)
m.heapController.lastGC.utime.Store(s.LastGC)
}
m.updateAvoidSize() // calc out-of-control & avoid size
}
func (m *MemArbitrator) updateAvoidSize() {
capacity := m.softLimit()
if m.mu.softLimit.mode == SoftLimitModeAuto {
if ratio := m.memMagnif(); ratio != 0 {
newCap := calcRatio(m.mu.limit, ratio)
capacity = min(capacity, newCap)
}
}
avoidSize := max(
0,
m.heapController.heapAlloc.Load()+m.heapController.memOffHeap.Load()-m.avoidance.heapTracked.Load(), // out-of-control size
m.mu.limit-capacity,
)
m.avoidance.size.Store(avoidSize)
if delta := m.allocated() - m.limit() + avoidSize; delta > 0 && m.awaitFree.pool.allocated() > 0 {
reclaimed := int64(0)
poolReleased := int64(0)
for i := range len(m.awaitFree.budget.shards) {
idx := (m.avoidance.awaitFreeBudgetKickOutIdx + uint64(i) + 1) & m.awaitFree.budget.sizeMask
b := &m.awaitFree.budget.shards[idx]
if b.Capacity.Load() > 0 && b.TryLock() {
x := delta - reclaimed
x = min(x, b.Capacity.Load())
b.Capacity.Add(-x)
reclaimed += x
b.Unlock()
}
if reclaimed >= delta {
m.avoidance.awaitFreeBudgetKickOutIdx = idx
break
}
}
if reclaimed > 0 {
m.awaitFree.pool.mu.Lock()
m.awaitFree.pool.doRelease(reclaimed) // release even if `reclaimed` is 0
poolReleased = m.awaitFree.pool.mu.budget.release()
m.awaitFree.pool.mu.Unlock()
}
if poolReleased > 0 {
m.release(poolReleased)
atomic.AddUint64(&m.mu.released, uint64(poolReleased))
}
}
}
func (m *MemArbitrator) weakWake() {
m.notifer.WeakWake()
}
func (m *MemArbitrator) wake() {
m.notifer.Wake()
}
func (m *MemArbitrator) updatePoolMediumCapacity(utimeMilli int64) {
s := &m.poolAllocStats
const maxNum = int64(len(s.timedMap))
const maxDur = maxNum - defRedundancy
{
s.RLock()
tsAlign := utimeMilli / kilo / defUpdateMemConsumedTimeAlignSec
tar1 := &s.timedMap[(maxNum+tsAlign-1)%maxNum]
tar2 := &s.timedMap[tsAlign%maxNum]
if ts := tar1.tsAlign.Load(); ts <= tsAlign-maxDur || ts > tsAlign {
tar1 = nil
}
if ts := tar2.tsAlign.Load(); ts <= tsAlign-maxDur || ts > tsAlign {
tar2 = nil
}
total := uint32(0)
if tar1 != nil {
tar1.RLock()
total += tar1.num.Add(0)
}
if tar2 != nil {
tar2.RLock()
total += tar2.num.Add(0)
}
if total != 0 {
expect := max(1, (total+1)/2)
cnt := uint32(0)
index := 0
for i := range defServerlimitMinUnitNum {
if tar1 != nil {
cnt += tar1.slot[i]
}
if tar2 != nil {
cnt += tar2.slot[i]
}
if cnt >= expect {
index = i
break
}
}
res := s.PoolAllocUnit * int64(index+1)
s.mediumQuota.Store(res)
}
if tar1 != nil {
tar1.RUnlock()
}
if tar2 != nil {
tar2.RUnlock()
}
s.RUnlock()
}
m.tryStorePoolMediumCapacity(utimeMilli, m.poolMediumQuota())
}
func (m *MemArbitrator) tryStorePoolMediumCapacity(utimeMilli int64, capacity int64) bool {
if capacity == 0 {
return false
}
if lastState := m.lastMemState(); lastState == nil ||
(m.poolAllocStats.lastUpdateUtimeMilli.Load()+defStorePoolMediumCapDurilli <= utimeMilli &&
lastState.PoolMediumCap != capacity) {
var memState *RuntimeMemStateV1
if lastState != nil {
s := *lastState // copy
s.PoolMediumCap = capacity
memState = &s
} else {
memState = &RuntimeMemStateV1{
Version: 1,
PoolMediumCap: capacity,
}
}
_ = m.recordMemState(memState, "new root pool medium cap")
m.poolAllocStats.lastUpdateUtimeMilli.Store(utimeMilli)
return true
}
return false
}
func (m *MemArbitrator) poolMediumQuota() int64 {
return m.poolAllocStats.mediumQuota.Load()
}
// SuggestPoolInitCap returns the suggested initial capacity for the pool
func (m *MemArbitrator) SuggestPoolInitCap() int64 {
return m.poolMediumQuota()
}
func (m *MemArbitrator) updateMemMagnification(utimeMilli int64) (updatedPreProf *memProfile) {
const maxNum = int64(len(m.heapController.timedMemProfile))
curTsAlign := utimeMilli / kilo / defUpdateMemMagnifUtimeAlign
profs := &m.heapController.timedMemProfile
cur := &profs[curTsAlign%maxNum]
if cur.tsAlign < curTsAlign {
{ // update previous record
preTs := curTsAlign - 1
preIdx := (maxNum + preTs) % maxNum
pre := &profs[preIdx]
pre.ratio = 0
if pre.tsAlign == preTs && pre.quota > 0 {
if pre.heap > 0 {
pre.ratio = calcRatio(pre.heap, pre.quota)
}
updatedPreProf = pre
}
}
v := int64(0)
// check the memory profile in the last 60s
for _, tsAlign := range []int64{curTsAlign - 2, curTsAlign - 1} {
tar := &profs[(maxNum+tsAlign)%maxNum]
if tar.tsAlign != tsAlign ||
tar.heap >= m.oomRisk() { // calculate the magnification only when the heap is safe
v = 0
break
}
if tar.ratio <= 0 {
break // if any record is not valid,
}
v = max(v, tar.ratio)
}
updated := false
var oriRatio, newRatio int64
if v != 0 && m.avoidance.memMagnif.TryLock() {
if oriRatio = m.memMagnif(); oriRatio != 0 && v < oriRatio-10 /* 1 percent */ {
newRatio = (oriRatio + v) / 2
if newRatio <= kilo {
newRatio = 0
}
m.doSetMemMagnif(newRatio)
updated = true
}
m.avoidance.memMagnif.Unlock()
}
if updated {
m.actions.Info("Update mem quota magnification ratio",
zap.Int64("ori-ratio(‰)", oriRatio),
zap.Int64("new-ratio(‰)", newRatio),
)
if lastMemState := m.lastMemState(); lastMemState != nil && newRatio < lastMemState.Magnif {
memState := RuntimeMemStateV1{
Version: 1,
Magnif: newRatio,
PoolMediumCap: m.poolMediumQuota(),
}
_ = m.recordMemState(&memState, "new magnification ratio")
}
}
*cur = memProfile{
tsAlign: curTsAlign,
startUtimeMilli: utimeMilli,
}
}
if cur.tsAlign == curTsAlign {
if ut := m.heapController.lastGC.utime.Load(); curTsAlign == ut/1e9/defUpdateMemMagnifUtimeAlign {
cur.heap = max(cur.heap, m.heapController.lastGC.heapAlloc.Load())
}
if blockedSize, utimeSec := m.lastBlockedAt(); utimeSec/defUpdateMemMagnifUtimeAlign == curTsAlign {
cur.quota = max(cur.quota, blockedSize)
}
}
return
}
func (m *MemArbitrator) doSetMemMagnif(ratio int64) {
m.avoidance.memMagnif.ratio.Store(ratio)
}
func (m *MemArbitrator) memMagnif() int64 {
return m.avoidance.memMagnif.ratio.Load()
}
func (m *MemArbitrator) awaitFreePoolCap() int64 {
if m.awaitFree.pool == nil {
return 0
}
return m.awaitFree.pool.capacity()
}
type memPoolQuotaUsage struct{ trackedHeap, quota int64 }
func (m *MemArbitrator) awaitFreePoolUsed() (res memPoolQuotaUsage) {
for i := range m.awaitFree.budget.shards {
if d := m.awaitFree.budget.shards[i].Used.Load(); d > 0 {
res.quota += d
}
if d := m.awaitFree.budget.shards[i].HeapInuse.Load(); d > 0 {
res.trackedHeap += d
}
}
atomic.StoreInt64(&m.awaitFree.lastQuotaUsage.trackedHeap, res.trackedHeap)
atomic.StoreInt64(&m.awaitFree.lastQuotaUsage.quota, res.quota)
return
}
func (m *MemArbitrator) executeTick(utimeMilli int64) bool { // exec batch tasks every 1s
if m.atMemRisk() { // skip if oom check is running because mem state is not safe
return false
}
if m.tickTask.lastTickUtimeMilli.Load()+defTickDurMilli > utimeMilli {
return false
}
m.tickTask.Lock()
defer m.tickTask.Unlock()
m.tickTask.lastTickUtimeMilli.Store(utimeMilli)
// mem magnification
if updatedPreProf := m.updateMemMagnification(utimeMilli); updatedPreProf != nil {
pre := updatedPreProf
profile := m.recordDebugProfile()
profile.append(
zap.Int64("last-blocked-heap", pre.heap), zap.Int64("last-blocked-quota", pre.quota),
zap.Int64("last-magnification-ratio(‰)", pre.ratio),
zap.Time("last-prof-start-time", time.UnixMilli(pre.startUtimeMilli)),
)
m.actions.Info("Mem profile timeline",
profile.fields[:profile.n]...,
)
}
// suggest pool cap
m.updatePoolMediumCapacity(utimeMilli)
// shrink mem profile cache
m.shrinkDigestProfile(utimeMilli/kilo, m.digestProfileCache.limit, m.digestProfileCache.limit/2)
return true
}
func (d *DebugFields) append(f ...zap.Field) {
n := min(len(f), len(d.fields)-d.n)
for i := range n {
d.fields[d.n] = f[i]
d.n++
}
}
func (m *MemArbitrator) recordDebugProfile() (f DebugFields) {
taskNumByMode := m.TaskNumByPattern()
memMagnif := m.memMagnif()
if memMagnif == 0 {
memMagnif = -1
}
f.append(
zap.Int64("heap-inuse", m.heapController.heapInuse.Load()),
zap.Int64("heap-alloc", m.heapController.heapAlloc.Load()),
zap.Int64("mem-off-heap", m.heapController.memOffHeap.Load()),
zap.Int64("mem-inuse", m.heapController.memInuse.Load()),
zap.Int64("hard-limit", m.mu.limit),
zap.Int64("quota-allocated", m.allocated()),
zap.Int64("quota-softlimit", m.softLimit()),
zap.Int64("mem-magnification-ratio(‰)", memMagnif),
zap.Int64("root-pool-num", m.RootPoolNum()),
zap.Int64("awaitfree-pool-cap", m.awaitFreePoolCap()),
zap.Int64("awaitfree-pool-used", atomic.LoadInt64(&m.awaitFree.lastQuotaUsage.quota)),
zap.Int64("awaitfree-pool-heapinuse", atomic.LoadInt64(&m.awaitFree.lastQuotaUsage.trackedHeap)),
zap.Int64("tracked-heapinuse", m.avoidance.heapTracked.Load()),
zap.Int64("out-of-control", m.avoidance.size.Load()),
zap.Int64("reserved-buffer", m.buffer.size.Load()),
zap.Int64("task-num", m.TaskNum()),
zap.Int64("task-priority-low", taskNumByMode[ArbitrationPriorityLow]),
zap.Int64("task-priority-medium", taskNumByMode[ArbitrationPriorityMedium]),
zap.Int64("task-priority-high", taskNumByMode[ArbitrationPriorityHigh]),
zap.Int64("pending-alloc-size", m.WaitingAllocSize()),
zap.Int64("digest-cache-num", m.digestProfileCache.num.Load()),
)
if memRisk := m.heapController.memRisk.start.Load(); memRisk != 0 {
f.append(zap.Time("mem-risk-start", time.Unix(0, memRisk)))
}
return
}
// HandleRuntimeStats handles the runtime memory statistics
func (m *MemArbitrator) HandleRuntimeStats(s RuntimeMemStats) {
// shrink fast alloc pool
m.tryShrinkAwaitFreePool(defPoolReservedQuota, nowUnixMilli())
// update tracked mem stats
m.tryUpdateTrackedMemStats(nowUnixMilli())
// set runtime mem stats & update avoidance size
m.trySetRuntimeMemStats(s)
m.executeTick(nowUnixMilli())
m.weakWake()
}
func (m *MemArbitrator) tryUpdateTrackedMemStats(utimeMilli int64) bool {
if m.avoidance.heapTracked.lastUpdateUtimeMilli.Load()+defTrackMemStatsDurMilli <= utimeMilli {
m.updateTrackedHeapStats()
return true
}
return false
}
func (m *MemArbitrator) updateTrackedHeapStats() {
totalTrackedHeap := int64(0)
if m.entryMap.contextCache.num.Load() != 0 {
maxMemUsed := int64(0)
m.entryMap.contextCache.Range(func(_, value any) bool {
e := value.(*rootPoolEntry)
if e.notRunning() {
return true
}
if ctx := e.ctx.Load(); ctx.available() {
if memUsed := ctx.arbitrateHelper.HeapInuse(); memUsed > 0 {
totalTrackedHeap += memUsed
maxMemUsed = max(maxMemUsed, memUsed)
}
}
return true
})
if m.buffer.size.Load() < maxMemUsed {
m.tryToUpdateBuffer(maxMemUsed, 0, m.UnixTimeSec.Load())
}
}
totalTrackedHeap += m.awaitFreePoolUsed().trackedHeap
m.avoidance.heapTracked.Store(totalTrackedHeap)
m.avoidance.heapTracked.lastUpdateUtimeMilli.Store(nowUnixMilli())
}
func (m *MemArbitrator) tryShrinkAwaitFreePool(minRemain int64, utimeMilli int64) bool {
if m.awaitFree.lastShrinkUtimeMilli.Load()+defAwaitFreePoolShrinkDurMilli <= utimeMilli {
m.shrinkAwaitFreePool(minRemain, utimeMilli)
return true
}
return false
}
func (m *MemArbitrator) shrinkAwaitFreePool(minRemain int64, utimeMilli int64) {
if m.awaitFree.pool.allocated() <= 0 {
return
}
poolReleased := int64(0)
reclaimed := int64(0)
for i := range m.awaitFree.budget.shards {
b := &m.awaitFree.budget.shards[i]
if used := b.Used.Load(); used > 0 {
if b.Capacity.Load()-(used+minRemain) >= b.Pool.allocAlignSize && b.TryLock() {
if used = b.Used.Load(); used > 0 {
toReclaim := b.Capacity.Load() - (used + minRemain)
if toReclaim >= b.Pool.allocAlignSize {
b.Capacity.Add(-toReclaim)
reclaimed += toReclaim
}
}
b.Unlock()
}
} else {
if b.Capacity.Load() > 0 && b.LastUsedTimeSec*kilo+defAwaitFreePoolShrinkDurMilli <= utimeMilli && b.TryLock() {
if toReclaim := b.Capacity.Load(); b.Used.Load() <= 0 && toReclaim > 0 {
b.Capacity.Add(-toReclaim)
reclaimed += toReclaim
}
b.Unlock()
}
}
}
if reclaimed > 0 {
m.awaitFree.pool.mu.Lock()
m.awaitFree.pool.doRelease(reclaimed)
poolReleased = m.awaitFree.pool.mu.budget.release()
m.awaitFree.pool.mu.Unlock()
}
if poolReleased > 0 {
m.release(poolReleased)
atomic.AddUint64(&m.mu.released, uint64(poolReleased))
atomic.AddInt64(&m.execMetrics.AwaitFree.Shrink, 1)
m.weakWake()
}
m.awaitFree.lastShrinkUtimeMilli.Store(utimeMilli)
}
func (m *MemArbitrator) isMemSafe() bool {
return m.heapController.memInuse.Load() < m.oomRisk()
}
func (m *MemArbitrator) isMemNoRisk() bool {
return m.heapController.memInuse.Load() < m.memRisk()
}
func (m *MemArbitrator) calcMemRisk() *RuntimeMemStateV1 {
if m.mu.softLimit.mode != SoftLimitModeAuto {
return nil
}
memState := RuntimeMemStateV1{
Version: 1,
LastRisk: LastRisk{
HeapAlloc: m.heapController.heapAlloc.Load(),
QuotaAlloc: m.allocated(),
},
PoolMediumCap: m.poolMediumQuota(),
}
if memState.LastRisk.QuotaAlloc == 0 || memState.LastRisk.HeapAlloc <= memState.LastRisk.QuotaAlloc {
return nil
}
memState.Magnif = calcRatio(memState.LastRisk.HeapAlloc, memState.LastRisk.QuotaAlloc) + 100 /* 10 percent */
if p := m.lastMemState(); p != nil {
memState.Magnif = max(memState.Magnif, p.Magnif)
}
return &memState
}
// return `true` is memory state is safe
func (m *MemArbitrator) handleMemIssues() (isSafe bool) {
if m.atMemRisk() {
gcExecuted := m.tryRuntimeGC()
if !gcExecuted {
m.refreshRuntimeMemStats()
}
if m.isMemNoRisk() {
m.updateTrackedHeapStats()
m.updateAvoidSize() // no need to refresh runtime mem stats
{ // warning
profile := m.recordDebugProfile()
m.actions.Info("Memory is safe", profile.fields[:profile.n]...)
}
m.setMemSafe()
return true
}
m.doReclaimNonBlockingTasks()
m.handleMemRisk(gcExecuted)
return false
} else if !m.isMemSafe() {
m.doReclaimNonBlockingTasks()
m.intoMemRisk()
return false
}
return true
}
func (m *MemArbitrator) innerTime() time.Time {
if m.debug.now != nil {
return m.debug.now()
}
return now()
}
func (m *MemArbitrator) handleMemRisk(gcExecuted bool) {
now := m.innerTime()
oomRisk := m.heapController.memInuse.Load() > m.limit()
dur := now.Sub(m.heapController.memRisk.lastMemStats.startTime)
if !oomRisk && dur < defHeapReclaimCheckDuration {
return
}
heapUseBPS := int64(0)
if dur > 0 {
heapFrees := m.heapController.heapTotalFree.Load() - m.heapController.memRisk.lastMemStats.heapTotalFree
heapUseBPS = int64(float64(heapFrees) / dur.Seconds())
}
if oomRisk || memHangRisk(heapUseBPS, m.minHeapFreeBPS(), now, m.heapController.memRisk.startTime) {
m.intoOOMRisk()
memToReclaim := m.heapController.memInuse.Load() - m.memRisk()
{ // warning
profile := m.recordDebugProfile()
profile.append(
zap.Float64("heap-use-speed(MiB/s)", float64(heapUseBPS*100/byteSizeMB)/100),
zap.Float64("required-speed(MiB/s)", float64(m.minHeapFreeBPS())/float64(byteSizeMB)),
zap.Int64("quota-to-reclaim", max(0, memToReclaim)),
)
m.actions.Warn("`OOM RISK`: try to `KILL` running root pool", profile.fields[:profile.n]...)
}
if newKillNum, reclaiming := m.killTopnEntry(memToReclaim); newKillNum != 0 {
m.heapController.memRisk.startTime = m.innerTime() // restart oom check
m.heapController.memRisk.start.Store(m.heapController.memRisk.startTime.UnixNano())
{ // warning
profile := m.recordDebugProfile()
profile.append(
zap.Int64("pool-under-kill-num", m.underKill.num),
zap.Int("new-kill-num", newKillNum),
zap.Int64("quota-under-reclaim", reclaiming),
zap.Int64("rest-quota-to-reclaim", max(0, memToReclaim-reclaiming)),
)
m.actions.Warn("Restart runtime memory check", profile.fields[:profile.n]...)
}
} else {
underKillNum := 0
for _, entry := range m.underKill.entries {
if !entry.arbitratorMu.underKill.fail {
underKillNum++
}
}
if underKillNum == 0 {
forceKill := 0
for { // make all tasks success
entry := m.frontTaskEntry()
if entry == nil {
break
}
// force kill
if ctx := entry.ctx.Load(); ctx.available() {
ctx.stop(ArbitratorOOMRiskKill)
atomic.AddInt64(&m.execMetrics.Risk.OOMKill[entry.ctx.memPriority], 1)
forceKill++
if m.removeTask(entry) {
entry.windUp(0, ArbitrateFail)
}
}
}
if forceKill != 0 {
profile := m.recordDebugProfile()
profile.append(
zap.Int("kill-awaiting-num", forceKill),
zap.Int64("pool-under-kill-num", m.underKill.num),
zap.Int64("quota-under-reclaim", reclaiming),
zap.Int64("rest-quota-to-reclaim", max(0, memToReclaim-reclaiming)),
)
m.actions.Warn("No more running root pool can be killed to resolve `OOM RISK`; KILL all awaiting tasks;",
profile.fields[:profile.n]...,
)
} else {
profile := m.recordDebugProfile()
profile.append(
zap.Int64("pool-under-kill-num", m.underKill.num),
zap.Int64("quota-under-reclaim", reclaiming),
zap.Int64("rest-quota-to-reclaim", max(0, memToReclaim-reclaiming)),
)
m.actions.Error("No more running root pool or awaiting task can be terminated to resolve `OOM RISK`",
profile.fields[:profile.n]...,
)
}
}
}
} else {
{ // warning
profile := m.recordDebugProfile()
profile.append(zap.Float64("heap-use-speed(MiB/s)",
float64(heapUseBPS*100/byteSizeMB)/100),
zap.Float64("required-speed(MiB/s)", float64(m.minHeapFreeBPS())/float64(byteSizeMB)))
m.actions.Warn("Runtime memory free speed meets require, start re-check", profile.fields[:profile.n]...)
}
}
if dur >= defHeapReclaimCheckDuration {
m.heapController.memRisk.lastMemStats.heapTotalFree = m.heapController.heapTotalFree.Load()
m.heapController.memRisk.lastMemStats.startTime = m.innerTime()
}
if !gcExecuted {
m.gc()
}
}
func memHangRisk(freeSpeedBPS, minHeapFreeSpeedBPS int64, now, startTime time.Time) bool {
return freeSpeedBPS < minHeapFreeSpeedBPS || now.Sub(startTime) > defHeapReclaimCheckMaxDuration
}
func (m *MemArbitrator) killTopnEntry(required int64) (newKillNum int, reclaimed int64) {
if m.underKill.num > 0 {
now := m.innerTime()
for uid, entry := range m.underKill.entries {
ctx := &entry.arbitratorMu.underKill
if ctx.fail {
continue
}
if deadline := ctx.startTime.Add(defKillCancelCheckTimeout); now.Compare(deadline) >= 0 {
m.actions.Error("Failed to `KILL` root pool due to timeout",
zap.Uint64("uid", uid),
zap.String("name", entry.pool.name),
zap.Int64("mem-to-reclaim", ctx.reclaim),
zap.String("mem-priority", entry.ctx.memPriority.String()),
zap.Time("start-time", ctx.startTime),
zap.Time("deadline", deadline),
)
ctx.fail = true
continue
}
reclaimed += ctx.reclaim
}
}
if reclaimed >= required {
return
}
for prio := minArbitrationPriority; prio < maxArbitrationPriority; prio++ {
for pos := m.entryMap.maxQuotaShardIndex - 1; pos >= m.entryMap.minQuotaShardIndexToCheck; pos-- {
for uid, entry := range m.entryMap.quotaShards[prio][pos].entries {
if entry.arbitratorMu.underKill.start || entry.notRunning() {
continue
}
if ctx := entry.ctx.Load(); ctx.available() {
memoryUsed := ctx.arbitrateHelper.HeapInuse()
if memoryUsed <= 0 {
continue
}
m.addUnderKill(entry, memoryUsed, m.innerTime())
reclaimed += memoryUsed
ctx.stop(ArbitratorOOMRiskKill)
newKillNum++
atomic.AddInt64(&m.execMetrics.Risk.OOMKill[prio], 1)
{ // warning
m.actions.Warn("Start to `KILL` root pool",
zap.Uint64("uid", uid),
zap.String("name", entry.pool.name),
zap.Int64("mem-used", memoryUsed),
zap.String("mem-priority", ctx.memPriority.String()),
zap.Int64("rest-to-reclaim", max(0, required-reclaimed)))
}
if m.removeTask(entry) {
{ // warning
m.actions.Warn("Make the mem quota subscription failed",
zap.Uint64("uid", uid), zap.String("name", entry.pool.name))
}
entry.windUp(0, ArbitrateFail)
}
if reclaimed >= required {
return
}
}
}
}
}
return
}
// LastRisk represents the last risk state of memory
type LastRisk struct {
HeapAlloc int64 `json:"heap"`
QuotaAlloc int64 `json:"quota"`
}
// RuntimeMemStateV1 represents the runtime memory state
type RuntimeMemStateV1 struct {
Version int64 `json:"version"`
LastRisk LastRisk `json:"last-risk"`
// magnification ratio of heap-alloc/quota
Magnif int64 `json:"magnif"`
// medium quota usage of root pools
PoolMediumCap int64 `json:"pool-medium-cap"`
// TODO: top-n profiles by digest
// topNProfiles [3][2]int64 `json:"top-n-profiles"`
}
func (m *MemArbitrator) recordMemState(s *RuntimeMemStateV1, reason string) error {
m.heapController.memStateRecorder.Lock()
defer m.heapController.memStateRecorder.Unlock()
m.heapController.memStateRecorder.lastMemState.Store(s)
if err := m.heapController.memStateRecorder.Store(s); err != nil {
atomic.AddInt64(&m.execMetrics.Action.RecordMemState.Fail, 1)
return err
}
atomic.AddInt64(&m.execMetrics.Action.RecordMemState.Succ, 1)
m.actions.Info("Record mem state",
zap.String("reason", reason),
zap.String("data", fmt.Sprintf("%+v", s)),
)
return nil
}
// GetAwaitFreeBudgets returns the concurrent budget shard by the given uid
func (m *MemArbitrator) GetAwaitFreeBudgets(uid uint64) *TrackedConcurrentBudget {
index := shardIndexByUID(uid, m.awaitFree.budget.sizeMask)
return &m.awaitFree.budget.shards[index]
}
func (m *MemArbitrator) initAwaitFreePool(allocAlignSize, shardNum int64) {
if allocAlignSize <= 0 {
allocAlignSize = defAwaitFreePoolAllocAlignSize
}
p := &ResourcePool{
name: "awaitfree-pool",
uid: 0,
limit: DefMaxLimit,
allocAlignSize: allocAlignSize,
maxUnusedBlocks: 0,
}
p.SetOutOfCapacityAction(func(s OutOfCapacityActionArgs) error {
if m.heapController.heapAlloc.Load() > m.oomRisk()-s.Request ||
m.allocated() > m.mu.limit-m.avoidance.size.Load()-s.Request {
atomic.StoreInt64(&m.execMu.blockedState.allocated, m.allocated())
atomic.StoreInt64(&m.execMu.blockedState.utimeSec, m.UnixTimeSec.Load())
atomic.AddInt64(&m.execMetrics.AwaitFree.Fail, 1)
return errArbitrateFailError
}
m.alloc(s.Request)
p.forceAddCap(s.Request)
atomic.AddInt64(&m.execMetrics.AwaitFree.Succ, 1)
return nil
})
m.awaitFree.pool = p
{
cnt := nextPow2(uint64(shardNum))
m.awaitFree.budget.shards = make([]TrackedConcurrentBudget, cnt)
m.awaitFree.budget.sizeMask = cnt - 1
for i := range m.awaitFree.budget.shards {
m.awaitFree.budget.shards[i].Pool = p
}
}
}
// ArbitratorStopReason represents the reason why the arbitrate helper will be stopped
type ArbitratorStopReason int
// ArbitrateHelperReason values
const (
ArbitratorOOMRiskKill ArbitratorStopReason = iota
ArbitratorWaitAverseCancel
ArbitratorStandardCancel
ArbitratorPriorityCancel
)
// String returns the string representation of the ArbitratorStopReason
func (r ArbitratorStopReason) String() (desc string) {
switch r {
case ArbitratorOOMRiskKill:
desc = "KILL(out-of-memory)"
case ArbitratorWaitAverseCancel:
desc = "CANCEL(out-of-quota & wait-averse)"
case ArbitratorStandardCancel:
desc = "CANCEL(out-of-quota & standard-mode)"
case ArbitratorPriorityCancel:
desc = "CANCEL(out-of-quota & priority-mode)"
}
return
}
// ArbitrateHelper is an interface for the arbitrate helper
type ArbitrateHelper interface {
Stop(ArbitratorStopReason) bool // kill by arbitrator only when meeting oom risk; cancel by arbitrator;
HeapInuse() int64 // track heap usage
Finish()
}
// ArbitrationContext represents the context & properties of the root pool
type ArbitrationContext struct {
arbitrateHelper ArbitrateHelper
cancelCh <-chan struct{}
PrevMaxMem int64
memQuotaLimit int64
memPriority ArbitrationPriority
stopped atomic.Bool
waitAverse bool
preferPrivilege bool
}
func (ctx *ArbitrationContext) available() bool {
if ctx != nil && ctx.arbitrateHelper != nil && !ctx.stopped.Load() {
return true
}
return false
}
func (ctx *ArbitrationContext) stop(reason ArbitratorStopReason) {
if ctx.stopped.Swap(true) {
return
}
ctx.arbitrateHelper.Stop(reason)
}
// NewArbitrationContext creates a new arbitration context
func NewArbitrationContext(
cancelCh <-chan struct{},
prevMaxMem, memQuotaLimit int64,
arbitrateHelper ArbitrateHelper,
memPriority ArbitrationPriority,
waitAverse bool,
preferPrivilege bool,
) *ArbitrationContext {
return &ArbitrationContext{
PrevMaxMem: prevMaxMem,
memQuotaLimit: memQuotaLimit,
cancelCh: cancelCh,
arbitrateHelper: arbitrateHelper,
memPriority: memPriority,
waitAverse: waitAverse,
preferPrivilege: preferPrivilege,
}
}
// NumByPattern represents the number of tasks by 4 pattern: priority(low, medium, high), wait-averse
type NumByPattern [maxArbitrateMode]int64
// TaskNumByPattern returns the number of tasks by pattern and there may be overlap
func (m *MemArbitrator) TaskNumByPattern() (res NumByPattern) {
for i := minArbitrationPriority; i < maxArbitrationPriority; i++ {
res[i] = m.taskNumByPriority(i)
}
res[ArbitrationWaitAverse] = m.taskNumOfWaitAverse()
return
}
// ConsumeQuotaFromAwaitFreePool consumes quota from the awaitfree-pool by the given uid
func (m *MemArbitrator) ConsumeQuotaFromAwaitFreePool(uid uint64, req int64) bool {
return m.GetAwaitFreeBudgets(uid).ConsumeQuota(m.UnixTimeSec.Load(), req) == nil
}
// ConsumeQuota consumes quota from the concurrent budget
// req > 0: alloc quota; try to pull from upstream;
// req <= 0: release quota
func (b *ConcurrentBudget) ConsumeQuota(utimeSec int64, req int64) error {
if req > 0 {
if b.LastUsedTimeSec != utimeSec {
b.LastUsedTimeSec = utimeSec
}
if b.Used.Add(req) > b.Capacity.Load() {
if err := b.PullFromUpstream(); err != nil {
return err
}
}
} else {
b.Used.Add(req)
}
return nil
}
// ReportHeapInuseToAwaitFreePool reports the heap inuse to the awaitfree-pool by the given uid
func (m *MemArbitrator) ReportHeapInuseToAwaitFreePool(uid uint64, req int64) {
m.GetAwaitFreeBudgets(uid).ReportHeapInuse(req)
}
// ReportHeapInuse reports the heap inuse to the concurrent budget
// req > 0: consume
// req < 0: release
func (b *TrackedConcurrentBudget) ReportHeapInuse(req int64) {
b.HeapInuse.Add(req)
}
func (m *MemArbitrator) stop() bool {
m.controlMu.Lock()
defer m.controlMu.Unlock()
if !m.controlMu.running.Load() {
return false
}
m.controlMu.running.Store(false)
m.wake()
<-m.controlMu.finishCh
m.runOneRound()
return true
}
// AtMemRisk checks if the memory is under risk
func (m *MemArbitrator) AtMemRisk() bool {
return m.atMemRisk()
}
// AtOOMRisk checks if the memory is under risk
func (m *MemArbitrator) AtOOMRisk() bool {
return m.heapController.memRisk.oomRisk
}
func (m *MemArbitrator) atMemRisk() bool {
return m.heapController.memRisk.start.Load() != 0
}
func (m *MemArbitrator) intoOOMRisk() {
m.heapController.memRisk.oomRisk = true
atomic.AddInt64(&m.execMetrics.Risk.OOM, 1)
}
func (m *MemArbitrator) oomRisk() int64 {
return atomic.LoadInt64(&m.mu.threshold.oomRisk)
}
func (m *MemArbitrator) memRisk() int64 {
return atomic.LoadInt64(&m.mu.threshold.risk)
}
func (m *MemArbitrator) intoMemRisk() {
now := m.innerTime()
m.heapController.memRisk.startTime = now
m.heapController.memRisk.start.Store(now.UnixNano())
m.heapController.memRisk.lastMemStats.heapTotalFree = m.heapController.heapTotalFree.Load()
m.heapController.memRisk.lastMemStats.startTime = now
atomic.AddInt64(&m.execMetrics.Risk.Mem, 1)
{
profile := m.recordDebugProfile()
profile.append(zap.Int64("threshold", m.mu.threshold.oomRisk))
m.actions.Warn("Memory inuse reach threshold", profile.fields[:profile.n]...)
}
{ // GC
m.reclaimHeap()
}
if memState := m.calcMemRisk(); memState != nil {
const maxMagnif = kilo * 10
if memState.Magnif > maxMagnif {
// There may be extreme memory leak issues. It's recommended to set soft limit manually.
m.actions.Warn("Memory pressure is abnormally high",
zap.Int64("mem-magnification-ratio(‰)", memState.Magnif),
zap.Int64("upper-limit-ratio(‰)", maxMagnif))
memState.Magnif = maxMagnif
}
{
m.avoidance.memMagnif.Lock()
m.doSetMemMagnif(memState.Magnif)
m.avoidance.memMagnif.Unlock()
}
if err := m.recordMemState(memState, "oom risk"); err != nil {
m.actions.Error("Failed to save mem-risk", zap.Error(err))
}
}
if m.isMemNoRisk() {
m.wake()
}
}
func (m *MemArbitrator) setMemSafe() {
m.heapController.memRisk.start.Store(0)
m.heapController.memRisk.oomRisk = false
}
// Copyright 2018 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package memory
import (
"sync"
"time"
"github.com/pingcap/failpoint"
"github.com/pingcap/sysutil"
"github.com/pingcap/tidb/pkg/parser/terror"
"github.com/pingcap/tidb/pkg/util/cgroup"
"github.com/pingcap/tidb/pkg/util/logutil"
"github.com/shirou/gopsutil/v3/mem"
"go.uber.org/zap"
)
// MemTotal returns the total amount of RAM on this system
var MemTotal func() (uint64, error)
// MemUsed returns the total used amount of RAM on this system
var MemUsed func() (uint64, error)
// GetMemTotalIgnoreErr returns the total amount of RAM on this system/container. If error occurs, return 0.
func GetMemTotalIgnoreErr() uint64 {
if memTotal, err := MemTotal(); err == nil {
failpoint.Inject("GetMemTotalError", func(val failpoint.Value) {
if val, ok := val.(bool); val && ok {
memTotal = 0
}
})
return memTotal
}
return 0
}
// MemTotalNormal returns the total amount of RAM on this system in non-container environment.
func MemTotalNormal() (uint64, error) {
total, t := memLimit.get()
if time.Since(t) < 60*time.Second {
return total, nil
}
return memTotalNormal()
}
func memTotalNormal() (uint64, error) {
v, err := mem.VirtualMemory()
if err != nil {
return 0, err
}
memLimit.set(v.Total, time.Now())
return v.Total, nil
}
// MemUsedNormal returns the total used amount of RAM on this system in non-container environment.
func MemUsedNormal() (uint64, error) {
used, t := memUsage.get()
if time.Since(t) < 500*time.Millisecond {
return used, nil
}
v, err := mem.VirtualMemory()
if err != nil {
return 0, err
}
memUsage.set(v.Used, time.Now())
return v.Used, nil
}
type memInfoCache struct {
updateTime time.Time
mu *sync.RWMutex
mem uint64
}
func (c *memInfoCache) get() (memo uint64, t time.Time) {
c.mu.RLock()
defer c.mu.RUnlock()
memo, t = c.mem, c.updateTime
return
}
func (c *memInfoCache) set(memo uint64, t time.Time) {
c.mu.Lock()
defer c.mu.Unlock()
c.mem, c.updateTime = memo, t
}
// expiration time is 60s
var memLimit *memInfoCache
// expiration time is 500ms
var memUsage *memInfoCache
// expiration time is 500ms
// save the memory usage of the server process
var serverMemUsage *memInfoCache
// MemTotalCGroup returns the total amount of RAM on this system in container environment.
func MemTotalCGroup() (uint64, error) {
memo, t := memLimit.get()
if time.Since(t) < 60*time.Second {
return memo, nil
}
memo, err := cgroup.GetMemoryLimit()
if err != nil {
return memo, err
}
v, err := mem.VirtualMemory()
if err != nil {
return 0, err
}
memo = min(v.Total, memo)
memLimit.set(memo, time.Now())
return memo, nil
}
// MemUsedCGroup returns the total used amount of RAM on this system in container environment.
func MemUsedCGroup() (uint64, error) {
memo, t := memUsage.get()
if time.Since(t) < 500*time.Millisecond {
return memo, nil
}
memo, err := cgroup.GetMemoryUsage()
if err != nil {
return memo, err
}
v, err := mem.VirtualMemory()
if err != nil {
return 0, err
}
memo = min(v.Used, memo)
memUsage.set(memo, time.Now())
return memo, nil
}
// it is for test and init.
func init() {
if cgroup.InContainer() {
MemTotal = MemTotalCGroup
MemUsed = MemUsedCGroup
sysutil.RegisterGetMemoryCapacity(MemTotalCGroup)
} else {
MemTotal = MemTotalNormal
MemUsed = MemUsedNormal
}
memLimit = &memInfoCache{
mu: &sync.RWMutex{},
}
memUsage = &memInfoCache{
mu: &sync.RWMutex{},
}
serverMemUsage = &memInfoCache{
mu: &sync.RWMutex{},
}
_, err := MemTotal()
terror.MustNil(err)
_, err = MemUsed()
terror.MustNil(err)
}
// InitMemoryHook initializes the memory hook.
// It is to solve the problem that tidb cannot read cgroup in the systemd.
// so if we are not in the container, we compare the cgroup memory limit and the physical memory,
// the cgroup memory limit is smaller, we use the cgroup memory hook.
func InitMemoryHook() error {
if cgroup.InContainer() {
logutil.BgLogger().Info("use cgroup memory hook because TiDB is in the container")
return nil
}
cgroupValue, err := cgroup.GetMemoryLimit()
if err != nil {
return err
}
physicalValue, err := memTotalNormal()
if err != nil {
return err
}
if physicalValue > cgroupValue && cgroupValue != 0 {
MemTotal = MemTotalCGroup
MemUsed = MemUsedCGroup
sysutil.RegisterGetMemoryCapacity(MemTotalCGroup)
logutil.BgLogger().Info("use cgroup memory hook", zap.Int64("cgroupMemorySize", int64(cgroupValue)), zap.Int64("physicalMemorySize", int64(physicalValue)))
} else {
logutil.BgLogger().Info("use physical memory hook", zap.Int64("cgroupMemorySize", int64(cgroupValue)), zap.Int64("physicalMemorySize", int64(physicalValue)))
}
_, err = MemTotal()
if err != nil {
return err
}
_, err = MemUsed()
return err
}
// InstanceMemUsed returns the memory usage of this TiDB server
func InstanceMemUsed() (uint64, error) {
used, t := serverMemUsage.get()
if time.Since(t) < 500*time.Millisecond {
return used, nil
}
var memoryUsage uint64
instanceStats := ReadMemStats()
memoryUsage = instanceStats.HeapAlloc
serverMemUsage.set(memoryUsage, time.Now())
return memoryUsage, nil
}
// Copyright 2018 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package memory
import (
"runtime"
"sync/atomic"
"time"
"github.com/pingcap/failpoint"
)
var stats atomic.Pointer[globalMstats]
// ReadMemInterval controls the interval to read memory stats.
const ReadMemInterval = 300 * time.Millisecond
// ReadMemStats read the mem stats from runtime.ReadMemStats
func ReadMemStats() (memStats *runtime.MemStats) {
s := stats.Load()
if s != nil {
memStats = &s.m
} else {
memStats = ForceReadMemStats()
}
failpoint.Inject("ReadMemStats", func(val failpoint.Value) {
injectedSize := val.(int)
memStats = &runtime.MemStats{HeapInuse: memStats.HeapInuse + uint64(injectedSize)}
})
return
}
// ForceReadMemStats is to force read memory stats.
func ForceReadMemStats() *runtime.MemStats {
var g globalMstats
g.ts = time.Now()
runtime.ReadMemStats(&g.m)
stats.Store(&g)
return &g.m
}
type globalMstats struct {
ts time.Time
m runtime.MemStats
}
// Copyright 2025 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package memory
import (
"fmt"
"sync"
"sync/atomic"
)
var resourcePoolID = int64(-1)
// DefPoolAllocAlignSize indicates the default allocation alignment size
const DefPoolAllocAlignSize int64 = 10 * 1024
// DefMaxUnusedBlocks indicates the default maximum unused blocks*alloc-align-size of the resource pool
const DefMaxUnusedBlocks int64 = 10
// ResourcePool manages a set of resource quota
type ResourcePool struct {
actions PoolActions // actions to be taken when the pool meets certain conditions
parentMu struct{ prevChildren, nextChildren *ResourcePool } // accessible by parent pool only
name string // name of pool
mu struct {
headChildren *ResourcePool // head of the children pools chain
budget Budget // budget of the resource quota
allocated int64 // allocated bytes of the resource quota
maxAllocated int64 // maximum allocated bytes
numChildren int // number of children pools
sync.Mutex
stopped bool
}
uid uint64 // unique ID of the resource pool: uid <= 0 indicates that it is a internal pool
reserved int64 // quota from other sources
limit int64 // limit of the resource quota
allocAlignSize int64 // each allocation size must be a multiple of it
maxUnusedBlocks int64 // max unused-blocks*alloc-align size before shrinking budget
}
// NoteActionState wraps the arguments of a note action
type NoteActionState struct {
Pool *ResourcePool
Allocated int64
}
// NoteAction represents the action to be taken when the allocated size exceeds the threshold
type NoteAction struct {
CB func(NoteActionState)
Threshold int64
}
// OutOfCapacityActionArgs wraps the arguments for out of capacity action
type OutOfCapacityActionArgs struct {
Pool *ResourcePool
Request int64
}
// PoolActions represents the actions to be taken when the resource pool meets certain conditions
type PoolActions struct {
OutOfCapacityActionCB func(OutOfCapacityActionArgs) error // Called when the resource pool is out of capacity
OutOfLimitActionCB func(*ResourcePool) error // Called when the resource pool is out of limit
NoteAction NoteAction
}
// ResourcePoolState represents the state of a resource pool
type ResourcePoolState struct {
Name string
Level int
ID uint64
ParentID uint64
Used int64
Reserved int64
Budget int64
}
// Traverse the resource pool and calls the callback function
func (p *ResourcePool) Traverse(stateCb func(ResourcePoolState) error) error {
return p.traverse(0, stateCb)
}
func (p *ResourcePool) traverse(level int, stateCb func(ResourcePoolState) error) error {
p.mu.Lock()
if p.mu.stopped {
p.mu.Unlock()
return nil
}
monitorState := ResourcePoolState{
Level: level,
Name: p.name,
ID: p.uid,
ParentID: p.mu.budget.pool.UID(),
Used: p.mu.allocated,
Reserved: p.reserved,
Budget: p.mu.budget.cap,
}
children := make([]*ResourcePool, 0, p.mu.numChildren)
for c := p.mu.headChildren; c != nil; c = c.parentMu.nextChildren {
children = append(children, c)
}
p.mu.Unlock()
if err := stateCb(monitorState); err != nil {
return err
}
for _, c := range children {
if err := c.traverse(level+1, stateCb); err != nil {
return err
}
}
return nil
}
// NewResourcePoolDefault creates a new resource pool
func NewResourcePoolDefault(
name string,
allocAlignSize int64,
) *ResourcePool {
return NewResourcePool(
newPoolUID(),
name,
0,
allocAlignSize,
DefMaxUnusedBlocks,
PoolActions{},
)
}
func newPoolUID() uint64 {
return uint64(atomic.AddInt64(&resourcePoolID, -1))
}
// NewResourcePool creates a new resource pool
func NewResourcePool(
uid uint64,
name string,
limit int64,
allocAlignSize int64,
maxUnusedBlocks int64,
actions PoolActions,
) *ResourcePool {
if allocAlignSize <= 0 {
allocAlignSize = DefPoolAllocAlignSize
}
if limit <= 0 {
limit = DefMaxLimit
}
m := &ResourcePool{
name: name,
uid: uid,
limit: limit,
allocAlignSize: allocAlignSize,
actions: actions,
maxUnusedBlocks: maxUnusedBlocks,
}
return m
}
// SetAllocAlignSize sets the allocation alignment size and returns the original value of allocAlignSize
func (p *ResourcePool) SetAllocAlignSize(size int64) (ori int64) {
p.mu.Lock()
ori = p.allocAlignSize
p.allocAlignSize = size
p.mu.Unlock()
return
}
// NewResourcePoolInheritWithLimit creates a new resource pool inheriting from the parent pool
func (p *ResourcePool) NewResourcePoolInheritWithLimit(
name string, limit int64,
) *ResourcePool {
return NewResourcePool(
newPoolUID(),
name,
limit,
p.allocAlignSize,
p.maxUnusedBlocks,
p.actions,
)
}
// StartNoReserved creates a new resource pool with no reserved quota
func (p *ResourcePool) StartNoReserved(pool *ResourcePool) {
p.Start(pool, 0)
}
// UID returns the unique ID of the resource pool
func (p *ResourcePool) UID() uint64 {
if p == nil {
return 0
}
return p.uid
}
// Start starts the resource pool with a parent pool and reserved quota
func (p *ResourcePool) Start(parentPool *ResourcePool, reserved int64) {
if p.mu.allocated != 0 {
panic(fmt.Errorf("%s: started with %d bytes left over", p.name, p.mu.allocated))
}
if p.mu.budget.pool != nil {
panic(fmt.Errorf("%s: already started with pool %s", p.name, p.mu.budget.pool.name))
}
p.mu.allocated = 0
p.mu.maxAllocated = 0
p.mu.budget = parentPool.CreateBudget()
p.mu.stopped = false
p.reserved = reserved
if parentPool != nil {
parentPool.mu.Lock()
if s := parentPool.mu.headChildren; s != nil {
s.parentMu.prevChildren = p
p.parentMu.nextChildren = s
}
parentPool.mu.headChildren = p
parentPool.mu.numChildren++
parentPool.mu.Unlock()
}
}
// Name returns the name of the resource pool
func (p *ResourcePool) Name() string {
return p.name
}
// Limit returns the limit of the resource pool
func (p *ResourcePool) Limit() int64 {
return p.limit
}
// IsStopped checks if the resource pool is stopped
func (p *ResourcePool) IsStopped() (res bool) {
p.mu.Lock()
res = p.mu.stopped
p.mu.Unlock()
return
}
// Stop stops the resource pool and releases the budget & returns the quota released
func (p *ResourcePool) Stop() (released int64) {
p.mu.Lock()
p.mu.stopped = true
if p.mu.allocated != 0 {
p.doRelease(p.mu.allocated)
}
released = p.mu.budget.cap
p.releaseBudget()
if parent := p.mu.budget.pool; parent != nil {
func() {
parent.mu.Lock()
defer parent.mu.Unlock()
prev, next := p.parentMu.prevChildren, p.parentMu.nextChildren
if parent.mu.headChildren == p {
parent.mu.headChildren = next
}
if prev != nil {
prev.parentMu.nextChildren = next
}
if next != nil {
next.parentMu.prevChildren = prev
}
parent.mu.numChildren--
}()
}
p.mu.budget.pool = nil
p.mu.Unlock()
return released
}
// MaxAllocated returns the maximum allocated bytes
func (p *ResourcePool) MaxAllocated() (res int64) {
p.mu.Lock()
res = p.mu.maxAllocated
p.mu.Unlock()
return
}
// Allocated returns the allocated bytes
func (p *ResourcePool) Allocated() (res int64) {
p.mu.Lock()
res = p.mu.allocated
p.mu.Unlock()
return
}
// ApproxAllocated returns the approximate allocated bytes
func (p *ResourcePool) ApproxAllocated() int64 {
return p.allocated()
}
// Budget represents the budget of a resource pool
type Budget struct {
pool *ResourcePool // source pool
cap int64 // capacity of the budget
used int64 // used bytes
explicitReserved int64 // explicit reserved size which can not be shrunk
}
// Used returns the used bytes of the budget
func (b *Budget) Used() int64 {
if b == nil {
return 0
}
return b.used
}
// Pool returns the resource pool of the budget
func (b *Budget) Pool() *ResourcePool {
if b == nil {
return nil
}
return b.pool
}
// Capacity returns the capacity of the budget
func (b *Budget) Capacity() int64 {
if b == nil {
return 0
}
return b.cap
}
func (b *Budget) available() int64 {
return b.cap - b.used
}
func (b *Budget) release() (reclaimed int64) {
reclaimed = b.available()
b.cap = b.used
return
}
// CreateBudget creates a new budget from the resource pool
func (p *ResourcePool) CreateBudget() Budget {
return Budget{pool: p}
}
// Reserve reserves the budget through the allocate aligned given size; update the explicit reserved size;
func (b *Budget) Reserve(request int64) error {
if b == nil {
return nil
}
minExtra := b.pool.roundSize(request)
if err := b.pool.allocate(minExtra); err != nil {
return err
}
b.cap += minExtra
b.explicitReserved += request
return nil
}
// Empty releases the used budget
func (b *Budget) Empty() {
if b == nil {
return
}
b.used = 0
if release := b.available() - b.pool.allocAlignSize; release > 0 {
b.pool.release(release)
b.cap -= release
}
}
// Clear releases the budget and resets
func (b *Budget) Clear() {
if b == nil {
return
}
release := b.cap
b.used = 0
b.cap = 0
if b.pool == nil {
return
}
if release > 0 {
b.pool.release(release)
}
}
func (b *Budget) resize(oldSz, newSz int64) error {
if b == nil {
return nil
}
delta := newSz - oldSz
switch {
case delta > 0:
return b.Grow(delta)
case delta < 0:
b.Shrink(-delta)
}
return nil
}
// ResizeTo resizes the budget to the new size
func (b *Budget) ResizeTo(newSz int64) error {
if b == nil {
return nil
}
if newSz == b.used {
return nil
}
return b.resize(b.used, newSz)
}
// Grow the budget by the given size
func (b *Budget) Grow(request int64) error {
if b == nil {
return nil
}
if extra := request - b.available(); extra > 0 {
minExtra := b.pool.roundSize(extra)
if err := b.pool.allocate(minExtra); err != nil {
return err
}
b.cap += minExtra
}
b.used += request
return nil
}
// Shrink the budget and reduce the given size
func (b *Budget) Shrink(delta int64) {
if b == nil || delta == 0 {
return
}
if b.used < delta {
delta = b.used
}
b.used -= delta
if b.pool == nil {
return
}
if release := b.available() - b.pool.allocAlignSize; release > 0 && (b.explicitReserved == 0 || b.used+b.pool.allocAlignSize > b.explicitReserved) {
b.pool.release(release)
b.cap -= release
}
}
func (p *ResourcePool) doAlloc(request int64) error {
if p.mu.allocated > p.limit-request {
if p.actions.OutOfLimitActionCB == nil {
return newBudgetExceededError("out of limit", p, request, p.mu.allocated, p.limit)
}
if err := p.actions.OutOfLimitActionCB(p); err != nil {
return err
}
}
// Check whether we need to request an increase of our budget.
if delta := request + p.mu.allocated - p.mu.budget.used - p.reserved; delta > 0 {
if err := p.increaseBudget(delta); err != nil {
return err
}
}
p.mu.allocated += request
if p.mu.maxAllocated < p.mu.allocated {
p.mu.maxAllocated = p.mu.allocated
}
return nil
}
// ExplicitReserve reserves the budget explicitly
func (p *ResourcePool) ExplicitReserve(request int64) (err error) {
p.mu.Lock()
err = p.mu.budget.Reserve(request)
p.mu.Unlock()
return
}
func (p *ResourcePool) allocate(request int64) error {
{
p.mu.Lock()
if err := p.doAlloc(request); err != nil {
p.mu.Unlock()
return err
}
p.mu.Unlock()
}
if p.actions.NoteAction.CB != nil {
if allocated := p.allocated(); allocated > p.actions.NoteAction.Threshold {
p.actions.NoteAction.CB(NoteActionState{
Pool: p,
Allocated: allocated,
})
}
}
return nil
}
func (p *ResourcePool) allocated() int64 {
return atomic.LoadInt64(&p.mu.allocated)
}
func (p *ResourcePool) capacity() int64 {
return p.mu.budget.cap
}
// ApproxAvailable returns the approximate available budget
func (p *ResourcePool) ApproxAvailable() int64 {
return p.mu.budget.available()
}
// ApproxCap returns the approximate capacity of the resource pool
func (p *ResourcePool) ApproxCap() int64 {
return p.capacity()
}
// Capacity returns the capacity of the resource pool
func (p *ResourcePool) Capacity() (res int64) {
p.mu.Lock()
res = p.capacity()
p.mu.Unlock()
return
}
// SetLimit sets the limit of the resource pool
func (p *ResourcePool) SetLimit(newLimit int64) {
p.mu.Lock()
p.limit = newLimit
p.mu.Unlock()
}
func (p *ResourcePool) release(sz int64) {
p.mu.Lock()
p.doRelease(sz)
p.mu.Unlock()
}
func (p *ResourcePool) doRelease(sz int64) {
if p.mu.allocated < sz {
sz = p.mu.allocated
}
p.mu.allocated -= sz
p.doAdjustBudget()
}
// SetOutOfCapacityAction sets the out of capacity action
// It is called when the resource pool is out of capacity
func (p *ResourcePool) SetOutOfCapacityAction(f func(OutOfCapacityActionArgs) error) {
p.mu.Lock()
p.actions.OutOfCapacityActionCB = f
p.mu.Unlock()
}
// SetOutOfLimitAction sets the out of limit action
// It is called when the resource pool is out of limit
func (p *ResourcePool) SetOutOfLimitAction(f func(*ResourcePool) error) {
p.mu.Lock()
p.actions.OutOfLimitActionCB = f
p.mu.Unlock()
}
func (p *ResourcePool) increaseBudget(request int64) error {
if p.mu.budget.pool == nil { // Root Pool
need := request - p.mu.budget.available()
if need <= 0 {
p.mu.budget.used += request
return nil
}
if p.actions.OutOfCapacityActionCB != nil {
if err := p.actions.OutOfCapacityActionCB(OutOfCapacityActionArgs{
Pool: p,
Request: need,
}); err != nil {
return err
}
p.mu.budget.used += request
return nil
}
return newBudgetExceededError("out of quota",
p,
request,
p.mu.budget.used,
p.mu.budget.cap,
)
}
return p.mu.budget.Grow(request)
}
func (p *ResourcePool) roundSize(sz int64) int64 {
alignSize := p.allocAlignSize
if alignSize <= 1 {
return sz
}
return (sz + alignSize - 1) / alignSize * alignSize
}
func (p *ResourcePool) releaseBudget() {
p.mu.budget.Clear()
}
// AdjustBudget adjusts the budget of the resource pool
func (p *ResourcePool) AdjustBudget() {
p.mu.Lock()
p.doAdjustBudget()
p.mu.Unlock()
}
func (p *ResourcePool) doAdjustBudget() {
needed := p.mu.allocated - p.reserved
if needed <= 0 {
needed = 0
} else {
needed = p.roundSize(needed)
}
if p.allocAlignSize*p.maxUnusedBlocks <= p.mu.budget.used-needed {
delta := p.mu.budget.used - needed
p.mu.budget.Shrink(delta)
}
}
func (p *ResourcePool) forceAddCap(c int64) {
if c == 0 {
return
}
p.mu.budget.cap += c
}
func newBudgetExceededError(
reason string,
root *ResourcePool,
requestedBytes int64, allocatedBytes int64, limitBytes int64,
) error {
return fmt.Errorf(
"resource pool `%s` meets `%s`: requested(%d) + allocated(%d) > limit(%d)",
root.name,
reason,
requestedBytes,
allocatedBytes,
limitBytes,
)
}
// Copyright 2018 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package memory
import (
"bytes"
"fmt"
"runtime"
"slices"
"strconv"
"sync"
"sync/atomic"
"time"
"github.com/pingcap/tidb/pkg/metrics"
"github.com/pingcap/tidb/pkg/util/sqlkiller"
atomicutil "go.uber.org/atomic"
)
// TrackMemWhenExceeds is the threshold when memory usage needs to be tracked.
const TrackMemWhenExceeds = 104857600 // 100MB
// DefMemQuotaQuery is default memory quota for query.
const DefMemQuotaQuery = 1073741824 // 1GB
// Process global variables for memory limit.
var (
ServerMemoryLimitOriginText = atomicutil.NewString("0")
ServerMemoryLimit = atomicutil.NewUint64(0)
ServerMemoryLimitSessMinSize = atomicutil.NewUint64(128 << 20)
QueryForceDisk = atomicutil.NewInt64(0)
TriggerMemoryLimitGC = atomicutil.NewBool(false)
MemoryLimitGCLast = atomicutil.NewTime(time.Time{})
MemoryLimitGCTotal = atomicutil.NewInt64(0)
)
// Tracker is used to track the memory usage during query execution.
// It contains an optional limit and can be arranged into a tree structure
// such that the consumption tracked by a Tracker is also tracked by
// its ancestors. The main idea comes from Apache Impala:
//
// https://github.com/cloudera/Impala/blob/cdh5-trunk/be/src/runtime/mem-tracker.h
//
// By default, memory consumption is tracked via calls to "Consume()", either to
// the tracker itself or to one of its descendents. A typical sequence of calls
// for a single Tracker is:
// 1. tracker.SetLabel() / tracker.SetActionOnExceed() / tracker.AttachTo()
// 2. tracker.Consume() / tracker.ReplaceChild() / tracker.BytesConsumed()
//
// NOTE: We only protect concurrent access to "bytesConsumed" and "children",
// that is to say:
// 1. Only "BytesConsumed()", "Consume()" and "AttachTo()" are thread-safe.
// 2. Other operations of a Tracker tree is not thread-safe.
//
// We have two limits for the memory quota: soft limit and hard limit.
// If the soft limit is exceeded, we will trigger the action that alleviates the
// speed of memory growth. The soft limit is hard-coded as `0.8*hard limit`.
// The actions that could be triggered are: AggSpillDiskAction.
//
// If the hard limit is exceeded, we will trigger the action that immediately
// reduces memory usage. The hard limit is set by the system variable `tidb_mem_query_quota`.
// The actions that could be triggered are: SpillDiskAction, SortAndSpillDiskAction, rateLimitAction,
// PanicOnExceed, globalPanicOnExceed, LogOnExceed.
type Tracker struct {
bytesLimit atomic.Pointer[bytesLimits]
actionMuForHardLimit actionMu
actionMuForSoftLimit actionMu
Killer *sqlkiller.SQLKiller
mu struct {
// The children memory trackers. If the Tracker is the Global Tracker, like executor.GlobalDiskUsageTracker,
// we wouldn't maintain its children in order to avoiding mutex contention.
children map[int][]*Tracker
sync.Mutex
}
parMu struct {
parent *Tracker // The parent memory tracker.
sync.Mutex
}
label int // Label of this "Tracker".
// following fields are used with atomic operations, so make them 64-byte aligned.
bytesConsumed int64 // Consumed bytes.
bytesReleased int64 // Released bytes.
maxConsumed atomicutil.Int64 // max number of bytes consumed during execution.
SessionID atomicutil.Uint64 // SessionID indicates the sessionID the tracker is bound.
IsRootTrackerOfSess bool // IsRootTrackerOfSess indicates whether this tracker is bound for session
isGlobal bool // isGlobal indicates whether this tracker is global tracker
}
type actionMu struct {
actionOnExceed ActionOnExceed
sync.Mutex
}
// EnableGCAwareMemoryTrack is used to turn on/off the GC-aware memory track
var EnableGCAwareMemoryTrack = atomicutil.NewBool(false)
// https://golang.google.cn/pkg/runtime/#SetFinalizer
// It is not guaranteed that a finalizer will run if the size of *obj is zero bytes.
type finalizerRef struct {
byte //nolint:unused
}
// softScale means the scale of the soft limit to the hard limit.
const softScale = 0.8
// bytesLimits holds limit config atomically.
type bytesLimits struct {
bytesHardLimit int64 // bytesHardLimit <= 0 means no limit, used for actionMuForHardLimit.
bytesSoftLimit int64 // bytesSoftLimit <= 0 means no limit, used for actionMuForSoftLimit.
}
var unlimitedBytesLimit = bytesLimits{
bytesHardLimit: -1,
bytesSoftLimit: -1,
}
var defaultQueryQuota = bytesLimits{
bytesHardLimit: DefMemQuotaQuery,
bytesSoftLimit: DefMemQuotaQuery * 8 / 10,
}
// MemUsageTop1Tracker record the use memory top1 session's tracker for kill.
var MemUsageTop1Tracker atomic.Pointer[Tracker]
// InitTracker initializes a memory tracker.
// 1. "label" is the label used in the usage string.
// 2. "bytesLimit <= 0" means no limit.
//
// For the common tracker, isGlobal is default as false
func InitTracker(t *Tracker, label int, bytesLimit int64, action ActionOnExceed) {
t.mu.children = nil
t.actionMuForHardLimit.actionOnExceed = action
t.actionMuForSoftLimit.actionOnExceed = nil
t.parMu.parent = nil
t.label = label
if bytesLimit <= 0 {
t.bytesLimit.Store(&unlimitedBytesLimit)
} else if bytesLimit == DefMemQuotaQuery {
t.bytesLimit.Store(&defaultQueryQuota)
} else {
t.bytesLimit.Store(&bytesLimits{
bytesHardLimit: bytesLimit,
bytesSoftLimit: int64(float64(bytesLimit) * softScale),
})
}
t.maxConsumed.Store(0)
t.isGlobal = false
}
// NewTracker creates a memory tracker.
// 1. "label" is the label used in the usage string.
// 2. "bytesLimit <= 0" means no limit.
//
// For the common tracker, isGlobal is default as false
func NewTracker(label int, bytesLimit int64) *Tracker {
t := &Tracker{
label: label,
}
t.bytesLimit.Store(&bytesLimits{
bytesHardLimit: bytesLimit,
bytesSoftLimit: int64(float64(bytesLimit) * softScale),
})
t.actionMuForHardLimit.actionOnExceed = &LogOnExceed{}
t.isGlobal = false
return t
}
// NewGlobalTracker creates a global tracker, its isGlobal is default as true
func NewGlobalTracker(label int, bytesLimit int64) *Tracker {
t := &Tracker{
label: label,
}
t.bytesLimit.Store(&bytesLimits{
bytesHardLimit: bytesLimit,
bytesSoftLimit: int64(float64(bytesLimit) * softScale),
})
t.actionMuForHardLimit.actionOnExceed = &LogOnExceed{}
t.isGlobal = true
return t
}
// CheckBytesLimit check whether the bytes limit of the tracker is equal to a value.
// Only used in test.
func (t *Tracker) CheckBytesLimit(val int64) bool {
return t.bytesLimit.Load().bytesHardLimit == val
}
// SetBytesLimit sets the bytes limit for this tracker.
// "bytesHardLimit <= 0" means no limit.
func (t *Tracker) SetBytesLimit(bytesLimit int64) {
if bytesLimit <= 0 {
t.bytesLimit.Store(&unlimitedBytesLimit)
} else if bytesLimit == DefMemQuotaQuery {
t.bytesLimit.Store(&defaultQueryQuota)
} else {
t.bytesLimit.Store(&bytesLimits{
bytesHardLimit: bytesLimit,
bytesSoftLimit: int64(float64(bytesLimit) * softScale),
})
}
}
// GetBytesLimit gets the bytes limit for this tracker.
// "bytesHardLimit <= 0" means no limit.
func (t *Tracker) GetBytesLimit() int64 {
return t.bytesLimit.Load().bytesHardLimit
}
// CheckExceed checks whether the consumed bytes is exceed for this tracker.
func (t *Tracker) CheckExceed() bool {
bytesHardLimit := t.bytesLimit.Load().bytesHardLimit
return atomic.LoadInt64(&t.bytesConsumed) >= bytesHardLimit && bytesHardLimit > 0
}
// SetActionOnExceed sets the action when memory usage exceeds bytesHardLimit.
func (t *Tracker) SetActionOnExceed(a ActionOnExceed) {
t.actionMuForHardLimit.Lock()
defer t.actionMuForHardLimit.Unlock()
t.actionMuForHardLimit.actionOnExceed = a
}
// FallbackOldAndSetNewAction sets the action when memory usage exceeds bytesHardLimit
// and set the original action as its fallback.
func (t *Tracker) FallbackOldAndSetNewAction(a ActionOnExceed) {
t.actionMuForHardLimit.Lock()
defer t.actionMuForHardLimit.Unlock()
t.actionMuForHardLimit.actionOnExceed = reArrangeFallback(a, t.actionMuForHardLimit.actionOnExceed)
}
// FallbackOldAndSetNewActionForSoftLimit sets the action when memory usage exceeds bytesSoftLimit
// and set the original action as its fallback.
func (t *Tracker) FallbackOldAndSetNewActionForSoftLimit(a ActionOnExceed) {
t.actionMuForSoftLimit.Lock()
defer t.actionMuForSoftLimit.Unlock()
t.actionMuForSoftLimit.actionOnExceed = reArrangeFallback(a, t.actionMuForSoftLimit.actionOnExceed)
}
// GetFallbackForTest get the oom action used by test.
func (t *Tracker) GetFallbackForTest(ignoreFinishedAction bool) ActionOnExceed {
t.actionMuForHardLimit.Lock()
defer t.actionMuForHardLimit.Unlock()
if t.actionMuForHardLimit.actionOnExceed != nil && t.actionMuForHardLimit.actionOnExceed.IsFinished() && ignoreFinishedAction {
t.actionMuForHardLimit.actionOnExceed = t.actionMuForHardLimit.actionOnExceed.GetFallback()
}
return t.actionMuForHardLimit.actionOnExceed
}
// UnbindActions unbinds actionForHardLimit and actionForSoftLimit.
func (t *Tracker) UnbindActions() {
t.actionMuForSoftLimit.Lock()
defer t.actionMuForSoftLimit.Unlock()
t.actionMuForSoftLimit.actionOnExceed = nil
t.actionMuForHardLimit.Lock()
defer t.actionMuForHardLimit.Unlock()
// Currently this method is only called by ResetContextOfStmt, which then always calls SetActionOnExceed to set
// actionForHardLimit.actionOnExceed properly, thus it's safe to set it nil here.
t.actionMuForHardLimit.actionOnExceed = nil
}
// UnbindActionFromHardLimit unbinds action from hardLimit.
func (t *Tracker) UnbindActionFromHardLimit(actionToUnbind ActionOnExceed) {
t.actionMuForHardLimit.Lock()
defer t.actionMuForHardLimit.Unlock()
var prev ActionOnExceed
for current := t.actionMuForHardLimit.actionOnExceed; current != nil; current = current.GetFallback() {
if current == actionToUnbind {
if prev == nil {
// actionToUnbind is the first element
t.actionMuForHardLimit.actionOnExceed = current.GetFallback()
} else {
// actionToUnbind is not the first element
prev.SetFallback(current.GetFallback())
}
break
}
prev = current
}
}
// reArrangeFallback merge two action chains and rearrange them by priority in descending order.
func reArrangeFallback(a ActionOnExceed, b ActionOnExceed) ActionOnExceed {
if a == nil {
return b
}
if b == nil {
return a
}
if a.GetPriority() < b.GetPriority() {
a, b = b, a
}
a.SetFallback(reArrangeFallback(a.GetFallback(), b))
return a
}
// SetLabel sets the label of a Tracker.
func (t *Tracker) SetLabel(label int) {
parent := t.getParent()
t.Detach()
t.label = label
if parent != nil {
t.AttachTo(parent)
}
}
// Label gets the label of a Tracker.
func (t *Tracker) Label() int {
return t.label
}
// AttachTo attaches this memory tracker as a child to another Tracker. If it
// already has a parent, this function will remove it from the old parent.
// Its consumed memory usage is used to update all its ancestors.
func (t *Tracker) AttachTo(parent *Tracker) {
if parent.isGlobal {
t.AttachToGlobalTracker(parent)
return
}
oldParent := t.getParent()
if oldParent != nil {
oldParent.remove(t)
}
parent.mu.Lock()
if parent.mu.children == nil {
parent.mu.children = make(map[int][]*Tracker)
}
parent.mu.children[t.label] = append(parent.mu.children[t.label], t)
parent.mu.Unlock()
t.setParent(parent)
parent.Consume(t.BytesConsumed())
}
// Detach de-attach the tracker child from its parent, then set its parent property as nil
func (t *Tracker) Detach() {
if t == nil {
return
}
parent := t.getParent()
if parent == nil {
return
}
if parent.isGlobal {
t.DetachFromGlobalTracker()
return
}
if parent.IsRootTrackerOfSess && t.label != LabelForMemDB {
parent.actionMuForHardLimit.Lock()
parent.actionMuForHardLimit.actionOnExceed = nil
parent.actionMuForHardLimit.Unlock()
parent.actionMuForSoftLimit.Lock()
parent.actionMuForSoftLimit.actionOnExceed = nil
parent.actionMuForSoftLimit.Unlock()
parent.Killer.Reset()
}
parent.remove(t)
t.mu.Lock()
defer t.mu.Unlock()
t.setParent(nil)
}
func (t *Tracker) remove(oldChild *Tracker) {
found := false
label := oldChild.label
t.mu.Lock()
if t.mu.children != nil {
children := t.mu.children[label]
for i, child := range children {
if child == oldChild {
children = slices.Delete(children, i, i+1)
if len(children) > 0 {
t.mu.children[label] = children
} else {
delete(t.mu.children, label)
}
found = true
break
}
}
}
t.mu.Unlock()
if found {
oldChild.setParent(nil)
t.Consume(-oldChild.BytesConsumed())
}
}
// ReplaceChild removes the old child specified in "oldChild" and add a new
// child specified in "newChild". old child's memory consumption will be
// removed and new child's memory consumption will be added.
func (t *Tracker) ReplaceChild(oldChild, newChild *Tracker) {
if newChild == nil {
t.remove(oldChild)
return
}
if oldChild.label != newChild.label {
t.remove(oldChild)
newChild.AttachTo(t)
return
}
newConsumed := newChild.BytesConsumed()
newChild.setParent(t)
label := oldChild.label
t.mu.Lock()
if t.mu.children != nil {
children := t.mu.children[label]
for i, child := range children {
if child != oldChild {
continue
}
newConsumed -= oldChild.BytesConsumed()
oldChild.setParent(nil)
children[i] = newChild
t.mu.children[label] = children
break
}
}
t.mu.Unlock()
t.Consume(newConsumed)
}
// Consume is used to consume a memory usage. "bytes" can be a negative value,
// which means this is a memory release operation. When memory usage of a tracker
// exceeds its bytesSoftLimit/bytesHardLimit, the tracker calls its action, so does each of its ancestors.
func (t *Tracker) Consume(bs int64) {
if bs == 0 {
return
}
var rootExceed, rootExceedForSoftLimit, sessionRootTracker *Tracker
for tracker := t; tracker != nil; tracker = tracker.getParent() {
if tracker.IsRootTrackerOfSess {
sessionRootTracker = tracker
}
bytesConsumed := atomic.AddInt64(&tracker.bytesConsumed, bs)
bytesReleased := atomic.LoadInt64(&tracker.bytesReleased)
limits := tracker.bytesLimit.Load()
if bytesConsumed+bytesReleased >= limits.bytesHardLimit && limits.bytesHardLimit > 0 {
rootExceed = tracker
}
if bytesConsumed+bytesReleased >= limits.bytesSoftLimit && limits.bytesSoftLimit > 0 {
rootExceedForSoftLimit = tracker
}
for {
maxNow := tracker.maxConsumed.Load()
consumed := atomic.LoadInt64(&tracker.bytesConsumed)
if consumed > maxNow && !tracker.maxConsumed.CompareAndSwap(maxNow, consumed) {
continue
}
if label, ok := MetricsTypes[tracker.label]; ok {
metrics.MemoryUsage.WithLabelValues(label[0], label[1]).Set(float64(consumed))
}
break
}
}
tryAction := func(mu *actionMu, tracker *Tracker) {
mu.Lock()
defer mu.Unlock()
for mu.actionOnExceed != nil && mu.actionOnExceed.IsFinished() {
mu.actionOnExceed = mu.actionOnExceed.GetFallback()
}
if mu.actionOnExceed != nil {
mu.actionOnExceed.Action(tracker)
}
}
if bs > 0 && sessionRootTracker != nil {
// Update the Top1 session
memUsage := sessionRootTracker.BytesConsumed()
limitSessMinSize := ServerMemoryLimitSessMinSize.Load()
if uint64(memUsage) >= limitSessMinSize {
oldTracker := MemUsageTop1Tracker.Load()
for oldTracker.LessThan(sessionRootTracker) {
if MemUsageTop1Tracker.CompareAndSwap(oldTracker, sessionRootTracker) {
break
}
oldTracker = MemUsageTop1Tracker.Load()
}
}
}
if bs > 0 && sessionRootTracker != nil {
err := sessionRootTracker.Killer.HandleSignal()
if err != nil {
panic(err)
}
}
if bs > 0 && rootExceed != nil {
tryAction(&rootExceed.actionMuForHardLimit, rootExceed)
}
if bs > 0 && rootExceedForSoftLimit != nil {
tryAction(&rootExceedForSoftLimit.actionMuForSoftLimit, rootExceedForSoftLimit)
}
}
// HandleKillSignal checks if a kill signal has been sent to the session root tracker.
// If a kill signal is detected, it panics with the error returned by the signal handler.
func (t *Tracker) HandleKillSignal() {
var sessionRootTracker *Tracker
for tracker := t; tracker != nil; tracker = tracker.getParent() {
if tracker.IsRootTrackerOfSess {
sessionRootTracker = tracker
}
}
if sessionRootTracker != nil {
err := sessionRootTracker.Killer.HandleSignal()
if err != nil {
panic(err)
}
}
}
// BufferedConsume is used to buffer memory usage and do late consume
// not thread-safe, should be called in one goroutine
func (t *Tracker) BufferedConsume(bufferedMemSize *int64, bytes int64) {
*bufferedMemSize += bytes
if *bufferedMemSize >= int64(TrackMemWhenExceeds) {
t.Consume(*bufferedMemSize)
*bufferedMemSize = int64(0)
}
}
// Release is used to release memory tracked, track the released memory until GC triggered if needed
// If you want your track to be GC-aware, please use Release(bytes) instead of Consume(-bytes), and pass the memory size of the real object.
// Only Analyze is integrated with Release so far.
func (t *Tracker) Release(bytes int64) {
if bytes == 0 {
return
}
defer t.Consume(-bytes)
for tracker := t; tracker != nil; tracker = tracker.getParent() {
if tracker.shouldRecordRelease() {
// use fake ref instead of obj ref, otherwise obj will be reachable again and gc in next cycle
newRef := &finalizerRef{}
finalizer := func(tracker *Tracker) func(ref *finalizerRef) {
return func(*finalizerRef) {
tracker.release(bytes) // finalizer func is called async
}
}
runtime.SetFinalizer(newRef, finalizer(tracker))
tracker.recordRelease(bytes)
return
}
}
}
// BufferedRelease is used to buffer memory release and do late release
// not thread-safe, should be called in one goroutine
func (t *Tracker) BufferedRelease(bufferedMemSize *int64, bytes int64) {
*bufferedMemSize += bytes
if *bufferedMemSize >= int64(TrackMemWhenExceeds) {
t.Release(*bufferedMemSize)
*bufferedMemSize = int64(0)
}
}
func (t *Tracker) shouldRecordRelease() bool {
return EnableGCAwareMemoryTrack.Load() && t.label == LabelForGlobalAnalyzeMemory
}
func (t *Tracker) recordRelease(bytes int64) {
for tracker := t; tracker != nil; tracker = tracker.getParent() {
bytesReleased := atomic.AddInt64(&tracker.bytesReleased, bytes)
if label, ok := MetricsTypes[tracker.label]; ok {
metrics.MemoryUsage.WithLabelValues(label[0], label[2]).Set(float64(bytesReleased))
}
}
}
func (t *Tracker) release(bytes int64) {
for tracker := t; tracker != nil; tracker = tracker.getParent() {
bytesReleased := atomic.AddInt64(&tracker.bytesReleased, -bytes)
if label, ok := MetricsTypes[tracker.label]; ok {
metrics.MemoryUsage.WithLabelValues(label[0], label[2]).Set(float64(bytesReleased))
}
}
}
// BytesConsumed returns the consumed memory usage value in bytes.
func (t *Tracker) BytesConsumed() int64 {
return atomic.LoadInt64(&t.bytesConsumed)
}
// BytesReleased returns the released memory value in bytes.
func (t *Tracker) BytesReleased() int64 {
return atomic.LoadInt64(&t.bytesReleased)
}
// MaxConsumed returns max number of bytes consumed during execution.
// Note: Don't make this method return -1 for special meanings in the future. Because binary plan has used -1 to
// distinguish between "0 bytes" and "N/A". ref: binaryOpFromFlatOp()
func (t *Tracker) MaxConsumed() int64 {
return t.maxConsumed.Load()
}
// ResetMaxConsumed should be invoked before executing a new statement in a session.
func (t *Tracker) ResetMaxConsumed() {
t.maxConsumed.Store(t.BytesConsumed())
}
// SearchTrackerWithoutLock searches the specific tracker under this tracker without lock.
func (t *Tracker) SearchTrackerWithoutLock(label int) *Tracker {
if t.label == label {
return t
}
children := t.mu.children[label]
if len(children) > 0 {
return children[0]
}
return nil
}
// SearchTrackerConsumedMoreThanNBytes searches the specific tracker that consumes more than NBytes.
func (t *Tracker) SearchTrackerConsumedMoreThanNBytes(limit int64) (res []*Tracker) {
t.mu.Lock()
defer t.mu.Unlock()
for _, childSlice := range t.mu.children {
for _, tracker := range childSlice {
if tracker.BytesConsumed() > limit {
res = append(res, tracker)
}
}
}
return
}
// String returns the string representation of this Tracker tree.
func (t *Tracker) String() string {
buffer := bytes.NewBufferString("\n")
t.toString("", buffer)
return buffer.String()
}
func (t *Tracker) toString(indent string, buffer *bytes.Buffer) {
fmt.Fprintf(buffer, "%s\"%d\"{\n", indent, t.label)
bytesLimit := t.GetBytesLimit()
if bytesLimit > 0 {
fmt.Fprintf(buffer, "%s \"quota\": %s\n", indent, t.FormatBytes(bytesLimit))
}
fmt.Fprintf(buffer, "%s \"consumed\": %s\n", indent, t.FormatBytes(t.BytesConsumed()))
t.mu.Lock()
labels := make([]int, 0, len(t.mu.children))
for label := range t.mu.children {
labels = append(labels, label)
}
slices.Sort(labels)
for _, label := range labels {
children := t.mu.children[label]
for _, child := range children {
child.toString(indent+" ", buffer)
}
}
t.mu.Unlock()
buffer.WriteString(indent + "}\n")
}
// FormatBytes uses to format bytes, this function will prune precision before format bytes.
func (*Tracker) FormatBytes(numBytes int64) string {
return FormatBytes(numBytes)
}
// LessThan indicates whether t byteConsumed is less than t2 byteConsumed.
func (t *Tracker) LessThan(t2 *Tracker) bool {
if t == nil {
return true
}
if t2 == nil {
return false
}
return t.BytesConsumed() < t2.BytesConsumed()
}
// BytesToString converts the memory consumption to a readable string.
func BytesToString(numBytes int64) string {
gb := float64(numBytes) / float64(byteSizeGB)
if gb > 1 {
return fmt.Sprintf("%v GB", gb)
}
mb := float64(numBytes) / float64(byteSizeMB)
if mb > 1 {
return fmt.Sprintf("%v MB", mb)
}
kb := float64(numBytes) / float64(byteSizeKB)
if kb > 1 {
return fmt.Sprintf("%v KB", kb)
}
return fmt.Sprintf("%v Bytes", numBytes)
}
const (
byteSizeGB = int64(1 << 30)
byteSizeMB = int64(1 << 20)
byteSizeKB = int64(1 << 10)
byteSizeBB = int64(1)
)
// FormatBytes uses to format bytes, this function will prune precision before format bytes.
func FormatBytes(numBytes int64) string {
if numBytes <= byteSizeKB {
return BytesToString(numBytes)
}
unit, unitStr := getByteUnit(numBytes)
if unit == byteSizeBB {
return BytesToString(numBytes)
}
v := float64(numBytes) / float64(unit)
decimal := 1
if numBytes%unit == 0 {
decimal = 0
} else if v < 10 {
decimal = 2
}
return fmt.Sprintf("%v %s", strconv.FormatFloat(v, 'f', decimal, 64), unitStr)
}
func getByteUnit(b int64) (int64, string) {
if b > byteSizeGB {
return byteSizeGB, "GB"
} else if b > byteSizeMB {
return byteSizeMB, "MB"
} else if b > byteSizeKB {
return byteSizeKB, "KB"
}
return byteSizeBB, "Bytes"
}
// AttachToGlobalTracker attach the tracker to the global tracker
// AttachToGlobalTracker should be called at the initialization for the session executor's tracker
func (t *Tracker) AttachToGlobalTracker(globalTracker *Tracker) {
if globalTracker == nil {
return
}
if !globalTracker.isGlobal {
panic("Attach to a non-GlobalTracker")
}
parent := t.getParent()
if parent != nil {
if parent.isGlobal {
parent.Consume(-t.BytesConsumed())
} else {
parent.remove(t)
}
}
t.setParent(globalTracker)
globalTracker.Consume(t.BytesConsumed())
}
// DetachFromGlobalTracker detach itself from its parent
// Note that only the parent of this tracker is Global Tracker could call this function
// Otherwise it should use Detach
func (t *Tracker) DetachFromGlobalTracker() {
parent := t.getParent()
if parent == nil {
return
}
if !parent.isGlobal {
panic("Detach from a non-GlobalTracker")
}
parent.Consume(-t.BytesConsumed())
t.setParent(nil)
}
// ReplaceBytesUsed replace bytesConsume for the tracker
func (t *Tracker) ReplaceBytesUsed(bytes int64) {
t.Consume(bytes - t.BytesConsumed())
}
// Reset detach the tracker from the old parent and clear the old children. The label and byteLimit would not be reset.
func (t *Tracker) Reset() {
t.Detach()
t.ReplaceBytesUsed(0)
t.mu.children = nil
}
func (t *Tracker) getParent() *Tracker {
t.parMu.Lock()
defer t.parMu.Unlock()
return t.parMu.parent
}
func (t *Tracker) setParent(parent *Tracker) {
t.parMu.Lock()
defer t.parMu.Unlock()
t.parMu.parent = parent
}
// CountAllChildrenMemUse return memory used tree for the tracker
func (t *Tracker) CountAllChildrenMemUse() map[string]int64 {
trackerMemUseMap := make(map[string]int64, 1024)
countChildMem(t, "", trackerMemUseMap)
return trackerMemUseMap
}
// GetChildrenForTest returns children trackers
func (t *Tracker) GetChildrenForTest() []*Tracker {
t.mu.Lock()
defer t.mu.Unlock()
trackers := make([]*Tracker, 0)
for _, list := range t.mu.children {
trackers = append(trackers, list...)
}
return trackers
}
func countChildMem(t *Tracker, familyTreeName string, trackerMemUseMap map[string]int64) {
if len(familyTreeName) > 0 {
familyTreeName += " <- "
}
familyTreeName += "[" + strconv.Itoa(t.Label()) + "]"
trackerMemUseMap[familyTreeName] += t.BytesConsumed()
t.mu.Lock()
defer t.mu.Unlock()
for _, sli := range t.mu.children {
for _, tracker := range sli {
countChildMem(tracker, familyTreeName, trackerMemUseMap)
}
}
}
const (
// LabelForSQLText represents the label of the SQL Text
LabelForSQLText int = -1
// LabelForIndexWorker represents the label of the index worker
LabelForIndexWorker int = -2
// LabelForInnerList represents the label of the inner list
LabelForInnerList int = -3
// LabelForInnerTable represents the label of the inner table
LabelForInnerTable int = -4
// LabelForOuterTable represents the label of the outer table
LabelForOuterTable int = -5
// LabelForCoprocessor represents the label of the coprocessor
LabelForCoprocessor int = -6
// LabelForChunkList represents the label of the chunk list
LabelForChunkList int = -7
// LabelForGlobalSimpleLRUCache represents the label of the Global SimpleLRUCache
LabelForGlobalSimpleLRUCache int = -8
// LabelForChunkDataInDiskByRows represents the label of the chunk list in disk
LabelForChunkDataInDiskByRows int = -9
// LabelForRowContainer represents the label of the row container
LabelForRowContainer int = -10
// LabelForGlobalStorage represents the label of the Global Storage
LabelForGlobalStorage int = -11
// LabelForGlobalMemory represents the label of the Global Memory
LabelForGlobalMemory int = -12
// LabelForBuildSideResult represents the label of the BuildSideResult
LabelForBuildSideResult int = -13
// LabelForRowChunks represents the label of the row chunks
LabelForRowChunks int = -14
// LabelForStatsCache represents the label of the stats cache
LabelForStatsCache int = -15
// LabelForOuterList represents the label of the outer list
LabelForOuterList int = -16
// LabelForApplyCache represents the label of the apply cache
LabelForApplyCache int = -17
// LabelForSimpleTask represents the label of the simple task
LabelForSimpleTask int = -18
// LabelForCTEStorage represents the label of CTE storage
LabelForCTEStorage int = -19
// LabelForIndexJoinInnerWorker represents the label of IndexJoin InnerWorker
LabelForIndexJoinInnerWorker int = -20
// LabelForIndexJoinOuterWorker represents the label of IndexJoin OuterWorker
LabelForIndexJoinOuterWorker int = -21
// LabelForBindCache represents the label of the bind cache
LabelForBindCache int = -22
// LabelForNonTransactionalDML represents the label of the non-transactional DML
LabelForNonTransactionalDML = -23
// LabelForAnalyzeMemory represents the label of the memory of each analyze job
LabelForAnalyzeMemory int = -24
// LabelForGlobalAnalyzeMemory represents the label of the global memory of all analyze jobs
LabelForGlobalAnalyzeMemory int = -25
// LabelForPreparedPlanCache represents the label of the prepared plan cache memory usage
LabelForPreparedPlanCache int = -26
// LabelForSession represents the label of a session.
LabelForSession int = -27
// LabelForMemDB represents the label of the MemDB
LabelForMemDB int = -28
// LabelForCursorFetch represents the label of the execution of cursor fetch
LabelForCursorFetch int = -29
// LabelForChunkDataInDiskByChunks represents the label of the chunk list in disk
LabelForChunkDataInDiskByChunks int = -30
// LabelForSortPartition represents the label of the sort partition
LabelForSortPartition int = -31
// LabelForHashTableInHashJoinV2 represents the label of the hash join v2's hash table
LabelForHashTableInHashJoinV2 int = -32
)
// MetricsTypes is used to get label for metrics
// string[0] is LblModule, string[1] is heap-in-use type, string[2] is released type
var MetricsTypes = map[int][]string{
LabelForGlobalAnalyzeMemory: {"analyze", "inuse", "released"},
}
// Copyright 2025 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package memory
import (
"container/list"
"math/bits"
"sync/atomic"
"time"
)
const (
byteSize = 1
kilo = 1000
)
// list with cache to avoid the cost of allocating and deallocating list elements.
type wrapList[V any] struct {
end wrapListElement
base list.List
num int64
}
type wrapListElement struct {
base *list.Element
}
func (w *wrapListElement) valid() bool {
return w.base != nil
}
func (w *wrapListElement) reset() {
w.base = nil
}
func (l *wrapList[V]) init() {
l.base.Init()
l.base.PushBack(nil)
l.end = wrapListElement{l.base.Back()}
}
func (l *wrapList[V]) moveToFront(e wrapListElement) {
l.base.MoveToFront(e.base)
}
func (l *wrapList[V]) remove(e wrapListElement) {
e.base.Value = nil
l.base.MoveToBack(e.base)
atomic.AddInt64(&l.num, -1)
}
func (l *wrapList[V]) front() (res V) {
if l.empty() {
return
}
return l.base.Front().Value.(V)
}
func (l *wrapList[V]) popFront() (res V) {
if l.empty() {
return
}
e := l.base.Front()
res = e.Value.(V)
l.remove(wrapListElement{e})
return
}
func (l *wrapList[V]) size() int64 {
return atomic.LoadInt64(&l.num)
}
func (l *wrapList[V]) empty() bool {
return l.size() == 0
}
func (l *wrapList[V]) pushBack(v V) wrapListElement {
var x *list.Element
if l.size()+1 == int64(l.base.Len()) {
x = l.base.InsertBefore(v, l.end.base)
} else {
x = l.base.Back()
l.base.MoveBefore(x, l.end.base)
x.Value = v
}
atomic.AddInt64(&l.num, 1)
return wrapListElement{x}
}
// Notifer works as the multiple producer & single consumer mode.
type Notifer struct {
C chan struct{}
awake int32
}
// NewNotifer creates a new Notifer instance.
func NewNotifer() Notifer {
return Notifer{
C: make(chan struct{}, 1),
}
}
// return previous awake status
func (n *Notifer) clear() bool {
return atomic.SwapInt32(&n.awake, 0) != 0
}
// Wait for signal synchronously (consumer)
func (n *Notifer) Wait() {
<-n.C
n.clear()
}
// Wake the consumer
func (n *Notifer) Wake() {
n.wake()
}
func (n *Notifer) wake() {
// 1 -> 1: do nothing
// 0 -> 1: send signal
if atomic.SwapInt32(&n.awake, 1) == 0 {
n.C <- struct{}{}
}
}
func (n *Notifer) isAwake() bool {
return atomic.LoadInt32(&n.awake) != 0
}
// WeakWake wakes the consumer if it is not awake (may loose signal under concurrent scenarios).
func (n *Notifer) WeakWake() {
if n.isAwake() {
return
}
n.wake()
}
// HashStr hashes a string to a uint64 value
func HashStr(key string) uint64 {
hashKey := initHashKey
for _, c := range key {
hashKey *= prime64
hashKey ^= uint64(c)
}
return hashKey
}
// HashEvenNum hashes a uint64 even number to a uint64 value
func HashEvenNum(key uint64) uint64 {
const step = 8
const stepMask uint64 = uint64(1)<<step - 1
hashKey := initHashKey
{
// handle significant last 8 bits
hashKey ^= (key & stepMask)
hashKey *= prime64
key >>= step
}
{
hashKey ^= key
hashKey *= prime64
}
return hashKey
}
func shardIndexByUID(key uint64, shardsMask uint64) uint64 {
return HashEvenNum(key) & shardsMask
}
func getQuotaShard(quota int64, maxQuotaShard int) int {
p := uint64(quota) / uint64(baseQuotaUnit)
pos := bits.Len64(p)
pos = min(pos, maxQuotaShard-1)
return pos
}
func nowUnixMilli() int64 {
return time.Now().UnixMilli()
}
func now() time.Time {
return time.Now()
}
func nextPow2(n uint64) uint64 {
if n == 0 {
return 1
}
n--
n |= n >> 1
n |= n >> 2
n |= n >> 4
n |= n >> 8
n |= n >> 16
n |= n >> 32
n++
return n
}
func calcRatio(x, y int64) (zMilli int64) {
zMilli = x * kilo / y
return
}
func multiRatio(x, yMilli int64) int64 {
return x * yMilli / kilo
}
func intoRatio(x float64) (zMilli int64) {
zMilli = int64(x * kilo)
return
}
// Copyright 2020 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package parser
import (
"strings"
"github.com/pingcap/tidb/pkg/parser/ast"
"github.com/pingcap/tidb/pkg/parser/format"
"github.com/pingcap/tidb/pkg/util/logutil"
"go.uber.org/zap"
)
// GetDefaultDB checks if all tables in the AST have explicit DBName. If not, return specified DBName.
func GetDefaultDB(sel ast.StmtNode, dbName string) string {
implicitDB := &implicitDatabase{}
sel.Accept(implicitDB)
if implicitDB.hasImplicit {
return dbName
}
return ""
}
type implicitDatabase struct {
hasImplicit bool
}
func (i *implicitDatabase) Enter(in ast.Node) (out ast.Node, skipChildren bool) {
switch x := in.(type) {
case *ast.TableName:
if x.Schema.L == "" {
i.hasImplicit = true
}
return in, true
default:
return in, i.hasImplicit
}
}
func (*implicitDatabase) Leave(in ast.Node) (out ast.Node, ok bool) {
return in, true
}
func findTablePos(s, t string) int {
l := 0
for i := range s {
if s[i] == ' ' || s[i] == ',' {
if len(t) == i-l && strings.Compare(s[l:i], t) == 0 {
return l
}
l = i + 1
}
}
if len(t) == len(s)-l && strings.Compare(s[l:], t) == 0 {
return l
}
return -1
}
// SimpleCases captures simple SQL statements and uses string replacement instead of `restore` to improve performance.
// See https://github.com/pingcap/tidb/issues/22398.
func SimpleCases(node ast.StmtNode, defaultDB, origin string) (s string, ok bool) {
if len(origin) == 0 {
return "", false
}
insert, ok := node.(*ast.InsertStmt)
if !ok {
return "", false
}
if insert.Select != nil || insert.Setlist || insert.OnDuplicate != nil || len(insert.TableHints) != 0 {
return "", false
}
join := insert.Table.TableRefs
if join.Tp != 0 || join.Right != nil {
return "", false
}
ts, ok := join.Left.(*ast.TableSource)
if !ok {
return "", false
}
tn, ok := ts.Source.(*ast.TableName)
if !ok {
return "", false
}
parenPos := strings.Index(origin, "(")
if parenPos == -1 {
return "", false
}
if strings.Contains(origin[:parenPos], ".") {
return origin, true
}
lower := strings.ToLower(origin[:parenPos])
pos := findTablePos(lower, tn.Name.L)
if pos == -1 {
return "", false
}
var builder strings.Builder
builder.WriteString(origin[:pos])
if tn.Schema.String() != "" {
builder.WriteString(tn.Schema.String())
} else {
builder.WriteString(defaultDB)
}
builder.WriteString(".")
builder.WriteString(origin[pos:])
return builder.String(), true
}
// Three flags for restore with default DB:
// 1. RestoreStringSingleQuotes specifies to use single quotes to surround the string;
// 2. RestoreSpacesAroundBinaryOperation specifies to add space around binary operation;
// 3. RestoreStringWithoutCharset specifies to not print charset before string;
// 4. RestoreNameBackQuotes specifies to use back quotes to surround the name;
const defaultRestoreFlag = format.RestoreStringSingleQuotes | format.RestoreSpacesAroundBinaryOperation | format.RestoreStringWithoutCharset | format.RestoreNameBackQuotes
// RestoreWithDefaultDB returns restore strings for StmtNode with defaultDB
// This function is customized for SQL bind usage.
func RestoreWithDefaultDB(node ast.StmtNode, defaultDB, origin string) string {
if s, ok := SimpleCases(node, defaultDB, origin); ok {
return s
}
var sb strings.Builder
ctx := format.NewRestoreCtx(defaultRestoreFlag, &sb)
ctx.DefaultDB = defaultDB
if err := node.Restore(ctx); err != nil {
logutil.BgLogger().Debug("restore SQL failed", zap.String("category", "sql-bind"), zap.Error(err))
return ""
}
return sb.String()
}
// RestoreWithoutDB returns restore strings for StmtNode without schema name.
// This function is customized for universal SQL binding.
func RestoreWithoutDB(node ast.StmtNode) string {
var sb strings.Builder
ctx := format.NewRestoreCtx(defaultRestoreFlag|format.RestoreWithoutSchemaName, &sb)
if err := node.Restore(ctx); err != nil {
logutil.BgLogger().Debug("restore SQL failed", zap.String("category", "sql-bind"), zap.Error(err))
return ""
}
return sb.String()
}
// Copyright 2019 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package parser
import (
"strconv"
"sync"
"unicode"
"github.com/pingcap/errors"
"github.com/pingcap/tidb/pkg/parser"
)
var (
// ErrPatternNotMatch represents an error that patterns doesn't match.
ErrPatternNotMatch = errors.New("Pattern not match")
// Pool is a pool of parser.Parser
pool = &sync.Pool{New: func() any { return parser.New() }}
)
// GetParser gets a parser from the pool
func GetParser() *parser.Parser {
return pool.Get().(*parser.Parser)
}
// DestroyParser resets the parser and puts it back to the pool
func DestroyParser(p *parser.Parser) {
p.Reset()
pool.Put(p)
}
// Match matches the `pat` at least `times`, and returns the match, the rest and the error
func Match(buf string, pat func(byte) bool, times int) (match string, rest string, err error) {
var i int
for i < len(buf) && pat(buf[i]) {
i++
}
if i < times {
return "", buf, ErrPatternNotMatch
}
return buf[:i], buf[i:], nil
}
// MatchOne matches only one time with pat
func MatchOne(buf string, pat func(byte) bool) (string, error) {
if len(buf) == 0 || !pat(buf[0]) {
return buf, ErrPatternNotMatch
}
return buf[1:], nil
}
// AnyPunct matches an arbitrary punctuation
func AnyPunct(buf string) (string, error) {
return MatchOne(buf, func(b byte) bool {
return unicode.IsPunct(rune(b))
})
}
// AnyChar matches an arbitrary character
func AnyChar(buf string) (string, error) {
return MatchOne(buf, func(byte) bool {
return true
})
}
// Char matches a character: c
func Char(buf string, c byte) (string, error) {
return MatchOne(buf, func(x byte) bool {
return x == c
})
}
// Space matches at least `times` spaces
func Space(buf string, times int) (string, error) {
_, rest, err := Match(buf, func(c byte) bool {
return unicode.IsSpace(rune(c))
}, times)
return rest, err
}
// Space0 matches at least 0 space.
func Space0(buf string) string {
rest, err := Space(buf, 0)
if err != nil {
panic(err)
}
return rest
}
// Digit matches at least `times` digits
func Digit(buf string, times int) (match string, rest string, err error) {
return Match(buf, func(c byte) bool {
return unicode.IsDigit(rune(c))
}, times)
}
// Number matches a series of digits and convert it to an int
func Number(str string) (int, string, error) {
digits, rest, err := Digit(str, 1)
if err != nil {
return 0, str, err
}
num, err := strconv.Atoi(digits)
return num, rest, err
}
// Copyright 2022 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package promutil
import (
"github.com/prometheus/client_golang/prometheus"
)
// Factory is the interface to create some native prometheus metric.
type Factory interface {
// NewCounter creates a new Counter based on the provided CounterOpts.
NewCounter(opts prometheus.CounterOpts) prometheus.Counter
// NewCounterVec creates a new CounterVec based on the provided CounterOpts and
// partitioned by the given label names.
NewCounterVec(opts prometheus.CounterOpts, labelNames []string) *prometheus.CounterVec
// NewGauge creates a new Gauge based on the provided GaugeOpts.
NewGauge(opts prometheus.GaugeOpts) prometheus.Gauge
// NewGaugeVec creates a new GaugeVec based on the provided GaugeOpts and
// partitioned by the given label names.
NewGaugeVec(opts prometheus.GaugeOpts, labelNames []string) *prometheus.GaugeVec
// NewHistogram creates a new Histogram based on the provided HistogramOpts. It
// panics if the buckets in HistogramOpts are not in strictly increasing order.
NewHistogram(opts prometheus.HistogramOpts) prometheus.Histogram
// NewHistogramVec creates a new HistogramVec based on the provided HistogramOpts and
// partitioned by the given label names.
NewHistogramVec(opts prometheus.HistogramOpts, labelNames []string) *prometheus.HistogramVec
}
var _ Factory = defaultFactory{}
type defaultFactory struct{}
func (defaultFactory) NewCounter(opts prometheus.CounterOpts) prometheus.Counter {
return prometheus.NewCounter(opts)
}
func (defaultFactory) NewCounterVec(opts prometheus.CounterOpts, labelNames []string) *prometheus.CounterVec {
return prometheus.NewCounterVec(opts, labelNames)
}
func (defaultFactory) NewGauge(opts prometheus.GaugeOpts) prometheus.Gauge {
return prometheus.NewGauge(opts)
}
func (defaultFactory) NewGaugeVec(opts prometheus.GaugeOpts, labelNames []string) *prometheus.GaugeVec {
return prometheus.NewGaugeVec(opts, labelNames)
}
func (defaultFactory) NewHistogram(opts prometheus.HistogramOpts) prometheus.Histogram {
return prometheus.NewHistogram(opts)
}
func (defaultFactory) NewHistogramVec(opts prometheus.HistogramOpts, labelNames []string) *prometheus.HistogramVec {
return prometheus.NewHistogramVec(opts, labelNames)
}
// NewDefaultFactory returns a default implementation of Factory.
func NewDefaultFactory() Factory {
return defaultFactory{}
}
// Copyright 2022 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package promutil
import "github.com/prometheus/client_golang/prometheus"
// Registry is the interface to register or unregister metrics.
type Registry = prometheus.Registerer
var _ Registry = noopRegistry{}
type noopRegistry struct{}
func (noopRegistry) Register(_ prometheus.Collector) error {
return nil
}
func (noopRegistry) MustRegister(_ ...prometheus.Collector) {}
func (noopRegistry) Unregister(_ prometheus.Collector) bool {
return true
}
// NewNoopRegistry returns a Registry that does nothing.
// It is used for the case where metrics have been registered
// in factory automatically.
func NewNoopRegistry() Registry {
return noopRegistry{}
}
// NewDefaultRegistry returns a default implementation of Registry.
func NewDefaultRegistry() Registry {
return prometheus.NewRegistry()
}
// Copyright 2023 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package sqlkiller
import (
"math/rand"
"sync"
"sync/atomic"
"time"
"github.com/pingcap/failpoint"
"github.com/pingcap/tidb/pkg/util/dbterror/exeerrors"
"github.com/pingcap/tidb/pkg/util/intest"
"github.com/pingcap/tidb/pkg/util/logutil"
"go.uber.org/zap"
)
type killSignal = uint32
// KillSignal types.
const (
UnspecifiedKillSignal killSignal = iota
QueryInterrupted
MaxExecTimeExceeded
QueryMemoryExceeded
ServerMemoryExceeded
RunawayQueryExceeded
// When you add a new signal, you should also modify store/driver/error/ToTiDBErr,
// so that errors in client can be correctly converted to tidb errors.
)
// SQLKiller is used to kill a query.
type SQLKiller struct {
Signal killSignal
ConnID atomic.Uint64
// FinishFuncLock is used to ensure that Finish is not called and modified at the same time.
// An external call to the Finish function only allows when the main goroutine to be in the writeResultSet process.
// When the main goroutine exits the writeResultSet process, the Finish function will be cleared.
FinishFuncLock sync.Mutex
Finish func()
// InWriteResultSet is used to indicate whether the query is currently calling clientConn.writeResultSet().
// If the query is in writeResultSet and Finish() can acquire rs.finishLock, we can assume the query is waiting for the client to receive data from the server over network I/O.
InWriteResultSet atomic.Bool
lastCheckTime atomic.Pointer[time.Time]
IsConnectionAlive atomic.Pointer[func() bool]
}
// SendKillSignal sends a kill signal to the query.
func (killer *SQLKiller) SendKillSignal(reason killSignal) {
if atomic.CompareAndSwapUint32(&killer.Signal, 0, reason) {
status := atomic.LoadUint32(&killer.Signal)
err := killer.getKillError(status)
logutil.BgLogger().Warn("kill initiated", zap.Uint64("connection ID", killer.ConnID.Load()), zap.String("reason", err.Error()))
}
}
// GetKillSignal gets the kill signal.
func (killer *SQLKiller) GetKillSignal() killSignal {
return atomic.LoadUint32(&killer.Signal)
}
// getKillError gets the error according to the kill signal.
func (killer *SQLKiller) getKillError(status killSignal) error {
switch status {
case QueryInterrupted:
return exeerrors.ErrQueryInterrupted.GenWithStackByArgs()
case MaxExecTimeExceeded:
return exeerrors.ErrMaxExecTimeExceeded.GenWithStackByArgs()
case QueryMemoryExceeded:
return exeerrors.ErrMemoryExceedForQuery.GenWithStackByArgs(killer.ConnID.Load())
case ServerMemoryExceeded:
return exeerrors.ErrMemoryExceedForInstance.GenWithStackByArgs(killer.ConnID.Load())
case RunawayQueryExceeded:
return exeerrors.ErrResourceGroupQueryRunawayInterrupted.FastGenByArgs("runaway exceed tidb side")
default:
}
return nil
}
// FinishResultSet is used to close the result set.
// If a kill signal is sent but the SQL query is stuck in the network stack while writing packets to the client,
// encountering some bugs that cause it to hang, or failing to detect the kill signal, we can call Finish to release resources used during the SQL execution process.
func (killer *SQLKiller) FinishResultSet() {
killer.FinishFuncLock.Lock()
defer killer.FinishFuncLock.Unlock()
if killer.Finish != nil {
killer.Finish()
}
}
// SetFinishFunc sets the finish function.
func (killer *SQLKiller) SetFinishFunc(fn func()) {
killer.FinishFuncLock.Lock()
defer killer.FinishFuncLock.Unlock()
killer.Finish = fn
}
// ClearFinishFunc clears the finish function.1
func (killer *SQLKiller) ClearFinishFunc() {
killer.FinishFuncLock.Lock()
defer killer.FinishFuncLock.Unlock()
killer.Finish = nil
}
// HandleSignal handles the kill signal and return the error.
func (killer *SQLKiller) HandleSignal() error {
failpoint.Inject("randomPanic", func(val failpoint.Value) {
if p, ok := val.(int); ok {
if rand.Float64() > (float64)(p)/1000 {
if killer.ConnID.Load() != 0 {
targetStatus := rand.Int31n(5)
atomic.StoreUint32(&killer.Signal, uint32(targetStatus))
}
}
}
})
// Checks if the connection is alive.
// For performance reasons, the check interval should be at least `checkConnectionAliveDur`(1 second).
fn := killer.IsConnectionAlive.Load()
lastCheckTime := killer.lastCheckTime.Load()
if fn != nil {
var checkConnectionAliveDur time.Duration = time.Second
now := time.Now()
if intest.InTest {
checkConnectionAliveDur = time.Millisecond
}
if lastCheckTime == nil {
killer.lastCheckTime.Store(&now)
} else if now.Sub(*lastCheckTime) > checkConnectionAliveDur {
killer.lastCheckTime.Store(&now)
if !(*fn)() {
atomic.CompareAndSwapUint32(&killer.Signal, 0, QueryInterrupted)
}
}
}
status := atomic.LoadUint32(&killer.Signal)
err := killer.getKillError(status)
if status == ServerMemoryExceeded {
logutil.BgLogger().Warn("global memory controller, NeedKill signal is received successfully",
zap.Uint64("conn", killer.ConnID.Load()))
}
return err
}
// Reset resets the SqlKiller.
func (killer *SQLKiller) Reset() {
if atomic.LoadUint32(&killer.Signal) != 0 {
logutil.BgLogger().Warn("kill finished", zap.Uint64("conn", killer.ConnID.Load()))
}
atomic.StoreUint32(&killer.Signal, 0)
killer.lastCheckTime.Store(nil)
}
// Copyright 2015 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package stringutil
import (
"bytes"
"fmt"
"slices"
"strings"
"unicode/utf8"
"github.com/pingcap/errors"
"github.com/pingcap/tidb/pkg/parser/mysql"
"github.com/pingcap/tidb/pkg/util/hack"
)
// ErrSyntax indicates that a value does not have the right syntax for the target type.
var ErrSyntax = errors.New("invalid syntax")
// UnquoteChar decodes the first character or byte in the escaped string
// or character literal represented by the string s.
// It returns four values:
//
// 1) value, the decoded Unicode code point or byte value;
// 2) multibyte, a boolean indicating whether the decoded character requires a multibyte UTF-8 representation;
// 3) tail, the remainder of the string after the character; and
// 4) an error that will be nil if the character is syntactically valid.
//
// The second argument, quote, specifies the type of literal being parsed
// and therefore which escaped quote character is permitted.
// If set to a single quote, it permits the sequence \' and disallows unescaped '.
// If set to a double quote, it permits \" and disallows unescaped ".
// If set to zero, it does not permit either escape and allows both quote characters to appear unescaped.
// Different with strconv.UnquoteChar, it permits unnecessary backslash.
func UnquoteChar(s string, quote byte) (value []byte, tail string, err error) {
// easy cases
switch c := s[0]; {
case c == quote:
err = errors.Trace(ErrSyntax)
return
case c >= utf8.RuneSelf:
r, size := utf8.DecodeRuneInString(s)
if r == utf8.RuneError {
value = append(value, c)
return value, s[1:], nil
}
value = append(value, string(r)...)
return value, s[size:], nil
case c != '\\':
value = append(value, c)
return value, s[1:], nil
}
// hard case: c is backslash
if len(s) <= 1 {
err = errors.Trace(ErrSyntax)
return
}
c := s[1]
s = s[2:]
switch c {
case 'b':
value = append(value, '\b')
case 'n':
value = append(value, '\n')
case 'r':
value = append(value, '\r')
case 't':
value = append(value, '\t')
case 'Z':
value = append(value, '\032')
case '0':
value = append(value, '\000')
case '_', '%':
value = append(value, '\\')
value = append(value, c)
case '\\':
value = append(value, '\\')
case '\'', '"':
value = append(value, c)
default:
value = append(value, c)
}
tail = s
return
}
// Unquote interprets s as a single-quoted, double-quoted,
// or backquoted Go string literal, returning the string value
// that s quotes. For example: test=`"\"\n"` (hex: 22 5c 22 5c 6e 22)
// should be converted to `"\n` (hex: 22 0a).
func Unquote(s string) (t string, err error) {
n := len(s)
if n < 2 {
return "", errors.Trace(ErrSyntax)
}
quote := s[0]
if quote != s[n-1] {
return "", errors.Trace(ErrSyntax)
}
s = s[1 : n-1]
if quote != '"' && quote != '\'' {
return "", errors.Trace(ErrSyntax)
}
// Avoid allocation. No need to convert if there is no '\'
if strings.IndexByte(s, '\\') == -1 && strings.IndexByte(s, quote) == -1 {
return s, nil
}
buf := make([]byte, 0, 3*len(s)/2) // Try to avoid more allocations.
for len(s) > 0 {
mb, ss, err := UnquoteChar(s, quote)
if err != nil {
return "", errors.Trace(err)
}
s = ss
buf = append(buf, mb...)
}
return string(buf), nil
}
const (
// PatMatch is the enumeration value for per-character match.
PatMatch = iota + 1
// PatOne is the enumeration value for '_' match.
PatOne
// PatAny is the enumeration value for '%' match.
PatAny
)
// CompilePatternBinary is used for binary strings.
func CompilePatternBinary(pattern string, escape byte) (patChars, patTypes []byte) {
return CompilePatternInnerBinary(pattern, escape)
}
// CompilePattern is an adapter for `CompilePatternInner`, `pattern` can be any unicode string.
func CompilePattern(pattern string, escape byte) (patWeights []rune, patTypes []byte) {
return CompilePatternInner(pattern, escape)
}
// CompilePatternInner handles escapes and wild cards convert pattern characters and
// pattern types.
// Note: if anything changes in this method, please double-check CompilePatternInnerBytes
func CompilePatternInner(pattern string, escape byte) (patWeights []rune, patTypes []byte) {
runes := []rune(pattern)
escapeRune := rune(escape)
lenRunes := len(runes)
patWeights = make([]rune, lenRunes)
patTypes = make([]byte, lenRunes)
patLen := 0
for i := 0; i < lenRunes; i++ {
var tp byte
var r = runes[i]
switch r {
case escapeRune:
tp = PatMatch
if i < lenRunes-1 {
i++
r = runes[i]
}
case '_':
// %_ => _%
if patLen > 0 && patTypes[patLen-1] == PatAny {
tp = PatAny
r = '%'
patWeights[patLen-1], patTypes[patLen-1] = '_', PatOne
} else {
tp = PatOne
}
case '%':
// %% => %
if patLen > 0 && patTypes[patLen-1] == PatAny {
continue
}
tp = PatAny
default:
tp = PatMatch
}
patWeights[patLen] = r
patTypes[patLen] = tp
patLen++
}
patWeights = patWeights[:patLen]
patTypes = patTypes[:patLen]
return
}
// CompilePatternInnerBinary handles escapes and wild cards convert pattern characters and
// pattern types in bytes.
// The main algorithm is the same as CompilePatternInner. However, it's not easy to use interface/lambda to hide the different details here.
// Note: if anything changes in this method, please double-check CompilePatternInner
func CompilePatternInnerBinary(pattern string, escape byte) (patWeights, patTypes []byte) {
bytes := []byte(pattern)
lenBytes := len(bytes)
patWeights = make([]byte, lenBytes)
patTypes = make([]byte, lenBytes)
patLen := 0
for i := 0; i < lenBytes; i++ {
var tp byte
var b = bytes[i]
switch b {
case escape:
tp = PatMatch
if i < lenBytes-1 {
i++
b = bytes[i]
}
case '_':
// %_ => _%
if patLen > 0 && patTypes[patLen-1] == PatAny {
tp = PatAny
b = '%'
patWeights[patLen-1], patTypes[patLen-1] = '_', PatOne
} else {
tp = PatOne
}
case '%':
// %% => %
if patLen > 0 && patTypes[patLen-1] == PatAny {
continue
}
tp = PatAny
default:
tp = PatMatch
}
patWeights[patLen] = b
patTypes[patLen] = tp
patLen++
}
patWeights = patWeights[:patLen]
patTypes = patTypes[:patLen]
return
}
func matchRune(a, b rune) bool {
return a == b
// We may reuse below code block when like function go back to case insensitive.
/*
if a == b {
return true
}
if a >= 'a' && a <= 'z' && a-caseDiff == b {
return true
}
return a >= 'A' && a <= 'Z' && a+caseDiff == b
*/
}
// CompileLike2Regexp convert a like `lhs` to a regular expression
func CompileLike2Regexp(str string) string {
patChars, patTypes := CompilePattern(str, '\\')
var result []rune
for i := range patChars {
switch patTypes[i] {
case PatMatch:
result = append(result, patChars[i])
case PatOne:
result = append(result, '.')
case PatAny:
result = append(result, '.', '*')
}
}
return string(result)
}
// DoMatchBinary is an adapter for `DoMatchInner`, `str` is binary strings or ascii string.
func DoMatchBinary(str string, patChars, patTypes []byte) bool {
bytes := []byte(str)
lenBytes := len(bytes)
lenPatWeights := len(patChars)
return doMatchInner(lenPatWeights, lenBytes, patTypes, func(a, b int) bool { return bytes[a] == patChars[b] })
}
// DoMatch is an adapter for `DoMatchCustomized`, `str` can be any unicode string.
func DoMatch(str string, patChars []rune, patTypes []byte) bool {
return DoMatchCustomized(str, patChars, patTypes, matchRune)
}
// DoMatchCustomized is an adapter for `DoMatchInner`, `str` can be any unicode string.
func DoMatchCustomized(str string, patWeights []rune, patTypes []byte, matcher func(a, b rune) bool) bool {
// TODO(bb7133): it is possible to get the rune one by one to avoid the cost of get them as a whole.
runes := []rune(str)
lenRunes := len(runes)
lenPatWeights := len(patWeights)
return doMatchInner(lenPatWeights, lenRunes, patTypes, func(a, b int) bool { return matcher(runes[a], patWeights[b]) })
}
// doMatchInner matches the string with patChars and patTypes.
// The algorithm has linear time complexity.
// https://research.swtch.com/glob
func doMatchInner(lenPatWeights int, lenChars int, patTypes []byte, matcher func(a, b int) bool) bool {
var cIdx, pIdx, nextCIdx, nextPIdx int
for pIdx < lenPatWeights || cIdx < lenChars {
if pIdx < lenPatWeights {
switch patTypes[pIdx] {
case PatMatch:
if cIdx < lenChars && matcher(cIdx, pIdx) {
pIdx++
cIdx++
continue
}
case PatOne:
if cIdx < lenChars {
pIdx++
cIdx++
continue
}
case PatAny:
// Try to match at sIdx.
// If that doesn't work out,
// restart at sIdx+1 next.
nextPIdx = pIdx
nextCIdx = cIdx + 1
pIdx++
continue
}
}
// Mismatch. Maybe restart.
if 0 < nextCIdx && nextCIdx <= lenChars {
pIdx = nextPIdx
cIdx = nextCIdx
continue
}
return false
}
// Matched all of pattern to all of name. Success.
return true
}
// IsExactMatch return true if no wildcard character
func IsExactMatch(patTypes []byte) bool {
for _, pt := range patTypes {
if pt != PatMatch {
return false
}
}
return true
}
// Copy deep copies a string.
func Copy(src string) string {
return string(hack.Slice(src))
}
// StringerFunc defines string func implement fmt.Stringer.
type StringerFunc func() string
// String implements fmt.Stringer
func (l StringerFunc) String() string {
return l()
}
// MemoizeStr returns memoized version of stringFunc. When the result of l is not
// "", it will be cached and returned directly next time.
//
// MemoizeStr is not concurrency safe.
func MemoizeStr(l func() string) fmt.Stringer {
var result string
return StringerFunc(func() string {
if result != "" {
return result
}
result = l()
return result
})
}
// StringerStr defines a alias to normal string.
// implement fmt.Stringer
type StringerStr string
// String implements fmt.Stringer
func (i StringerStr) String() string {
return string(i)
}
// Escape the identifier for pretty-printing.
// For instance, the identifier
/*
"foo `bar`" will become "`foo ``bar```".
*/
// The sqlMode controls whether to escape with backquotes (`) or double quotes
// (`"`) depending on whether mysql.ModeANSIQuotes is enabled.
func Escape(str string, sqlMode mysql.SQLMode) string {
var quote string
if sqlMode&mysql.ModeANSIQuotes != 0 {
quote = `"`
} else {
quote = "`"
}
return quote + strings.ReplaceAll(str, quote, quote+quote) + quote
}
// BuildStringFromLabels construct config labels into string by following format:
// "keyA=valueA,keyB=valueB"
func BuildStringFromLabels(labels map[string]string) string {
if len(labels) < 1 {
return ""
}
s := make([]string, 0, len(labels))
for k := range labels {
s = append(s, k)
}
slices.Sort(s)
var r bytes.Buffer
// visit labels by sorted key in order to make sure that result should be consistency
for _, key := range s {
fmt.Fprintf(&r, "%s=%s,", key, labels[key])
}
returned := r.String()
return returned[:len(returned)-1]
}
// GetTailSpaceCount returns the number of tailed spaces.
func GetTailSpaceCount(str string) int64 {
length := len(str)
for length > 0 && str[length-1] == ' ' {
length--
}
return int64(len(str) - length)
}
// Utf8Len calculates how many bytes the utf8 character takes.
// This b parameter should be the first byte of utf8 character
func Utf8Len(b byte) int {
flag := uint8(128)
if (flag & b) == 0 {
return 1
}
length := 0
for ; (flag & b) != 0; flag >>= 1 {
length++
}
return length
}
// TrimUtf8String needs the string input should always be valid which means
// that it should always return true in utf8.ValidString(str)
func TrimUtf8String(str *string, trimmedNum int64) int64 {
totalLenTrimmed := int64(0)
for ; trimmedNum > 0; trimmedNum-- {
length := Utf8Len((*str)[0]) // character length
*str = (*str)[length:]
totalLenTrimmed += int64(length)
}
return totalLenTrimmed
}
// ConvertPosInUtf8 converts a binary index to the position which shows the occurrence location in the utf8 string
// Take "你好" as example:
//
// binary index for "好" is 3, ConvertPosInUtf8("你好", 3) should return 2
func ConvertPosInUtf8(str *string, pos int64) int64 {
preStr := (*str)[:pos]
preStrNum := utf8.RuneCountInString(preStr)
return int64(preStrNum + 1)
}
func toLowerIfAlphaASCII(c byte) byte {
return c | 0x20
}
func toUpperIfAlphaASCII(c byte) byte {
return c ^ 0x20
}
// IsUpperASCII judges if this is capital alphabet
func IsUpperASCII(c byte) bool {
if c >= 'A' && c <= 'Z' {
return true
}
return false
}
// IsLowerASCII judges if this is lower alphabet
func IsLowerASCII(c byte) bool {
if c >= 'a' && c <= 'z' {
return true
}
return false
}
// LowerOneString lowers the ascii characters in a string
func LowerOneString(str []byte) {
strLen := len(str)
for i := range strLen {
if IsUpperASCII(str[i]) {
str[i] = toLowerIfAlphaASCII(str[i])
}
}
}
// IsNumericASCII judges if a byte is numeric
func IsNumericASCII(c byte) bool {
return (c >= '0' && c <= '9')
}
// LowerOneStringExcludeEscapeChar lowers strings and exclude an escape char
//
// When escape_char is a capital char, we shouldn't lower the escape char.
// For example, 'aaaa' ilike 'AAAA' escape 'A', we should convert 'AAAA' to 'AaAa'.
// If we do not exclude the escape char, 'AAAA' will be lowered to 'aaaa', and we
// can not get the correct result.
//
// When escape_char is a lower char, we need to convert it to the capital char
// Because: when lowering "ABC" with escape 'a', after lower, "ABC" -> "abc",
// then 'a' will be an escape char and it is not expected.
// Morever, when escape char is uppered we need to tell it to the caller.
func LowerOneStringExcludeEscapeChar(str []byte, escapeChar byte) byte {
actualEscapeChar := escapeChar
if IsLowerASCII(escapeChar) {
actualEscapeChar = toUpperIfAlphaASCII(escapeChar)
}
escaped := false
strLen := len(str)
for i := 0; i < strLen; i++ {
if IsUpperASCII(str[i]) {
// Do not lower the escape char, however when a char is equal to
// an escape char and it's after an escape char, we still lower it
// For example: "AA" (escape 'A'), -> "Aa"
if !(str[i] != escapeChar || escaped) {
escaped = true
continue
}
str[i] = toLowerIfAlphaASCII(str[i])
} else {
if str[i] == escapeChar && !escaped {
escaped = true
// It should be `str[i] = toUpperIfAlphaASCII(str[i])`,
// but 'actual_escape_char' is always equal to 'toUpperIfAlphaASCII(str[i])'
str[i] = actualEscapeChar
continue
}
i += Utf8Len(str[i]) - 1
}
escaped = false
}
return actualEscapeChar
}
// EscapeGlobQuestionMark escapes '?' for a glob path pattern.
func EscapeGlobQuestionMark(s string) string {
var buf strings.Builder
buf.Grow(len(s))
for _, c := range s {
if c == '?' {
buf.WriteByte('\\')
}
buf.WriteRune(c)
}
return buf.String()
}
// Copyright 2021 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package tracing
import "fmt"
// PlanTrace indicates for the Plan trace information
type PlanTrace struct {
mapChildren map[int]struct{}
TP string `json:"type"`
ProperType string `json:"property"`
// ExplainInfo should be implemented by each implemented Plan
ExplainInfo string `json:"info"`
Children []*PlanTrace `json:"-"`
ChildrenID []int `json:"children"`
ID int `json:"id"`
Cost float64 `json:"cost"`
Selected bool `json:"selected"`
}
// AppendChildrenID appends children ids
func (p *PlanTrace) AppendChildrenID(ids ...int) {
if p.mapChildren == nil {
p.mapChildren = make(map[int]struct{})
}
for _, id := range ids {
_, existed := p.mapChildren[id]
if existed {
continue
}
p.mapChildren[id] = struct{}{}
p.ChildrenID = append(p.ChildrenID, id)
}
}
// LogicalOptimizeTracer indicates the trace for the whole logicalOptimize processing
type LogicalOptimizeTracer struct {
// curRuleTracer indicates the current rule Tracer during optimize by rule
curRuleTracer *LogicalRuleOptimizeTracer
FinalLogicalPlan []*PlanTrace `json:"final"`
Steps []*LogicalRuleOptimizeTracer `json:"steps"`
}
// AppendRuleTracerBeforeRuleOptimize add plan tracer before optimize
func (tracer *LogicalOptimizeTracer) AppendRuleTracerBeforeRuleOptimize(index int, name string, before *PlanTrace) {
ruleTracer := buildLogicalRuleOptimizeTracerBeforeOptimize(index, name, before)
tracer.Steps = append(tracer.Steps, ruleTracer)
tracer.curRuleTracer = ruleTracer
}
// AppendRuleTracerStepToCurrent add rule optimize step to current
func (tracer *LogicalOptimizeTracer) AppendRuleTracerStepToCurrent(id int, tp, reason, action string) {
index := len(tracer.curRuleTracer.Steps)
tracer.curRuleTracer.Steps = append(tracer.curRuleTracer.Steps, LogicalRuleOptimizeTraceStep{
ID: id,
TP: tp,
Reason: reason,
Action: action,
Index: index,
})
}
// RecordFinalLogicalPlan add plan trace after logical optimize
func (tracer *LogicalOptimizeTracer) RecordFinalLogicalPlan(final *PlanTrace) {
tracer.FinalLogicalPlan = toFlattenPlanTrace(final)
tracer.removeUselessStep()
}
func (tracer *LogicalOptimizeTracer) removeUselessStep() {
newSteps := make([]*LogicalRuleOptimizeTracer, 0)
for _, step := range tracer.Steps {
if len(step.Steps) > 0 {
newSteps = append(newSteps, step)
}
}
tracer.Steps = newSteps
}
// LogicalRuleOptimizeTracer indicates the trace for the LogicalPlan tree before and after
// logical rule optimize
type LogicalRuleOptimizeTracer struct {
RuleName string `json:"name"`
Before []*PlanTrace `json:"before"`
Steps []LogicalRuleOptimizeTraceStep `json:"steps"`
Index int `json:"index"`
}
// buildLogicalRuleOptimizeTracerBeforeOptimize build rule tracer before rule optimize
func buildLogicalRuleOptimizeTracerBeforeOptimize(
index int, name string, before *PlanTrace) *LogicalRuleOptimizeTracer {
return &LogicalRuleOptimizeTracer{
Index: index,
Before: toFlattenPlanTrace(before),
RuleName: name,
Steps: make([]LogicalRuleOptimizeTraceStep, 0),
}
}
// LogicalRuleOptimizeTraceStep indicates the trace for the detailed optimize changing in
// logical rule optimize
type LogicalRuleOptimizeTraceStep struct {
Action string `json:"action"`
Reason string `json:"reason"`
TP string `json:"type"`
ID int `json:"id"`
Index int `json:"index"`
}
// toFlattenPlanTrace transform plan into PlanTrace
func toFlattenPlanTrace(root *PlanTrace) []*PlanTrace {
wrapper := &flattenWrapper{flatten: make([]*PlanTrace, 0)}
flattenLogicalPlanTrace(root, wrapper)
return wrapper.flatten
}
type flattenWrapper struct {
flatten []*PlanTrace
}
func flattenLogicalPlanTrace(node *PlanTrace, wrapper *flattenWrapper) {
newNode := &PlanTrace{
ID: node.ID,
TP: node.TP,
ChildrenID: make([]int, 0),
Cost: node.Cost,
ExplainInfo: node.ExplainInfo,
}
if len(node.Children) < 1 {
wrapper.flatten = append(wrapper.flatten, newNode)
return
}
for _, child := range node.Children {
newNode.AppendChildrenID(child.ID)
}
for _, child := range node.Children {
flattenLogicalPlanTrace(child, wrapper)
}
wrapper.flatten = append(wrapper.flatten, newNode)
}
// CETraceRecord records an expression and related cardinality estimation result.
type CETraceRecord struct {
TableName string `json:"table_name"`
Type string `json:"type"`
Expr string `json:"expr"`
TableID int64 `json:"-"`
RowCount uint64 `json:"row_count"`
}
// DedupCETrace deduplicate a slice of *CETraceRecord and return the deduplicated slice
func DedupCETrace(records []*CETraceRecord) []*CETraceRecord {
ret := make([]*CETraceRecord, 0, len(records))
exists := make(map[CETraceRecord]struct{}, len(records))
for _, rec := range records {
if _, ok := exists[*rec]; !ok {
ret = append(ret, rec)
exists[*rec] = struct{}{}
}
}
return ret
}
// PhysicalOptimizeTracer indicates the trace for the whole physicalOptimize processing
type PhysicalOptimizeTracer struct {
PhysicalPlanCostDetails map[string]*PhysicalPlanCostDetail `json:"costs"`
Candidates map[int]*CandidatePlanTrace `json:"candidates"`
// final indicates the final physical plan trace
Final []*PlanTrace `json:"final"`
}
// AppendCandidate appends physical CandidatePlanTrace in tracer.
// If the candidate already exists, the previous candidate would be covered depends on whether it has mapping logical plan
func (tracer *PhysicalOptimizeTracer) AppendCandidate(c *CandidatePlanTrace) {
old, exists := tracer.Candidates[c.ID]
if exists && len(old.MappingLogicalPlan) > 0 && len(c.MappingLogicalPlan) < 1 {
return
}
tracer.Candidates[c.ID] = c
}
// RecordFinalPlanTrace records final physical plan trace
func (tracer *PhysicalOptimizeTracer) RecordFinalPlanTrace(root *PlanTrace) {
tracer.Final = toFlattenPlanTrace(root)
tracer.buildCandidatesInfo()
}
// CandidatePlanTrace indicates info for candidate
type CandidatePlanTrace struct {
*PlanTrace
MappingLogicalPlan string `json:"mapping"`
}
// buildCandidatesInfo builds candidates info
func (tracer *PhysicalOptimizeTracer) buildCandidatesInfo() {
if tracer == nil || len(tracer.Candidates) < 1 {
return
}
fID := make(map[int]struct{}, len(tracer.Final))
for _, plan := range tracer.Final {
fID[plan.ID] = struct{}{}
}
for _, candidate := range tracer.Candidates {
if _, ok := fID[candidate.ID]; ok {
candidate.Selected = true
}
}
}
// CodecPlanName returns tp_id of plan.
func CodecPlanName(tp string, id int) string {
return fmt.Sprintf("%v_%v", tp, id)
}
// OptimizeTracer indicates tracer for optimizer
type OptimizeTracer struct {
// Logical indicates logical plan
Logical *LogicalOptimizeTracer `json:"logical"`
// Physical indicates physical plan
Physical *PhysicalOptimizeTracer `json:"physical"`
// FinalPlan indicates the plan after post optimize
FinalPlan []*PlanTrace `json:"final"`
// IsFastPlan indicates whether the plan is generated by fast plan
IsFastPlan bool `json:"isFastPlan"`
}
// SetFastPlan sets fast plan
func (tracer *OptimizeTracer) SetFastPlan(final *PlanTrace) {
tracer.FinalPlan = toFlattenPlanTrace(final)
tracer.IsFastPlan = true
}
// RecordFinalPlan records plan after post optimize
func (tracer *OptimizeTracer) RecordFinalPlan(final *PlanTrace) {
tracer.FinalPlan = toFlattenPlanTrace(final)
}
// PhysicalPlanCostDetail indicates cost detail
type PhysicalPlanCostDetail struct {
Params map[string]any `json:"params"`
TP string `json:"type"`
Desc string `json:"desc"`
ID int `json:"id"`
Cost float64 `json:"cost"`
}
// PhysicalPlanCostParam indicates cost params
type PhysicalPlanCostParam struct {
Params map[string]any `json:"params"`
Name string `json:"name"`
Desc string `json:"desc"`
ID int `json:"id"`
Cost float64 `json:"cost"`
}
// NewPhysicalPlanCostDetail creates a cost detail
func NewPhysicalPlanCostDetail(id int, tp string) *PhysicalPlanCostDetail {
return &PhysicalPlanCostDetail{
ID: id,
TP: tp,
Params: make(map[string]any),
}
}
// AddParam adds param
func (d *PhysicalPlanCostDetail) AddParam(k string, v any) *PhysicalPlanCostDetail {
// discard empty param value
if s, ok := v.(string); ok && len(s) < 1 {
return d
}
d.Params[k] = v
return d
}
// SetDesc sets desc
func (d *PhysicalPlanCostDetail) SetDesc(desc string) {
d.Desc = desc
}
// GetPlanID gets plan id
func (d *PhysicalPlanCostDetail) GetPlanID() int {
return d.ID
}
// GetPlanType gets plan type
func (d *PhysicalPlanCostDetail) GetPlanType() string {
return d.TP
}
// Exists checks whether key exists in params
func (d *PhysicalPlanCostDetail) Exists(k string) bool {
_, ok := d.Params[k]
return ok
}
// Copyright 2018 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package tracing
import (
"context"
"runtime/trace"
"github.com/opentracing/basictracer-go"
"github.com/opentracing/opentracing-go"
)
// TiDBTrace is set as Baggage on traces which are used for tidb tracing.
const TiDBTrace = "tr"
type sqlTracingCtxKeyType struct{}
var sqlTracingCtxKey = sqlTracingCtxKeyType{}
// A CallbackRecorder immediately invokes itself on received trace spans.
type CallbackRecorder func(sp basictracer.RawSpan)
// RecordSpan implements basictracer.SpanRecorder.
func (cr CallbackRecorder) RecordSpan(sp basictracer.RawSpan) {
cr(sp)
}
// TraceInfo is the information for trace.
type TraceInfo struct {
// SessionAlias is the alias of session
SessionAlias string `json:"session_alias"`
// ConnectionID is the id of the connection
ConnectionID uint64 `json:"connection_id"`
}
// NewRecordedTrace returns a Span which records directly via the specified
// callback.
func NewRecordedTrace(opName string, callback func(sp basictracer.RawSpan)) opentracing.Span {
tr := basictracer.New(CallbackRecorder(callback))
opentracing.SetGlobalTracer(tr)
sp := tr.StartSpan(opName)
sp.SetBaggageItem(TiDBTrace, "1")
return sp
}
// noopSpan returns a Span which discards all operations.
func noopSpan() opentracing.Span {
return (opentracing.NoopTracer{}).StartSpan("DefaultSpan")
}
// SpanFromContext returns the span obtained from the context or, if none is found, a new one started through tracer.
func SpanFromContext(ctx context.Context) (sp opentracing.Span) {
if sp = opentracing.SpanFromContext(ctx); sp == nil {
return noopSpan()
}
return sp
}
// ChildSpanFromContxt return a non-nil span. If span can be got from ctx, then returned span is
// a child of such span. Otherwise, returned span is a noop span.
func ChildSpanFromContxt(ctx context.Context, opName string) (opentracing.Span, context.Context) {
if sp := opentracing.SpanFromContext(ctx); sp != nil {
if _, ok := sp.Tracer().(opentracing.NoopTracer); !ok {
child := opentracing.StartSpan(opName, opentracing.ChildOf(sp.Context()))
return child, opentracing.ContextWithSpan(ctx, child)
}
}
return noopSpan(), ctx
}
// StartRegionWithNewRootSpan return Region together with the context.
// It create and start a new span by globalTracer and store it into `ctx`.
func StartRegionWithNewRootSpan(ctx context.Context, regionType string) (Region, context.Context) {
span := opentracing.GlobalTracer().StartSpan(regionType)
r := Region{
Region: trace.StartRegion(ctx, regionType),
Span: span,
}
ctx = opentracing.ContextWithSpan(ctx, span)
return r, ctx
}
// StartRegion provides better API, integrating both opentracing and runtime.trace facilities into one.
// Recommended usage is
//
// defer tracing.StartRegion(ctx, "myTracedRegion").End()
func StartRegion(ctx context.Context, regionType string) Region {
r := trace.StartRegion(ctx, regionType)
var span1 opentracing.Span
if span := opentracing.SpanFromContext(ctx); span != nil && span.Tracer() != nil {
span1 = span.Tracer().StartSpan(regionType, opentracing.ChildOf(span.Context()))
}
return Region{
Region: r,
Span: span1,
}
}
// StartRegionEx returns Region together with the context.
// Recommended usage is
//
// r, ctx := tracing.StartRegionEx(ctx, "myTracedRegion")
// defer r.End()
func StartRegionEx(ctx context.Context, regionType string) (Region, context.Context) {
r := StartRegion(ctx, regionType)
if r.Span != nil {
ctx = opentracing.ContextWithSpan(ctx, r.Span)
}
return r, ctx
}
// Region is a region of code whose execution time interval is traced.
type Region struct {
*trace.Region
opentracing.Span
}
// End marks the end of the traced code region.
func (r Region) End() {
if r.Span != nil {
r.Span.Finish()
}
r.Region.End()
}
// TraceInfoFromContext returns the `model.TraceInfo` in context
func TraceInfoFromContext(ctx context.Context) *TraceInfo {
val := ctx.Value(sqlTracingCtxKey)
if info, ok := val.(*TraceInfo); ok {
return info
}
return nil
}
// ContextWithTraceInfo creates a new `model.TraceInfo` for context
func ContextWithTraceInfo(ctx context.Context, info *TraceInfo) context.Context {
if info == nil {
return ctx
}
return context.WithValue(ctx, sqlTracingCtxKey, info)
}